本文へスキップ
BecomeCoder

AWSコース · 第3章 コンピューティング · レッスン16

コンテナとその他のコンピュート

導入

EC2ほど自由度は要らないが、Lambdaほど処理時間や実行内容に制約もかけたくない——そんな中間の選択肢として、AWSにはコンテナ関連のサービスや、その他の便利なコンピューティングサービスが揃っています。

説明

コンテナは、アプリと実行に必要なライブラリ・設定をひとまとめにして、どの環境でも同じように動かせるようにした技術です(代表的な実装がDocker)。1台のサーバー(OS)の上に、複数の独立したコンテナを軽量に並べて動かせるのが特徴です。

AWSには、コンテナを扱うためのサービスが複数あります。

サービス役割
ECS(Elastic Container Service)AWS独自のコンテナオーケストレーション(複数コンテナの配置・管理を自動化)
EKS(Elastic Kubernetes Service)マネージドなKubernetes(業界標準のコンテナオーケストレーションツール)
FargateECS/EKSの実行基盤。サーバー(EC2)を意識せずにコンテナを動かせる
Elastic Beanstalkコードをアップロードするだけで、EC2・ELB・Auto Scalingなどの環境を自動構築してくれるPaaS的サービス
Lightsail定額・シンプルなVPS(仮想サーバー)。小規模なWebサイトや個人開発向け
AWS Batch大量のバッチ処理ジョブを、必要な計算資源を自動確保しながら実行する
graph TD
  ec2["EC2\n(自分でOSごと管理)"] --> ecs["ECS on EC2\n(コンテナ管理をAWSが支援)"]
  ecs --> fargate["Fargate\n(サーバーの存在を意識しない)"]
  fargate --> lambda["Lambda\n(関数単位でさらに手軽に)"]

管理の手間という軸で見ると、EC2(フル管理)→ ECS/EKS on EC2 → Fargate(サーバーレスなコンテナ実行)→ Lambda(関数単位)の順に、利用者が意識する範囲が小さくなっていきます。Elastic Beanstalkは、この管理の手間を意識せず「とにかく早くアプリを公開したい」場合に向いており、Lightsailは個人ブログや検証用サイトのように、構成が単純でコストを予測しやすくしたい場合に向いています。

読んでみよう

「ECS/EKS=コンテナの置き場所を管理する仕組み」「Fargate=そのサーバー管理をなくすオプション」という関係を押さえましょう。Beanstalk・Lightsail・Batchは、それぞれ「手軽なPaaS」「簡易VPS」「バッチ専用」という個性で区別すると覚えやすくなります。