🍯【はちみつと学ぶIT #15】Amazon ECSとは?コンテナを管理するサービスをやさしく解説
はじめに
前回は、必要なときだけプログラムを実行するAWS Lambdaについて学びました。
今回は、コンテナ化したアプリケーションをAWS上で動かすためのサービスである、Amazon ECSについて解説します。
ECSを一言で表すと、
複数のコンテナをまとめて管理するサービス
です。
Amazon ECSとは?
Amazon ECSは、正式には
Amazon Elastic Container Service
と呼ばれます。
コンテナ化したアプリケーションをAWS上に配置し、次のような操作を行うためのサービスです。
- コンテナを起動する
- コンテナを停止する
- 必要な数のコンテナを維持する
- アクセスに応じて数を増減する
- コンテナの状態を監視する
ECSを利用することで、複数のコンテナを一つずつ手作業で管理する必要がなくなります。
そもそもコンテナとは?
コンテナとは、
アプリケーションと、その実行に必要なものを一つにまとめた箱
のようなものです。
例えば、コンテナの中には次のようなものを入れられます。
- アプリケーション
- ライブラリ
- 実行環境
- 必要な設定
同じコンテナイメージを使えば、開発環境や本番環境でも、同じようにアプリケーションを動かしやすくなります。
ただし、コンテナが増えてくると、
- どのコンテナを動かすのか
- 何個動かすのか
- 停止したコンテナをどう復旧するのか
といった管理が必要になります。
その管理を担当するのがAmazon ECSです。
はちみつ屋さんで例えると
はちみつ屋さんが、商品を配送するとします。
はちみつだけをそのまま運ぶのではなく、
- はちみつ
- 容器
- ラベル
- 説明書
を一つの配送箱にまとめます。
この配送箱がコンテナです。
商品を入れる箱が数個であれば、クマさん一人でも管理できます。
しかし、注文が増えて配送箱が100個、1,000個になると、
- 箱を何個用意するか
- どの車に積むか
- 壊れた箱を交換するか
- 注文が増えたら箱を追加するか
を管理する仕組みが必要です。
この配送全体を管理する係が、Amazon ECSです。
ECSを理解するための基本用語
コンテナイメージ
アプリケーションを動かすための中身をまとめた、コンテナのひな型です。
はちみつ屋さんでいえば、配送箱に何を入れるかを決めたセットにあたります。
タスク定義
コンテナの動かし方を記載した設計書です。
例えば、次のような内容を設定します。
- 使用するコンテナイメージ
- 必要なCPU
- 必要なメモリ
- 使用するポート
- 環境変数
タスク
タスク定義をもとに、実際に起動されたコンテナです。
タスク定義:設計書
タスク:設計書から実際に作られたもの
という関係です。
サービス
指定した数のタスクを継続的に動かすための仕組みです。
例えば、タスクを3個動かす設定にしておくと、1個停止しても、新しいタスクを起動して3個の状態に戻します。
クラスター
ECSで動かすタスクやサービスを、まとめて管理するためのグループです。
コンテナをどこで動かすの?
ECSでは、コンテナを実際に動かす環境を選択できます。
AWS Fargate
サーバーの準備や管理をAWSに任せる方法です。
利用者は、コンテナに必要なCPUやメモリを指定して実行します。
サーバー管理の負担を減らしたい場合に向いています。
Amazon EC2
自分で用意したEC2インスタンス上でコンテナを動かす方法です。
EC2の種類や設定を細かく管理できますが、サーバーの運用も利用者が担当します。
| 実行環境 | サーバー管理 | 特徴 |
|---|---|---|
| Fargate | AWSに任せる | 手軽に始めやすい |
| EC2 | 利用者が行う | 構成を細かく調整できる |
ECSを利用するメリット
- 複数のコンテナをまとめて管理できる
- 必要な数のコンテナを維持できる
- アクセスに合わせて拡張・縮小できる
- Fargateを使えばサーバー管理を減らせる
- AWSの各種サービスと組み合わせられる
🍯 はちみつメモ
Amazon ECS = 複数のコンテナをまとめて管理するサービス
コンテナが「商品を入れた配送箱」なら、ECSは「配送箱の数や状態を管理する係」です。
まとめ
- コンテナは、アプリと実行環境をまとめた箱
- ECSはコンテナの起動・停止・管理を行う
- タスク定義はコンテナを動かすための設計書
- ECSではFargateまたはEC2などを使ってコンテナを実行できる
- Fargateならサーバー管理をAWSに任せられる
次回
🍯【はちみつと学ぶIT #16】AWS Fargateとは?サーバー管理不要でコンテナを実行できるサービスをやさしく解説


