0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ECSの「サービス」と「タスク」の違いと役割

Posted at

こんにちは、新卒1年目のインフラエンジニアです。

今回は、AWSのECS(Elastic Container Service)でよく出てくる
「サービス」と「タスク」の違いについて整理しました。おそらく調べてみれば誰でもわかる内容ですが、、、、

ECSとは

ECSは、AWS上でDockerコンテナを管理・実行するサービスです。
インフラを意識せずにコンテナを動かせる点が特徴です。
ECSでクラスターを作成すると、サービスやタスクを作成できます。

タスク(Task)とは?

タスクは、1つまたは複数のコンテナをまとめた「実行単位」です。

  • 実行内容は「タスク定義(Task Definition)」に記述します
  • タスクが実行されると、指定したコンテナ群が起動します

タスク定義 = タスクの設計図で、JSONで記述されます。AWSのGUIからポチポチする分にはJSONを意識することはありません。
タスク = 設計図をもとに起動された実行中のアプリケーション

タスク定義で決めること(一部抜粋)

項目 説明例
コンテナイメージ nginx:latest など、ECR/DockerHub から指定
ポート 例: 80(外部公開)、3000(アプリ用)
環境変数 DB接続情報、APIキーなど
メモリ・CPU 例: 512MB, 0.25vCPU
ログ設定 CloudWatch Logs に出すかどうか
起動タイプ Fargate または EC2

サービス(Service)とは?

サービスは、指定した数のタスクを常に維持する仕組みです。

  • タスクがなんらかの理由で落ちたら自動で再起動
  • タスク数のスケーリングも可能
  • ALBとの連携で、外部公開にも対応
  • CodeDeployなどと組み合わせて、ローリングアップデートも可能

サービス作成時に決めること

項目 説明例
起動するタスク定義 例: my-app-task:5(v5)
タスク数 例: 常時3つ動かしたいなら「3」
デプロイ戦略 ローリング更新 / blue-green(CodeDeploy)など
ロードバランサー ALBを使って外部に公開するか
ヘルスチェック タスクが正常に動いているかの監視方法
Auto Scaling CPU/メモリ使用量に応じて増減させるかどうか

サービスは「タスクをどのように・どれだけ・いつまで動かすか」を管理するマネージャーであり、サービスを作成しても実際に動くのはタスクとなります。
AWSを触って数週間の頃の私は、サービスとタスクの違いがよくわかっていませんでした。
サービスを作成したのちに、不要となった起動済みタスクを削除しても自動でタスクが起動してくる現象に焦りを覚えました。タスクが起動し続けて多額の請求が来るのではないかと。(インスタンスタイプがt2.microなので実際そこまでお金かからない)

ECSの概念をまとめると、ECSクラスター>ECSサービス>タスク定義という包容関係となっています。
ECS.png

タスクとサービスの使い分け

やりたいこと タスクだけでOK サービスが必要
開発環境で一時的に実行
本番環境で安定稼働させたい
自動でスケールさせたい
外部からALB経由でアクセスさせたい

今後、もう少し踏み込んだ内容をアウトプットとして書き起こしていきたいと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?