Amazon Elastic Container Service(ECS)とは、Amazon EC2インスタンスを用いたDockerコンテナを管理するサービスです。Amazon ECSを利用することで、マルチホストで構成されたクラスター環境のホストOSを管理し、コンテナオーケストレーションと言われる複数のコンテナを統合して管理することが可能です。
AWS Fargateは、ECS と Amazon Elastic Kubernetes Service (EKS) で動作し、コンテナを実行できる環境です。AWS Fargateを利用することで、コンテナとコンテナの実行環境の2重管理が不要になります。ここでは、ECSやFargateのコスト最適化のポイントをご紹介します。
目次
Fargate利用時にも細かな設定を調整
環境ごとのコンテナの実行時間を減らす
ECS Fargate (サーバレスコンピューティング)を使用する場合も、EC2同様にECSタスクスケジューリングを用いてコンテナを減らしコストを抑える事が可能です。
利用例
開発環境・ステージング環境では、勤務時間中しか動作しなよう設定します。
例
lambda において以下のように定義して適用
- 月曜日から金曜日の6時にコンテナ(タスク数を1に)を起動するようにスケジュール
- 月曜日から金曜日の19時にコンテナ(タスク数を0に)を停止するようスケジュール
コスト削減の例
上記例で、全インスタンスを夜間停止した場合、1日11時間停止させるので約50%のコスト削減が可能
参考資料
Fargate Spotを使用する
開発・ステージング環境でFargateを使用する場合、Fargate Spotを使用することでコストを削減できます。Fargate SpotはEC2 スポットインスタンスと同様にAWS内の使用されていないクラウドのリソースを用いる事でオンデマンド料金に比べ最大 70% の割引料金で利用できる一時的利用インスタンスです。サービスが中断されることを許容できる環境で適用できます。
利用例
Fargate Spotは以下のケースで使えます。
- 割り込み耐性のあるタスクの実行
- オンデマンドとスポットインスタンスを併用しコストを抑えたスケーラブルなシステムを構築
- WorkerもしくはBatchのジョブをFargete Spot用に構築
※停止する数分前に AWS側からSIGTERMを受け取るので中断するロジックを組み込んでおく
コスト削減の目安
最大70%コストカットできます。
参考資料
Fargate 料金
Amazon ECS で Fargate Spot キャパシティープロバイダーを使用する
スポットインスタンスを使用
開発・ステージング環境でECS コンテナインスタンス(EC2)を使用する場合、スポットインスタンスを使用することでコストを減らせます。GPUを用いた演算業務はインスタンス費用が非常に高額になりますがコストカットの手段があります。
ECS コンテナインスタンス(EC2)を使用する場合
EC2のコスト削減対策と同様にスポットインスタンス、もしくはリザーブインスタンスを使えます。
スポットインスタンスとリザーブインスタンスについては、AWSのコスト最適化 <EC2 編>を参照ください。
利用例
ECS コンテナインスタンスは ECS Fargate と違いGPU 演算が行えるインスタンスが利用可能となっており、機械学習・深層学習などの高速演算を必要とする業務に向いています。Fargate Spot と同様に割り込み耐性のあるタスクを実行するように設計する事で、高性能インスタンスを約70%削減された価格で利用できます。
コスト削減の目安
70%程コストカットできます。
例
前提条件
- ストレージ:含まず
- リージョン:東京
- インスタンスサイズ:G5g.xlarge
- 構成:冗長化無し(シングル構成)
- OS:Linux
通常利用
稼働時間:7days24h
単価0.5669USD x 数量1 x 時間740h =420USD
Spot インスタンス
稼働時間:7days24h(停止しなかったものとする)
単価0.1701USD x 数量1 x 時間740h =126USD
(通常利用対比 約70%削減)
参考資料
ECRのポリシーを設定し不要なイメージを削除
ECRはアプリケーションイメージを保存するサービスです。長い開発時間にわたってイメージ数が増えてECRの容量、ストレージコストも増えます。
利用例
ECRのポリシーを設定しイメージ数が指定された閾値を超えた場合古いイメージを削除します。(保存コストを削減します)
コスト削減の目安
少額ですがストレージコストが減ります。
10GB x 時間740h=1.0USD