Amazon ECSの一般的なユースケースメモ

はじめに

Amazon ECSの一般的なユースケースのドキュメントを読んだのでめも

docs.aws.amazon.com

ユースケース

一般的なユースケースは以下2つ。

  1. マイクロサービス
  2. バッチジョブ

マイクロサービス

マイクロサービスは複雑なアプリケーションを小型で独立したサービスに分解するソフトウェアアーキテクチャ手法で、コンテナを使うと以下の利点がある。

コンテナは、イミュータブルなイメージを使い、すべての依存関係を持った、サービスのモデル化を容易にします。 コンテナではあらゆるアプリケーションやプログラミング言語を使用できます。 コンテナのイメージはバージョニングされたアーティファクトであるため、コンテナのイメージから元のソースを追跡できます。 ローカルでコンテナのテストを行い、同じアーティファクトをスケールしてデプロイできます。

ECSでマイクロサービスアーキテクチャを設計するときに考慮しておく点はいくつかあるので注意。 詳細はgithubのマイクロサービスリファレンスアーキテクチャを参照するとよい。

github.com

設計時の考慮事項
  • Autoscaring
  • サービス検出
  • 認証シークレット管理
  • ログ記録
  • CICD
Autoscaring

マイクロサービスのアプリケーション負荷は時間帯によって変化することがあるため、実際の負荷や予想される負荷に応じてスケールアウト・スケールインを行う。

ECSでは「ECS cloudwatch」を使ってモニタリングできる、クラスタ・メモリ使用率・メモリ使用率をメトリクスとしてリソース不足時にクラスターを自動的にスケールアウトできるトリガーを設置できる

サービス検出

マイクロサービスのコンポーネントが作成されたり終了されたりすると、サービス検出によって自動的に検出される。 ECSではいくつか方法がある。

  • Elastic Load Balancing Application Load Balancer
    • 動的ポートマッピングおよび Elastic Load Balancing Application Load Balancer のパスベースのルーティング機能使用
    • aws.amazon.com
  • リファレンスアーキテクチャで提案されている方法
    • CloudWatch イベント、Lambda、および Route 53 プライベートホストゾーンを使用
    • [github.com
  • Consul
認証シークレット管理

ECSのタスクとAWS Systems Manager パラメーターを統合する方法がある

ログ記録

ログ情報を CloudWatch Logs に送信するように、コンテナインスタンスを設定できる。

docs.aws.amazon.com

CICD

AWSでは次のリソースで実現可能

  • codePipline
  • codeBuild
  • cloudformation

ECRとの組み合わせることで以下ツールと連携できる - github - jenkins

バッチジョブ

コンテナ化されたアプリケーションは、バッチジョブのワークロードに適している。 バッチジョブは多くの場合、存在期間が短く、大量に並列化されているため、コンテナ化しておくと呼び出しやすくなる。