
ECSの構成要素が全然理解できない…

そのお悩みを解決します!
AWSを学び始めた皆さん
学習は順調に進んでいますか?
AWSでコンテナの管理を行うツールとしてお馴染みの「Amazon Elastic Container Service」通称「ECS」
ECSの主要な構成要素を自分の言葉で説明することはできますか?
……。
………………。
説明できましたでしょうか?
本記事では「ECS」の構成要素について、初心者にわかりやすいよう図解付きで解説していきます。
結論、こちらがECSの構成要素です!

- タスク定義:タスクを作成するテンプレート定義
- タスク:タスク定義に基づいて起動するコンテナの集まり
- サービス:実行中のタスクを管理する
- クラスター:サービスとタスクを実行する基盤
「は?なんで遊園地?」と思った方。今は理解できなくて正常です!
本記事を読んだ後に「ECSの構成要素をこういう風に捉えると覚えやすいなぁ」って共感して頂けると嬉しいです。
それではどうぞ!!
- コンテナオーケストレーターについて
- ECSの構成要素
- コンテナが稼働する環境(データプレーン)について
- ハンズオン方法
そもそもコンテナって何?
ECSはDockerコンテナの管理を行うツールのことですが、そもそもコンテナとは何でしょう?
コンテナとはアプリケーションとその実行環境を1つにまとめあげて動作させる技術のことです。
簡単にいうと、アプリケーションに必要な物をまとめた箱です。


もうちょっとわかりすく教えてほしいな〜
こちらの記事で詳しく解説しているので、良ければ参考にしてみて下さい。
ECSとは:コンテナを管理するためのフルマネージドなAWSサービス
ECSはコンテナを管理するためのフルマネージドなAWSサービスです。
このコンテナを管理するサービスのことを、オーケストレーターといいます。
ちなみにオーケストレーターでコンテナ管理すること、そのものはオーケストレーションといいます。
注意点としては、ECSはコンテナを動かす実行環境ではないという点です。
あくまでもコンテナの管理に使用し、実際にコンテナを実行する環境には、Amazon EC2やFargateといった別のサービスを使用します。

なんで管理するサービスが必要なの?
まずはECSの構成要素を確認する前に、オーケストレーターを使う目的を理解しましょう!
コンテナオーケストレーターの目的
コンテナオーケストレーターを使う目的は、複数ホストで起動するコンテナを一元管理するためです。
まずはコンテナオーケストレーターがない場合を考えてみましょう。

このように各Dockerホスト毎にコンテナが複数起動しているとします。
この場合、管理者は各Dockerホスト毎にログインし、コンテナを運用・管理するといった手間が発生します。つまり管理者の操作が非効率になってしまいます。
更に不具合によりコンテナがいつの間にか停止し、提供しているサービスも停止しているなんてこともあります。

えええ!それは大変だなぁ?ずっと運用者が確認していないといけないの?
そんなことやってられませんよね。
では、コンテナオーケストレーターを導入してみましょう!

コンテナオーケストレーターであるECSの導入により、ECSが複数のDockerホストそしてコンテナを管理してくれます。よって、管理者はECSだけを確認すればよくなります。
また万一、コンテナが停止した場合もあらかじめ定義した設定に従ってコンテナを再起動し、サービス提供可能な状態にしてくれます!
他にもコンテナオーケストレーターには、このような役割があります。
- コンテナのスケジューリング
コンテナ配置時に、サーバーの負荷状況から配置に適したサーバーを自動的に判断する。 - コンテナのオートスケーリング
起動中のコンテナの負荷状況により、自動的にコンテナのスケールイン・スケールアウトを行う。 - コンテナの死活監視
コンテナが停止していないかを監視する。障害によりコンテナが停止していた場合、そのコンテナを削除し、新しいコンテナを起動する。 - ロードバランシング
適切なコンテナに通信を振り分ける。
コンテナオーケストレーターの概要や役割は理解できましたか?
それでは早速、コンテナオーケストレーターであるECSの構成要素をみてみましょう!
ECSの構成要素

ECSは大まかにこのような要素があります。
- タスク定義:タスクを作成するテンプレート定義
- タスク:タスク定義に基づいて起動するコンテナの集まり
- サービス:実行中のタスクを管理する
- クラスター:サービスとタスクを実行する基盤
ECSはコンテナを管理するサービスということで、今回は遊園地の運営会社に例えて各要素を解説していきます!(某ネズミの国を運営している〇〇ランドさんとイメージしてもらえると理解しやすいと思います笑)
1つ1つ解説していきますね!
①タスク定義:タスクを作成するテンプレート定義

タスク定義はタスクを作成するテンプレート定義です。
後ほど解説するタスクをどう実行するのかをここでは定義しています。
具体的にはこのような設定を定義します。
- 起動タイプ(EC2・Fargate・外部)
- コンテナ定義(デプロイするコンテナイメージ等)
- タスクサイズ(要求CPUやメモリ)
- タスクに割り当てるIAMロール
などなど
ここではタスク定義を遊園地内の各アトラクション、飲食店を運営するためのガイドラインと例えておきましょう。
運営するためには、きっとこのようなガイドラインが必要ですよね。
- どのエリアで運営する?
- どんなイメージのアトラクション、飲食店にする?
- どのくらいの人員、広さにする
- 運営許可のレベル(天気・混雑具合)
などなど
しかし、タスク定義は実際のコンテナ実行環境ではありません。
次に説明するタスクが実際のコンテナ実行環境となります。
②タスク:タスク定義に基づいて起動するコンテナの集まり

タスクはタスク定義に基づいて起動するコンテナの集まりです。
タスク=コンテナと理解してもらえればオッケーです!
1つのタスクには1つ以上のコンテナから構成されていることが、ポイントです。
タスクは実際のコンテナ実行環境となります。
そのため、ここでは遊園地内の各アトラクション、飲食店そのものと例えておきましょう。

コーヒーカップというタスクの場合、実際に動くカップをコンテナと理解すると、タスクに複数のコンテナが起動していることが想像しやすいよ!
ただ、カップに不具合が発生してアトラションが停止してしまうことがありますよね。。
同じようにコンテナも停止してしまうことがあります。
そのため、停止時にコンテナを入れ替える機能となるサービスが必要となります。
③サービス:実行中のタスクを管理する

サービスは実行中のタスク数を管理する機能を持っています。
他にもこのような機能があり、タスク全体の管理を行っています。
- 指定した数のタスクを維持
- 関連づけるロードバランサーを指定
- タスクを実行するネットワークを指定
などなど
サービスは名前の通り、タスクを使いやすくする機能です。
そのため、ここでは各アトラクションや飲食店の監督と例えておきましょう。
きっと某ネズミの国にもアトラクション全体を管理する総監督みたいな役職の人がいるでしょう。(しらんけど)
監督にもサービスと同じようにこのような役割があると思います。
- アトラクション、飲食店の運営維持(不人気のアトラクションは廃止、新アトラクションの設立)
- お客様誘導までの導線の確保
- 設置するエリアの指定
などなど
そして、これらのサービスやタスク全体をまとめるための基盤が必要となります。
それが次に説明するクラスターになります。
④クラスター:サービスとタスクを実行する基盤

クラスターはサービスとタスクを実行する基盤です。
クラスターはタスクの実行環境やIAM権限の境界を設定することができます。つまり、クラスターを別に作成することでコンテナ同士を干渉することなく実行できます。
クラスターは遊園地そのものにたとえることができます。
某ネズミの国で2つのパークに分かれているように、クラスターもわけることができるってわけです。
さて、構成要素について、なんとなく理解できましたでしょうか??
最後にECSのコンテナ起動方法について確認してみましょう!
ECSのコンテナ起動方法

このような流れでコンテナを起動します。
- タスク定義を登録
- クラスターを作成
- サービスを作成
- サービスを表示(タスクの起動確認)
先ほど説明した要素毎に登録や作成を行っていき、コンテナを起動するって覚えてもらえればOKです。
公式ドキュメントにハンズオン例が載っているので、時間がある方は実践してみましょう!
Amazon EC2 を使用してクラシックコンソールで開始する – Amazon Elastic Container Service
まとめ
今回はAWSサービスの中からECSについてご紹介しました。

はじめに見た時よりも何となく理解できましたでしょうか?
ECSはとても奥が深く、実際に触ってみることで更に理解を深めることができます。

もっとECSについて学びたい!
AWS初学者の方は会員制コミュニティ付きの動画で学べるAWS学習オンラインスクールCloudTechがおすすめ!
CloudTechについてはこちらの記事でご紹介しているので、参考にしてみて下さい。

今だけお得に入会できるクーポンコード配布中!
それでは、これからも一緒に学んで、自己価値を高めていきましょう〜!
最後まで、お読み頂きありがとうございました!
参考文献
こちらの記事を作成するにあたり、こちらのブログ記事や本を参考にさせて頂きました!
①AWSコンテナ設計・構築[本格]入門
どれもAWS初学者にとって、とても分かりやすい内容になっていますよ!
よかったら参考にしてみて下さい!
コメント