こんにちは、みるちゃ(@milcha_on)です!!
個人開発したアプリを公開する際にクラウドにデプロイすることが多いかと思います。ただ、個人開発なのでなるべく無料枠の恩恵を受けつつ、なるべく費用はかけたくはないですよね。
自分もCloudRunにデプロイをしまくっていた挙句、15円の課金が発生!
たった15円なので対策するほどでもないけど、コンテナのイメージが大きく、デプロイ回数も増えるほど課金額が大きくなっていきます。
なので、コスト周りの理解を深めつつ、Artifact Registryの節約対策をしていきます。
Artifact Registryとは
コンテナイメージやパッケージ(モジュール/ライブラリなど)を一元管理するためのリポジトリ/ストアです。Cloud Runにデプロイする際にローカルでコンテナイメージをビルドしてArtifact Registryにプッシュします。
Cloud RunからはArtifact Registryにプッシュされたイメージを選択してデプロイすることができます。Artifact Registryはイメージを複数管理することができます。
ただ、このArtifact Registryにイメージを溜め込むとコストがかかってくるようです。
Artifact Registryの無料枠と料金体系
Artifact Registryは無料枠も用意されており、無料枠を超えた分が課金対象となります。
ストレージ無料枠:毎月0.5GBまでは無料
ネットワーク無料枠:同一リージョン内のネットワーク利用は無料
操作リクエスト無料枠:イメージのアップロードやダウンロードにかかる基本操作は無料枠の範囲内で利用可能
この中であれば、無料で利用できるということになります。
ストレージ無料枠:標準的には $0.10/GB/月 前後
ネットワーク無料枠:料金はリージョンやるが、一般的に $0.12〜$0.23/GB 程度
基本的に1GBあたり、0.1ドルで課金されます。ネットワーク利用料は同一リージョンなのであまり関係なさそう。
Artifact Registryでのコスト対策
Artifact Registryでコストを抑えるには以下の方法があります。
- リージョンは同一にする
- イメージを軽量にする
- クリーンアップポリシーの利用
リージョンはArtifact Registryのリポジトリで設定できるリージョンとCloud Runでデプロイするリージョンを同一にすることでネットワークのコストは無料で利用できます。
次にイメージの軽量化です。ビルド時に使用するDockerfileに定義するディストリビューションをalpine、slim、distrolessなどにすることで軽量化できます。
クリーンアップポリシーを利用することで自動で古いイメージを削除してくれます。Artifact Registry上で設定することが可能です。
クリーンアップポリシーの設定方法
Google Cloudにログインし、Artifact Registryのプロダクトを開きます。

対象のリポジトリを選択して、「リポジトリの編集」を開きます。

「クリーンアップポリシーを追加」を開きます。

適当にポリシー名を入力します。
これは削除用のポリシーを作成します。ポリシータイプは「条件付き削除」を選択し、タグの状態は「タグの状態は問わない」にして「完了」にします。

もう1つポリシーを作成します。これはイメージを保持するポリシーです。
ポリシータイプは「最新バージョンを保持」を選択し、保持数は保持しておきたい数値を入れておき「完了」させます。
これで削除するポリシーと保持するポリシーの作成が出来ました。こうすることで設定した保持数を除く、イメージが削除されます。
まとめ:コスト削減は常に意識したい
アプリ自体が売れるか売れない可が最優先だけど、インフラ周りの構成を考える上でも外せないのが、コスト面だと思うので、常に安く済む方法を探していきたい。
こんな感じでコストを下げるやり方はいろいろあるので、試してみてください。以上。