こんにちは、インフラエンジニアのOです。
N2i は「バトンタッチ」という Webサービスを提供していますが、その構成について書いてみようと思います。
ざっくり表したのが下の図です。
図の通り、すべてのコンポーネントがAWSの上にあります。
よくあるWebサービスと同じ構成ですが、Webサーバとアプリケーションサーバで AWS Fargate を使っているのが少しだけ特徴的かもしれません。
Fargate は、Docker などで使われる「コンテナ」を、EC2 のような仮想マシンを意識することなく動作させるサービスです。
Fargate では負荷に応じて自動的にコンテナの増減が行われるので、負荷が高まったときでも運用者が作業する必要はなく、サービス提供を続けることができます。それだけなら仮想マシンの EC2 でも可能ですが、仮想マシンと比べて EC2 自体の管理が不要になるのが特徴です。
EC2 では、仮想マシンとその上で動く OS を自分たちで管理しなけれならないので、これらに問題が起こったときの対処は自分たちで考える必要があります。Fargate では仮想マシンを考えなくていいので、少しだけ心配事を減らすことができます。
すべてのデータを格納するデータベースの Amazon RDS や、コンテナ間のデータのやりとりに使うインメモリキャッシュの Amazon ElastiCache も同じで、運用を任せられるものはすべて AWS に任せてしまおう、というポリシーのもと使っています。
AWS に限りませんが、クラウドサービスを使えば物理的なハードウェアのことを考えずに済み、運用の手間を大きく減らすことができます。N2i ではすべてのサービスのインフラを私がひとりで運用していますが、運用にかける時間は少なく、よりよいインフラの設計に目を向けることができています。
サービスの提供を続けられることと、品質が落ちないこと、この2つがインフラ設計では大切なポイントですが、加えて「どれだけ日々の運用を楽にできるか」を考えるのが近年のトレンドのように思います。
クラウドサービスは、いつでも何もかも叶えてくれるような魔法ではありませんが、これらのポイントを満たしてくれることは少なくないと思っています。