ECS on EC2
最も歴史が長いアーキテクチャパターン
EC2上にECSのタスクを起動してタスク上でコンテナを稼働させる。
イメージ図
コスト
サービスコスト
EC2インスタンス(稼働時間)やEBSボリュームに対して発生する。
運用コスト
EC2のメンテナンス(OSアップデート、セキュリティパッチ適用)をする必要があるので高い。なお、EC2のインスタンスサイズが小さすぎるとECSから配置されるタスクがスケールできなくなる。
学習コスト
ECS、EC2は古くからあるサービスであり学習コストは低いですし、オンプレ時代の知識を活かせます。良い意味で枯れた技術なので、エンジニア数も確保しやすい。
拡張性
デプロイをする際に利用するイメージのキャッシュをEC2のホスト上に保持できるのでデプロイは早い。(コンテナイメージを保持するので、コンテナレジストリからコンテナを取得する時間も省けます。)
水平スケーリングは確保したキャパシティ分までしかできないので弱い。スケールアップはEC2の設定値をいじれば良いだけなので簡単。
信頼性
比較的障害調査などはやりやすい。
ECS
マネージドサービスなのでAWSに依存する。
EC2
障害が発生した場合は、まずはSSHで接続する。(最近は「System Manager」を用いることによってSSHを使わずにログイン可能)、ログイン後は普通のサーバーと同じように障害調査は可能なので比較的やりやすい。
ECS on Fargate
Fargate上にECSのタスクを起動してタスク上でコンテナを起動させる。
イメージ図
コスト
サービスコスト
ECS on EC2に比べたら料金は割高。主なコストはFargateのコスト。コンテナ化されたアプリケーションに必要なvCPUとメモリリソースに対する料金が発生する。
vCPUとメモリリソース
コンテナイメージを取得した時点からECSタスクが終了するまでを対象として計算され、秒単位の課金となる。最低料金は1分からの料金になる。
運用コスト
かなり低い。インフラ管理から解放される。クレジット業界のセキュリティ基準であるPCIDSSの観点からもOKになる。なので、クレジット業界を対象とする場合はほぼ必須となると言っても過言じゃない。
拡張性
デプロイは遅い。
デプロイが遅い理由
Fargate上で稼働するコンテナは、コンテナごとにENI(Elastic Network Interface)がアタッチされるため。(ENIの作成は時間がかかる。)
イメージがキャッシュできないため。EC2と違ってイメージをキャッシュできないのでコンテナイメージの取得に時間がかかる。
水平スケーリングは容易ですが、容量の制限があります。(200GB)
信頼性
EC2に比べたら障害調査はしづらい。マネージドサービスなのでSSHによるログインはできない。(やる方法はあるが面倒)
ただ、2021年3月に「Amazon ECS Exec」が登場してコンテナに対して対話型シェルを実行できるようになったので障害調査はしやすくなった。
EKS on EC2
イメージ図
コスト
サービスコスト
EC2だけでなく、EKSにもコストがかかる。2021年9月時点ではEKSクラスターについて東京リージョンでは1時間あたり0,1米ドルがかかる。月4000円程度なので、EC2に比べたら微々たる額ですが。
運用コスト
EC2の運用コストに加えて、Kubenetesは3ヶ月に1度マイナーアップデートが行われているので定期的なバージョンアップが必要になる。定期的なKubenetesのバージョンアップ時はKubenetes上で稼働する多数のOSSやアプリケーションへの影響があることも考慮しなければならない。
拡張性
ECS on EC2と同じ
信頼性
結論から言えばECSの方が障害対応は楽です。
EKSはマネージドサービスなのでAWSの責務になります。ただ、Kubenetes自体に問題があった場合はAWSだけに閉じない問題になってしまいます。EC2の障害調査は普通にSSHログインすれば良いだけなので楽です。
EKS on Fargate
2019年に登場してまだまだ歴史は浅い。
特徴
データプレーンを全てFargateにしない構成が取れる。常駐起動が必要なものはEC2にして、スポット処理が必要なものはFargateを適用するなど。
イメージ図
Fargateを適用するPodはFargateプロファイルによって決定する。
Podとノードの関係
EC2上にはPodは複数配置できるが、Fargate上には一つしか作成できない。(なので、KubenetesのコンポーネントであるDemonsetが利用できない。)
コスト
EC2だけの構成よりは割安になる場合がある。
EKSの利用コストと、Fargateの利用コストになる。Fargateは利用した分だけのコストになるので、スポット利用した場合は割安になる場合もある。
運用コスト
EC2だけの構成に比べたら低い。(Fargateの方はKubenetesのバージョンアップ対応も不要になる。)
学習コスト
EKSだけでなく、Fargateの学習コストもかかる。
拡張性
ECS on Fargateと同じくらい。
信頼性
ECS on Fargateと同じくらい。
この記事へのコメントはありません。