【PR】本記事はアフィリエイト広告を利用しています。
ECSとは
ECSとはAmazon Elastic Container Service (ECS) の略で、フルマネージドのコンテナオーケストレーションサービス、だそうです。
ここで初めて触る人には「なんのこっちゃ分からん」と思うかと思います。
実際に触って感じたのは、「クラスター」の中にある「サービス」で稼働している「タスク」をいい感じに制御してくれるサービス
です。
ECS自体は、サービスの運用状態を管理してサービスがダウンしても設定した数だけサービス維持しようと再起動してくれたり
タスクのバージョンアップも自動的に設定した通りに更新なんかもしてくれます。
イメージ的にはこんな感じ?
クラスターの中で稼働するサービスの中で稼働するタスクたち(?)です。
早口言葉みたいですが、まあまあヤヤコシイのです。
タスクを動かすもの
「タスク」とは、開発者が定義した稼働させる「アプリ」だと思ってください。
実際には開発者が開発した「Docker」のイメージになります。
更にヤヤコシイのは、そのDockerイメージをどこで稼働させるかです。
「EC2」か「Fargate」が選べます。
EC2は有名ですが、ここではサーバレスと呼ばれる「Fargate」に絞ります。
ECSを利用する場合は「Fargate」を使った方が便利でしょう。
ただ用途によってはEC2を使わざる得ない場合がある「GPUを利用したいなど」
のでよく考え自分にあった環境を選びましょう。
Fargate
じゃあFargateって何?となると思いますが、Dockerコンテナを稼働させる為の
装置だと思ってください。
EC2のようにOSのメンテはAWS側に丸投げしてアプリを稼働させたい場合に
利用します。
タスクを稼働させる先をFagateを選ぶと、このFargateがタスクを受け取って
責任をもって稼働させてくれます。
Fargateの欠点は起動がおっそいです。
後述するECRからFargate環境でタスクを起動させる度にイメージを引っ張り出して
きて起動しようとするので、ECRから取り出す場合にも課金されるという特徴が
あり、個人で遊んでるとチャリンチャリン数値があがってドキドキします(笑)
ECR
タスクをどう定義するのかというと、タスク定義する設定画面があるのですが
そこでDockerコンテナイメージが格納されている「ECR」を指定することに
なります。
Amazon Elastic Container Registryの略です。
また新しい登場人物がでてきたと思いますが、ご理解ください。
細かいこと言うと、他のレジストリサービスを選ぶことができると思いますが
AWSの標準機能で説明致します。
開発者がDockerイメージを作成すると一旦このECRに登録して一旦保存して
おく場所ぐらいに思ってください。
タスクの作成前に済ませておく必要があります。
タスク定義
タスクは、先ほど説明したECR登録しているDockerイメージを指定して
作成します。
メモリの容量だったりCPUサイズだったりを定義します。
こんな感じで細かく定義しておきます。
タスクはバージョンの概念をもっているので、再定義させることができます。
ECSはこの設定されたものを元にコントロールしてくれます。
まとめ
ECSが、登録されたクラスタとサービスの設定をみて指示すると・・・
タスクに定義されたDockerイメージをECRから・・・
Fargateに渡して・・・
一生懸命に仕事をし始める、といったイメージです。
タスク・・・ECSで稼働させるアプリケーション。中身はDockerイメージ。
Fargate・・・タスクを稼働させるサーバレス環境。
ECR・・・Dockerイメージを格納しておく倉庫みたいなもの。
クラスタとサービスはここでは省略しています。