お問い合わせ

アプリはどこで動いてる?-ECSによるコンテナ運用-【Luxucomを支える技術 #10】

こんにちは、かびらです。

本日はECSについて解説します。

ECSとは?

ECSとは、AWSが提供しているコンテナオーケストレーションサービスです。

コンテナをまとめて配置し、管理や運用を自動で行える仕組みになっています。

コンテナオーケストレーションとは?

ここで、コンテナオーケストレーションについて、簡単に解説します。

コンテナオーケストレーションとは、複数のコンテナをまとめて管理する仕組みのことです。

ECSがコンテナを自動で配置し、必要に応じてスケーリングを行い、ヘルスチェックや復旧も担ってくれます。

タスクとサービスとは?

ここで、ECSを扱うに当たって、理解が必要な「タスク」と「サービス」について解説します。

ECSでは、コンテナを動かす最小単位をタスクと呼びます。

そして、そのタスクを必要な数だけ動かし続ける仕組みをサービスと呼びます。

これによってアプリを安定して運用できるようになります。

FargateとEC2の違い

ECSのコンテナは、FargateかEC2のどちらかで実行されます。

ここでは、FargeteとEC2の違いについて見ていきましょう。

Fargateは、サーバーレスの実行環境で、インフラ管理が不要です。

コンテナ数やリソースを指定するだけで動かせます。

一方EC2は、自分でサーバーを管理する方式で、柔軟性はありますが管理コストが高くなります。

なお、Luxucomでは、インフラ管理の工数を下げるために、ECSの実行環境としてFargateを採用しています。

ECSを採用した理由

次にLuxucomで、ECSを採用した理由についてです。

ECSを採用した理由は大きく2つです。

まず1つ目は、リリース作業を簡略化したかったこと。

そのためにCICDを実現しました。

CICDについては次回、詳しく解説します。

そして2つ目は、インフラ管理の工数を下げて、サーバー運用を最小限にできるようにしたことです。

ECSと関連するアーキテクチャ

次に、Luxucomで、ECSと関連するアーキテクチャを見ていきます。

Luxucomでは、ALBからのリクエストをECSクラスターに振り分けています。

ECSの中では、WebコンテナとWebSocketコンテナをFargate上で動かしていて、それぞれがDjangoアプリを実行しています。

ECSを使って良かった点

次に、Luxucomで、ECSを使って良かった点です。

まず、CICDを実現できたことで、リリース作業が格段に速くなりました。

また、サービスを止めずに新しいプログラムを適用できるようになりました。

これは、ECSが新しいタスクを立ち上げつつ古いタスクを順番に置き換える仕組みを持っているからです。

さらに、Fargateを利用することで、インフラやリソース管理の手間を大幅に減らすことができました。

ECSを使って難しかった点

ECSを使って難しかった点もあります。

特に、ALBからECSのコンテナにつなぐ部分は設定が複雑でした。

セキュリティグループやVPCの設定に悩まされ、思った以上に時間が掛かりました。

さいごに

今回は、LuxucomにおけるECSの仕組みを紹介しました。

コンテナを活用して、アプリを効率的に運用できることが伝わったと思います。

次回は、リリース作業を自動化する仕組み「CICD」を解説します。