メインコンテンツまでスキップ

ecspresso(エスプレッソ)

Overview

継続的デリバリーの責任範囲を明確にするecspresso。AWSのコンテナサービスAmazon ECSのデプロイツール。
ecspressoはECS専用のデプロイツールで、インフラ(VPC/ALB/Cluster…)のIaCと、アプリのデプロイのライフサイクルを分離する設計になっている。
つまり「インフラはCDKで構築・変更は稀」「アプリは頻繁にデプロイ」という現実にフィットする。

ヒント

ECSのデリバリーは、新しいコンテナイメージのビルドと、新しいコンテナイメージのデプロイの2つのフェーズに分かれている
ECSのデプロイは、タスク定義を更新し、サービスの参照するタスク定義を更新すること
頻繁に更新されるアプリケーションに対して、VPCやALBといったインフラストラクチャの更新頻度は低く、この2つの更新のライフサイクルは大きく異なる
以上を踏まえ、 ecspressoはECSのデプロイにフォーカスするように設計されたツール であり、コンテナが実行されるインフラストラクチャのVPC系リソースは参照するだけです。特に、TerraformでAWSインフラをIaC化されている場合、後述のようにシームレスに連携できます。

ecspresso(エスプレッソ)が必要な理由

AWS CDKを使用してリソースをプロビジョニングすると、ecspresso のようなCLIツールは必須ではない。
しかし、ecspresso を使用すると、開発者はより簡単にデプロイ、ロールバック、スケーリング、ログの取得などの作業を行うことができる。
とくに、以下のような場合に ecspresso が役立つ。

  1. デプロイの簡略化: CDKスクリプトをデプロイするために、毎回 cdk deploy を使用する代わりに、ecspresso を使って既存のECSサービスを簡単に更新できます。
  2. 運用とトラブルシューティング: ECSタスクのログを取得したり、サービスの状態を確認したりする作業を ecspresso を使って簡単に行えます。
  3. 設定管理の簡略化: ecspresso は設定ファイルを使用するため、多くの設定を事前に定義できます。これにより、コマンドラインでのオプション指定の手間が省けます。
  4. 環境間での設定の共有: 環境間での設定の共有が簡単になります。これは、設定ファイルをソースコントロールに入れることで達成できます。
  5. 迅速なフィードバック: ecspresso を使うと、ECSの状態やデプロイの進行状況に関するフィードバックを迅速に得ることができます。

ただし、CDK自体もCLIで操作できるため、開発時や初期のセットアップ時にCDKを使用し、ecspresso を運用フェーズで利用するという方法もあります。
また、CDKで作成したスタックを ecspresso で管理することは技術的に可能です。最終的には、どちらのツールを使用するかはチームの好みや既存のワークフローに依存します。

Resource