あるEコマース企業が、ステートレスなREST APIをAmazon ECS(Fargate起動タイプ)で運用しています。現在は10個のFargateタスクが稼働していますが、コスト削減を目的にFargate Spotの活用を検討しています。Fargate SpotはAWSの需給状況によってタスクが中断(Interruption)される可能性があるため、可用性の維持が必要です。以下の要件を同時に満たす設計はどれですか? ・少なくとも5タスクは常に稼働を保証する ・可能な限りFargate Spotを活用してコストを削減する ・Fargate Spotのタスクが中断された場合、自動的に別のタスクが起動して補完する
ECSのキャパシティプロバイダー戦略では「base」と「weight」を組み合わせて、複数のキャパシティプロバイダー間にタスクを自動分散できます。Fargateにbase=5を設定することで、最初の5タスクは必ずオンデマンドFargateで起動され、常時稼働が保証されます。残りのタスクはweight比率(Fargate:FARGATE_SPOT=1:9)に従って配分されます。Fargate Spotのタスクが中断されるとECSサービスがdesiredCountを維持しようとして新しいタスクを自動起動します。 選択肢BのFARGATE_SPOTのみを使用すると、大規模なSpot中断が発生した場合に全タスクが停止するリスクがあり「少なくとも5タスクを常に保証」という要件を満たせません。 選択肢CのEC2起動タイプへの変更はインスタンスのパッチ適用・スケーリング設定など運用負荷が増加します。 選択肢DのAWS Fault Injection Simulatorはカオスエンジニアリングのためのツールであり、可用性を自動的に向上させる設定機能ではなく、手動でdesiredCountを調整する方式は自動補完要件も満たせません。