
【Part3】ぜんぜんわからなかったECSについてまとめてみました (概念と実際の画面で見ていくAWS ECS解説)
こんにちはこぐまです。
前回のAWSのサービス「ECS」の記事の続きです。
今回は「その3」です。「その2」は以下をご参照ください。
今回の記事も、AWSの前提知識を必要とせずに読める・・と思います。
まずは前回のおさらいです。
前回のまとめ
・ECSの専門用語を紹介した。
・「コンテナインスタンス」・・初めからコンテナを載せる準備万端の「EC2インスタンス」のこと。
・「クラスター」・・・1つ以上の「EC2インスタンス」の集まりのこと。クラスターの作成が完了すると、「EC2インスタンス」は「コンテナインスタンス」へと進化する。
・「EC2 Auto Scailing」・・・EC2インスタンスの台数を突然の負荷や障害、予定に応じて自動的に増やしたり減らしたりできる機能のこと。クラスターを作成すると自動で有効になる。
前回の専門用語は、「コンテナを載せる側」(つまりコンテナインスタンス)に関連するものでした。今回は、ECSで使われる「コンテナ側」の専門用語について説明していきたいと思います。
1.タスク
まず最初は、この言葉からです。
「タスク」・・・日常では、「ちょっと今タスクに追われてて・・」「このタスク片づけたらできます」みたいに、なんかちょっと気取って使う印象がありますね(笑)。
タスクは、「やるべきこと」「仕事」「課題」みたいな意味があります。ECSにおける「タスク」とは、上記と同じような意味ももちろん含んでいるのですが、端的に言うと「1つ以上のコンテナの集まり」です。
なんだか「クラスター」と似ていますね。
「クラスター」は「1つ以上のEC2インスタンスの集まり」でした。
「タスク」は「1つ以上のコンテナの集まり」です。コンテナ、コンテナインスタンス、それぞれに「集合」の概念があるんですね。
ちなみに、ECSで1つだけの「コンテナ」を動かすためにも、必ず「タスク」という形にして実行させる必要があります。
ひとりぼっちのコンテナでも必ずチーム名が必要ということです。
この「コンテナ」と「タスク」の違いはECS用語で自分がとても迷った部分です。

2.タスク定義
つぎは「タスク定義」です。
何となく、言葉から想像がつくかもしれません。
「タスク定義」とは、タスクを作るための「説明書」「設計書」です。
タスクとは「一つ以上のコンテナの集まり」であると説明しました。
つまり、このタスク定義(タスクの説明書)には、
・集合させるコンテナの選択
(「どのコンテナ」と「どのコンテナ」を同じ「タスク(チーム)」にするか)
を書きます。なお、タスク内に存在するコンテナが一つだけの場合でも、タスク定義は必要です。
また、それ以外にも、
・各コンテナの大きさ(コンテナサイズ・・つまり、CPUやメモリなど)
・各コンテナの優先順位(コンテナの起動順番)
・各コンテナの中に詰める「モノ」(イメージ)
・各コンテナの中に詰めたものに与える指令(エントリーポイント)
・各コンテナが共有して使える道具箱(共有ストレージ)
またまた難しい言葉が出てきますが、こちらもいつか別記事で改めて記載する予定です。
今はたとえで雰囲気を感じてもらえれば幸いです。
なんかを書くことができます。(これ以外にもタスク定義にはたくさんの説明が書けます)
ECSでコンテナ運用をする場合、まず最初にクラスターを作成するという話を前回しましたが、クラスターを作った次に行うのが、この「タスク定義」の作成です。「タスク定義」の作成が終わると、クラスター上でタスクを実行できます。

3.サービス
3つ目の専門用語は「サービス」です。
サービスというと、「提供」とか「奉仕」みたいな意味合いがあります。料理をおいしくいただくために、笑顔で接客したり、おしぼりやお水の無料提供があったりしますね。また、あるところは、子供用に小さな椅子を用意してくれたり、特別な部屋を用意してくれたり、会計はお席で受けられたり・・など、レストランごとにサービスの形態は異なります。
ECSにおける「サービス」も同じで、「タスク」をより使いやすくするための「提供・奉仕内容」と考えてもらえるといいかもしれません。また、レストランのお客様へのきめ細かい接客が店の評判につながるように、タスクの運用状況を常にモニタリングして状況を管理者に通知することも「サービス」の役割です。
具体的には以下のような設定ができます。
・タスクを動かす「クラスター」を決める。
・タスクの数の初期値を決める
・タスクの数を負荷に応じて増減する。また、負荷の条件を決める(どれくらいの需要がきたら増やす・・など)
・タスク内の各コンテナに処理を分散する(ロードバランシング)
・タスクの運用状況を常に監視(モニタリング)する・
・タスクの調子がおかしいとき、新しいタスクに置き換える。
・「タスク定義」を更新したとき、新しいタスクに置き換える。(デプロイ)
あまり気にせず雰囲気だけで大丈夫です。

ちなみに、「サービス」は、「タスク」をより使いやすくするための「提供・奉仕内容」なので、そもそも上記のような内容が不要のタスクの場合は、「サービス」を作成する必要はありません。
ECSにおいて、「サービス」の作成は必須ではありません。
4.Service Auto Scailing
4つ目はまた長い英語です。
「Service Auto Scailing(さーびすおーとすけーりんぐ)」とは、タスクの数を負荷に応じて増減します。つまり、3で説明した「サービス」でできることうちの1つです。
前回、「EC2 Auto Scailing」という専門用語を説明しました。「EC2 Auto Scailing」の意味は、「EC2インスタンス(コンテナインスタンス)を負荷や予定に応じて自動的に増減させること」でした。
今回の「Service Auto Scailing」は、サービス対象である「タスク」の数を負荷に応じて自動的に増減させることです。
前回の最後に、
コンテナインスタンス側には「EC2 Auto Scailing」があるんだから、コンテナ側にも、コンテナを自動で増やしたり減らしたりする仕組みがあるんじゃないの?
・・とお話ししましたが、その答えが「Service Auto Scailing」です。ただし(くどいようですが)「コンテナ」自体を自動増減するのではなく、「タスク(1つ以上のコンテナをまとめたもの)の数」を自動増減させます。(コンテナが1つのときは同じ意味合いとなるのですが、念のため・・)
「EC2 Auto Scaling」と「Service Auto Scailing」の違いとしてもう1点あげると、増減できる条件です。「EC2 Auto Scailing」は、「何月何日の何時から増やして~」みたいなスケジュール設定ができますが、「Service Auto Scailing」にはその機能はありません。
あくまであらかじめ決めた負荷条件(CPU使用率が〇%以上とか)を超えた場合に増減されます。
・「EC2 Auto Scaling」・・・突然の負荷や予定に応じて自動的に増減できる。
・「Service Auto Scailing」・・・負荷に応じて自動的に増減できる。
いかがだったでしょうか。
ここまでくると、「その1」で挙げたECSに関する以下の専門用語がすべて理解できたことになります。
・クラスター
・サービス
・タスク
・タスク定義
・Service Auto Scailing
・EC2 Auto Scailing
そして、ここまで理解できたうえで、もう一度、その1で掲載した資料「IT(ECS)におけるコンテナ、コンテナインスタンスの運用管理に必要な要素」についてみていきます。

それぞれの要素にこれまで紹介してきた専門用語がどのように対応するか、
見てみましょう。
A.ITにおける「コンテナ」の準備すべきこと・気にすべきこと
1.コンテナリソース(CPU,メモリなど)はどれくらい?コンテナの数はいくつ必要?
→ 「タスク定義」で決めます。
2.どのコンテナインスタンスに載せる?
→ 「サービス」で決めます。(※)
3.同じコンテナインスタンスで運用しなきゃいけないコンテナの組み合わせはある?またコンテナ同士の依存関係にリクエストはある?
→ 「タスク定義」で決めます。
4.故障や需要が増えた場合、すぐに認知し、コンテナの数をすぐに増やすことができる?
→ 「Service Auto Scailing」で決めます。
5.これらを総合的に指示・管理してくれるサービスってある?
→ 「ECS」です。
「クラスター」から、「新しいタスクを実行」で実行することができます。
B.ITにおける貨物船=コンテナインスタンスの準備すべきこと・気にすべきこと
1.コンテナインスタンスのスペック(CPU,メモリ)は?
→ 「クラスター」作成時に決めます。
2.何台のコンテナインスタンスが必要?
→ 「クラスター」作成時に決めます。
3.故障や需要が増えた場合、すぐに認知し、コンテナインスタンスを増やすことができる?
→ 「EC2 Auto Scaling」で決めます。
4.これらを総合的に指示・管理してくれるサービスってある?
→ 「ECS」です。
コンテナ、コンテナインスタンスの運用管理で必要な要素と、ECSでの専門用語が結びついたでしょうか。とっつきにくい専門用語が少しでもわかってもらえたらとてもうれしいです。
もちろん、これ以外にも専門用語はたくさんあるのですが、まずはここまでを理解すると、ECSはだいぶわかりやすくなるかな・・と思います。
次回はここまで説明した専門用語が実際の画面でどんなふうに見えるか、見ていきましょう。
そして、実際にゼロからECSをいじり、簡単なコンテナを運用してみましょう!
ここまで読んでくれてありがとうございました。
【マガジン紹介】
「ぜんぜんわからなかったECSシリーズ」のマガジンです!
鋭意更新中です!
AWS未経験者にもわかるように、優しく解説しています。
是非お読みいただけると嬉しいです!