AWS Fargate。便利だけど、EC2と比べるとコストも高いので、コスト削減の方法をいろいろまとめてみた
- 上から順に効果が高くて、適用コストも低いので、上から実施を検討すると良いです
Compute Savings Plans
- EC2やFargateやlambdaの利用について、1時間いくらで、1年 or 3年分契約することで割引が発生するプラン。前払いにすると更に割引
- 前払いならば、東京リージョンのfargeteで、 1年なら22%OFF、3年なら47%OFF
- インスタンスタイプなどに縛りはないので、一定額 EC2やFargateやlambda を使用するならば、入ったほうが得なことが多いハズ
構成変更も不要なので、まずはここから始めると良い
参考
Fargate Spot
- 不意に中断することがある代わりに、70%OFF で Fargate が利用できるサービス
- Compute Savings Plans との併用はできない
- ほとんど中断することはない様子
とあえず、Fargate Spotの2台構成
— hisayuki (@hisayuki_mori) 2019年12月28日
1週間1度も落ちてない。
4とか5に上がったときは設定変更でServiceの強制deployしたときにhelthチェックが判定早すぎて次々コンテナが立ち上がっただけです#aws #fargate pic.twitter.com/CUFXQ05U5w
- Capacity provider strategy で、task の起動時のFargate Spotの割合を設定可能
つかいどころ
- 停止しても大きな問題が無い、QAやstaging環境
- 自分の会社では、Spot にして、さらに土日深夜早朝停止することで、かなりの低コストでQA環境を運用できた
構成変更のコストも低く、停止することも今の所ほぼ無いので、stage環境があるならば、まずはSpotの利用をオススメ
あとは、失敗しても再実行すれば良いバッチ処理とか、Capacity provider strategyを使って本番の一部とか
参考
メモリ、CPU、task数の調整
メトリクスを取っていることが前提
- ピークタイムでもメモリ、CPUに余剰があるならば、task数の削減を検討
- 最低維持task数 = AZの数 でもまだ余裕があるならば、メモリ、CPUの削減を検討
- ただし、1個のAZが落ちても、余裕があるようにしておくこと
- 2AZならば、maxでも50%にしておく
- ピークタイムとそれ以外でメモリ、CPUの使用量に大きな差があるのであれば、オートスケーリングを検討
半年に1回くらい状況を見て、メモリ、CPU、task数を調整するとハッピーかもしれない
リクエスト数をへらす
キャッシュが最適化されていないのであれば要検討
必要なCPUやtask数が削減されるはず
まとめ
もし、Fargate Spot化や メモリ、CPU、task数の調整がすぐできるのならば、Compute Savings Plansの適用はその後にした方が良いかも