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 が役立つ。
- デプロイの簡略化: CDKスクリプトをデプロイするために、毎回
cdk deployを使用する代わりに、ecspressoを使って既存のECSサービスを簡単に更新できます。 - 運用とトラブルシューティング: ECSタスクのログを取得したり、サービスの状態を確認したりする作業を
ecspressoを使って簡単に行えます。 - 設定管理の簡略化:
ecspressoは設定ファイルを使用するため、多くの設定を事前に定義できます。これにより、コマンドラインでのオプション指定の手間が省けます。 - 環境間での設定の共有: 環境間での設定の共有が簡単になります。これは、設定ファイルをソースコントロールに入れることで達成できます。
- 迅速なフィードバック:
ecspressoを使うと、ECSの状態やデプロイの進行状況に関するフィードバックを迅速に得ることができます。
ただし、CDK自体もCLIで操作できるため、開発時や初期のセットアップ時にCDKを使用し、ecspresso を運用フェーズで利用するという方法もあります。
また、CDKで作成したスタックを ecspresso で管理することは技術的に可能です。最終的には、どちらのツールを使用するかはチームの好みや既存のワークフローに依存します。