導入
EC2ほど自由度は要らないが、Lambdaほど処理時間や実行内容に制約もかけたくない——そんな中間の選択肢として、AWSにはコンテナ関連のサービスや、その他の便利なコンピューティングサービスが揃っています。
説明
コンテナは、アプリと実行に必要なライブラリ・設定をひとまとめにして、どの環境でも同じように動かせるようにした技術です(代表的な実装がDocker)。1台のサーバー(OS)の上に、複数の独立したコンテナを軽量に並べて動かせるのが特徴です。
AWSには、コンテナを扱うためのサービスが複数あります。
| サービス | 役割 |
|---|---|
| ECS(Elastic Container Service) | AWS独自のコンテナオーケストレーション(複数コンテナの配置・管理を自動化) |
| EKS(Elastic Kubernetes Service) | マネージドなKubernetes(業界標準のコンテナオーケストレーションツール) |
| Fargate | ECS/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」「バッチ専用」という個性で区別すると覚えやすくなります。