こんにちは、かびらです。
今回はECRについて解説します。
ECRとは?

ECRは、AWSが提供する、コンテナイメージの保管サービスです。
Dockerイメージを、安全な場所に保存して、保存したイメージを、ECSからすぐに使える状態にしてくれます。
Luxucomでも、このECRにイメージを置いておくことで、コンテナが最新のプログラムを簡単に実行できるようになっています。
レジストリとリポジトリとは?

ECRの中には、レジストリとリポジトリという考え方があります。
レジストリは、イメージ全体を管理するサービスで、ECRそのもの、というイメージです。
そのレジストリ中に、アプリごとのリポジトリがあります。
フォルダのような場所で、バージョン違いのイメージが並んで保存されます。
latestなどのタグを付けて管理するのも、このリポジトリの中です。
コンテナイメージの流れ

コンテナイメージが、どのような流れで使われていくのか、例をもとに流れを見ていきます。
まず、開発者がアプリのイメージをビルドします。
ビルドしたイメージは、ローカルに保存されます。
次に、このイメージを、ECRへプッシュします。
プッシュされたイメージは、ECRに置かれます。
ECRに置かれたイメージを、ECSがプルして取得します。
ECSは、このイメージを使ってコンテナを実行します。
このような流れで、コンテナイメージをECRで管理して、ECSへと適用されていきます。
ECRを採用した理由

次に、LuxucomでECRを採用した理由についてです。
まず、何といっても、AWSでECSを使うために、ECRが不可欠だったからです。
ECSのコンテナは、ECRからイメージを取得して動きます。
もうひとつは、GitHub Actionsとの相性が良かったことです。
イメージのビルドやプッシュを、そのままCI/CDに組み込めて、運用がとてもシンプルになりました。
ECRと関連するアーキテクチャ

次に、LuxucomでECRと関連するアーキテクチャを見ていきましょう。
開発者がコードをプッシュすると、GitHub Actionsが動きます。
まず、CIでテストやビルドが実行されます。
プルリクをマージすると、CDが動きます。
このCDの中で、ビルドしたイメージがECRにプッシュされます。
ECSは、ECRにある最新のイメージをプルして、サービスを再起動します。
この流れによって、コードの更新がそのまま本番に反映される仕組みになっています。
ECRを使って良かった点

次に、Luxucomで、ECRを使って良かった点です。
まず、CI/CDに自然に組み込めて、リリース作業が速くなりました。
イメージのビルドからデプロイまでが、自動で流れるようになりました。
もうひとつは、アプリのバージョン管理がしやすくなったことです。
イメージにタグを付けるだけで、バージョン違いを簡単に管理できます。
ECRを使って難しかった点

最後に、ECRを使って難しかった点です。
一番つまずいたのは、イメージの仕組みそのものを理解するまでの部分でした。
コンテナイメージがどう動いて、どこに保存されるのかが分かるまでは、ECRの役割が少し掴みにくかったです。
さいごに
今回は、Luxucomのインフラを支える仕組みの中から、ECRについて解説しました。
ECRを使うことで、コンテナイメージを安全に管理でき、ECSやCI/CDパイプラインと自然に連携できるようになっています。
次回は、このECRとも深く関わる、Dockerそのものについて解説していきます。



