ご挨拶
どうも。朝とってもはやく起きてしまう、umentuです。早起きは10万の得 じゃないですけど、朝活動するといいこともあるものですね。昨日さっぱり解決できなかった件が、あっさりと解決できました。そしてもう一度寝る前に、ちょっと文章を書いてみようと思ったわけです。ちょっとだけ、技術的なお話です。
楽しい案件
現在、クラウドソーシングで頂いた案件で、Mastodonを構築しています。Mastodon自体はVPSや自宅サーバに何度も立てたことがありました。ですが、今回はちょっと、というか大幅に違っていて、かなり大規模になる可能性のあるMastodonを構築するに至ったわけです。そのため、いろいろと課題が発生しました。それを少しだけ、お話したいと思います。ばれない範囲で。
サーバーの選定
そもそもクライアント様は、あるクラウドサービスを利用する前提で動いておりました。ですがうまくいかずに、とあるクラウドソーシングで案件を出されている状況でした。Mastodonの構築、いろいろと厄介なんですよね。
で、案件を読むととても興味深く、すぐに応募させていただきました。そこで事情を伺ったところ、そもそも構築自体でつまづいている状況だったため、そのMastodonの利用者が大きくなるといった前提があまり加味されていませんでした(とても普通のことです)。そのため、サーバの選定から提案させていただいたところ、提案を受け入れてくださいました。誠に感謝です。
そこで、様々なことを調べていった結果、今回はAWSを使って構築するに至りました(まぁ、ありきたりな選択ではありますよね。)。AWSを使った理由としては、
☆ Pawoo様がAWSを選定していた(https://logmi.jp/200000)
☆ Mastodonで必須なRedisなどを独立したインスタンスで構築したかった
☆ なんだかんだで使い慣れている
といったところが理由でした。小規模であれば、通信量も定額なVPSサービスがいいんですけどね。
構築に至るまで
AWSに決めて、さて構築しようとしたわけですが、調べてみると皆さん様々な方法でAWSに構築されているわけです。いろいろ調べた結果、「Dockerを使わずに構築する」方向でいくことにしました。Dockerを使ったほうが構築自体は簡単なのですが、Redis等をAWSのそれぞれのサービスのインスタンスで構築したかったため、そうなるとDockerでの構築の恩恵があまり受けられなくなるからです。
方向が決まれば構築なんてさくっと……と思ったら。。。
意外と苦悩の連続
AWSのやつぁ、本当にサービスの拡充が早いですね。ある程度は頭に描いていたサービスを利用して構築しようとしていたのですが、いくつか「あれ、こっち使ったほうが楽なんじゃないか?」「これって……何?使えそうだけどどうやるんだ?」みたいなサービスがあるわけです。しかしそこはとりあえず、スタンダードに構築を進めていきました。
構築を進めるにあたり、
「あれ、ELBのSSL証明書を発行する必要があるな」
「あれ、そうなるとCertificate Managerを使う必要があるな」
「あれ、そうなるとRoute53を……」
「あれ、そうなるとメールの送受信にSESを……」
とか、自分としては想定外のさ紆余曲折はありましたが、構成はざっくり次のような感じです。
EC2: Mastodon本体
ELB: ロードバランサー
S3+CloudFront: 画像ファイル等の設置場所
RDS: PostgreSQLの利用
ElastiCache: Redisの利用
Certificate Manager: SSL証明書の発行
SES: 招待メール等の送信サーバー
Route53: DNSサーバー
とまぁ、結果的にはスタンダードな構成なんだとは思うのですが、これらの構成で構築することができました。
技術はおいかけ続ける必要がある
エンジニアとしてはアタリマエなのですが、技術って本当に追いかけ続ける必要がありますね。AWSのサービスの大半ももはや理解していないものが多いですし。おそらく、今回の構成よりもよいものが構築できるのだと思います。例えば、Certificate Managerの存在は知っていたものの、今回使ってみてここまで便利なものだとは認識していませんでした。Certificate ManagerでSSL証明書を発行しておくだけで、ELBを構築するときに単に発行した証明書がプルダウンで選択するだけで利用することができたのです。(おそらく、エンジニアとしてはかなり時代遅れなことを言っているのだと思います。。。)
今回のところは、これが私の限界でした。拡張には配慮しているつもりですが、もしかしたら今の構成だと問題が発生することもありえるかと思います。またもう一歩、勉強しておいて問題が発生したら構成を見直せるようにしておく必要があるなぁと。
もっといろいろ勉強する必要があるなぁ。