Amazon ECRを利用してCIを高速化する
テテマーチ株式会社 / finger-ease
メンバー / フルスタックエンジニア / エンジニア組織: 10名以下
| ツールの利用規模 | ツールの利用開始時期 | 事業形態 |
|---|---|---|
| 10名以下 | 2022年7月 | B to B B to C |
| ツールの利用規模 | 10名以下 |
|---|---|
| ツールの利用開始時期 | 2022年7月 |
| 事業形態 | B to B B to C |
アーキテクチャ

導入の背景・解決したかった問題
導入背景
ツール導入前の課題
もともとECRは、CDパイプラインでビルドしたDockerイメージを保存し、本番環境ECSコンテナの起動に利用する目的で導入されていました。 一方で、GitHub Actionsを利用したCIにおいては、実行ごとにDockerイメージを0からビルドすることによるオーバーヘッドが発生していました。
どのような状態を目指していたか
CIにおいても、デプロイ同様にあらかじめビルドしておいたDockerイメージをECRに保存して利用するようにすることで、生産性の向上を図りました。
比較検討したサービス
- GitHub ActionsのCaches
選定理由
前述の通り、CDパイプラインでECRを利用していたため、一貫性を重視してCIでも同等の仕組みを取り入れることにしました。
導入の成果
フロントエンド・バックエンドリポジトリともに同様の改善を行い、それぞれ1回あたりのCI所要時間の短縮について、以下の成果を達成しました。
| Before | After | 削減時間 | 削減率(概算) | |
|---|---|---|---|---|
| フロントエンド | 10.5分 | 7.5分 | 3分 | 30% |
| バックエンド | 3分 | 2分弱 | 1分強 | 40% |
導入時の苦労・悩み
当初は関連するIAMロールなども含め本番環境のリソースとして作成していましたが、ユースケースがCIであることを考慮し、後に開発環境のリソースとして作り直しました。 本番環境には直接的に関係のないリソースとなるため、AWS環境が分かれているのであれば最初から開発環境用のリソースとして作成することをお勧めします。
導入に向けた社内への説明
上長・チームへの説明
もともとECRは導入されていたことに加え、今回の用途に対する利用が小規模であることから、時間・費用対効果が高い改善であることが見込まれており、CIの実行時間に対するチームの課題意識もあったため、スムーズに対応に取り掛かることができました。
活用方法
よく使う機能
プライベートリポジトリを利用したDockerイメージの保存
ツールの良い点
- OpenID Connect (OIDC) を利用することでGitHub ActionsからのAWS認証が容易に行える
ツールの課題点
- 特になし
今後の展望
対応時、workflow_runを利用し、初めにDockerイメージの build & push ワークフローを実行し、それが完了してから後続のワークフローを行うように、実行順序を保証しようとしたのですがうまく機能しませんでした。 そこで、Dockerイメージの更新を伴う変更はそれ単体で行うというルールを決め、非同期でのワークフロー実行を許容しました。 現在の開発規模においては特に運用上の問題は発生していませんが、今後プロダクトやチーム規模の拡大に伴い、適宜見直していければと思います。
テテマーチ株式会社 / finger-ease
メンバー / フルスタックエンジニア / エンジニア組織: 10名以下
テテマーチ株式会社 / finger-ease
メンバー / フルスタックエンジニア / エンジニア組織: 10名以下
目次
- アーキテクチャ
- 導入の背景・解決したかった問題
- 活用方法


