Pocket

さてFargate Spotですが、ECSのサービスでの設定はTerraformでサクッとできるものの、Scheduled Taskでは少し設定等ややこしいので、ブログします。まずは概要から。


Fargate Spotとは

https://aws.amazon.com/jp/blogs/news/aws-fargate-spot-now-generally-available/

EC2のスポットインスタンスと概念はほぼ一緒で、タスクで定義した容量がFargate Spotで利用可能になります。メリットとしては最大70%引きになりますが、デメリットとしては運用している最中にFargate Spotの開放が必要になるとタスクが中断される可能性があります。なので、いつ落ちたのかは検知しなければなりません。ステージング環境は全てFargate Spotにして、本番環境は一台Fargate、2台目やオートスケールする場合はFargate Spotにすればサービスがダウンすることはありません。

そして、Fargate SpotにはCapacity provider strategyというタスク数の割合をチューニングする機能があります。この機能がさっぱりわからないと思いますので、以下わかりやすく書いておきます。

  • base(必ず動いてほしいタスク数)
  • weight(タスクが増える際にどの比率で増やしていくかの対比)

例えば、本番環境のように1台目はFargate、2台目やオートスケールをFargate Spotにしたい場合は以下のようにすると良いです。

・capacity_provider(Fargate)
 ・base = 1 
 ・weight = 0

・capacity_provider(FARGATE_SPOT)
 ・base = 0
 ・weight = 1

また、ステージング環境はFARGATE_SPOTのみにする場合は以下の通り。

・capacity_provider(Fargate)
 ・base = 0
 ・weight = 0

・capacity_provider(FARGATE_SPOT)
 ・base = 1
 ・weight = 1

では現状動作しているコンテナらをFargate Spotに切り替えてみましょう。


既存のコンテナをFargate Spotに切り替える手順

[awscli][Terraform]Fargate Spot 適用の流れ

  • awscliで適用

  • 変更後確認

  • Terraformで差分修正(ecs.tf)

  • タスクがFargate Spotになっていること

2台目以降、上記のようにFargate Spotになっていれば完了です。


Scheduled TaskのコンテナをFargate Spotに切り替える手順

  • ecs.tf

  • cloudwatch_event_target.tf

Scheduled Taskの場合はCapacity provider strategyを予めFargate Spotとして適用する必要があります。EventBridgeでは launch_type を空白にしないと以下のようにコンピューティングオプション>容量プロバイダー戦略>クラスターのデフォルトを使用にならないので注意するところです。


まとめ

気になるコストの部分はコンテナのスペックが高ければ高いほど削減できますが、そこまでスペックがないコンテナだと月$70くらいしか変わらないので、あまり効果的ではないように見受けられました。が、コスト削減としての取り組みはマストで対応すべきでしょう。また、現段階では今の所コンテナは落ちていないですが、ステージング環境は監視せずに気づいたら立ち上げる感じでも良さそう。むしろいつどんなときに落ちるのか調査したい。

Pocket


adachin

1989年生まれのSRE。ホスティングから大規模なアドテクなどのインフラエンジニアとして携わる。現在はサービスの信頼性向上、DevOps、可用性、レイテンシ、パフォーマンス、モニタリング、オブザーバビリティ、緊急対応、AWS/Azureでのインフラ構築、Docker開発環境の提供、Kubernetes保守、インフラコード化、新技術の検証、リファクタリング、セキュリティ強化などを担当している。個人事業主では数社サーバー保守とベンチャー企業のSREインフラコンサルティングやMENTAで未経験者にインフラのコーチング/コミュニティの運用を実施している。また、「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/技術広報/テクニカルサポート/コントリビュータでもある。

0件のコメント

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください