「攻めた」AWS Fargate Spot比率の見直し時

AWSの東京リージョンでFargate Spotを「中断されたら困る」割合で利用している場合、2024年10月は見直し時かも知れません。


はてながECS Fargateで運用しているWebサービスの多くは、状況に応じてリクエスト数≒負荷が増減します。

これに対して、リクエストを受け持つECSサービスのタスク数をオートスケールさせてコスト最適化を図っています。 ボトルネックはCPUで、CPU使用率を追跡していることが多いでしょうか。

オートスケールで追跡する使用率にはスケールアウトまでの間の負荷に耐えるための余裕を持たせます。 この余裕の部分をSpotタスクで確保することで更にコストを削減できます。

AWS Fargate Spotの発表で示されているユースケースでは以下に該当します。

また高可用性を求められるウェブサイトやAPIサーバーのように、ECSサービスの一部となるタスクに対してもFargate Spotを適用することができます。

余裕の部分をSpotタスクとするSpot比率の例

ここまでが教科書通りの設定ですが、これまでの運用上Spotタスクが全て中断されたことはなく、いくつか中断されても(恐らく他のホストマシンで)概ねその直後にタスクが起動していました。 このような実態を当てにするなら、理論値ではなくよりコストを優先した設定、Spot比率とすることが可能です。

余裕以上のSpot比率を設定する「攻めた」例

可能「です」というか、可能「でした」。

ここ数ヶ月で東京リージョンではタスクの中断が増えており、中断直後にキャパシティ不足で起動しない場面も散見されています*1

直近数カ月のSpotタスクの中断数グラフ例*2*3*4

実際、はてなではそうした際にコスト優先で攻めた設定をしていたサービスでコンピューティング能力が不足する状況が発生しました。

これに対しては素直にSpot比率を下げる方向に見直す形で対応しています。

Spotタスクの中断、起動実態に合わせてSpot比率を見直し

求めるサービスレベルとの相談にはなるかと思いますが、攻めた設定でSpotタスクを運用している方は中断具合を確認し、比率を見直すのがよいかもしれません。

とは言え、既に同様の設定で運用されている方は、同様に中断が「攻めた設定」に影響するレベルで増えていることは観測されているかと思います。

しかし、こうした「AWSクラウドの空きキャパシティ」の状況はAWSに問い合わせても回答を貰えません。それ自体は「そういうもの」ですが、インターネット上に実態の情報が乏しいため「我々がap-northeast-1でX86_64のFargate Spotを運用する限りではこうでした」を共有したかった次第です。多少なりとも参考になりましたら幸いです。

この記事は id:koudenpa が書きました。


余談

ギリギリのSpot比率を極めたい場合は、土日が攻め時かも知れません。

developer.hatenastaff.com

*1:これ以前にもキャパシティが不足気味だったこともあるでしょうし、今後キャパシティに余裕ある状態になることもあるでしょう。あくまでこの期間の変化への注目となります

*2:期間中Spotタスクの総数は「概ね」横ばいです

*3:リージョンはap-northeast-1、アーキテクチャはX86_64です

*4:Spot率見直し後の枠内はその外と設定が異なります