Slide 1

Slide 1 text

調査して分かった Fargateが適さない場合 片桐 翼

Slide 2

Slide 2 text

Prof ile 自己紹介 名 前 片桐 翼 02 クラスメソッド株式会社 AI事業本部 / 生成AIインテグレーション部 / 西日本開発チーム 所 属 マウンテンバイク / バスケットボール / 農業 趣 味

Slide 3

Slide 3 text

Theme 今回のテーマ きっかけになった投稿 公開後反響をいただき、X でも複数のコメントをいただきました。 その後いくつか調査を行ったので、今回は 1 つご紹介させてください。 New 01 Graceful Shutdown stopTimeout 120秒の壁 記事から深掘り 02 コスト 「Fargateは高い」は本当か New 03 DaemonSet / APM サイドカーとホスト管理 02 Fargate 一択だと思っていた私が ECS on EC2 の重要性に気づいた話

Slide 4

Slide 4 text

120秒の壁 — 2分後にはSIGKILL が 強制終了させる

Slide 5

Slide 5 text

① GR AC EFU L S HU TD OWN コミュニティの声 「120秒では足りない !!」 GitHub Issue #1020 · aws/containers-roadmap 出典: Github — github.com/aws/containers-roadmap/issues/1020 04 Github上のコメント X のコメント

Slide 6

Slide 6 text

① GR AC EFU L S HU TD OWN stopTimeout SIGTERM → SIGKILL までの時間 Fargate ECS on EC2 デフォルト 値 30 秒 30 秒 最大値 120 秒 (上限固定) 24 時間(マネージドインスタンス) 上限なし(EC2) 設定方法 stopTimeout stopTimeout EC2で stopTimeout が未定義の場合は ECS_CONTAINER_STOP_TIMEOUT の値が 使用される SIGTERM 受信 終了処理中… SIGKILL 強制終了 ▲ Fargate はここが最大 120 秒 出典: AWS公式ドキュメント — docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html 04

Slide 7

Slide 7 text

① GR AC EFU L S HU TD OWN 困るケース、取れる対策 困るケース コンテナ停止時にリクエストエラーが散発する → 原因は stopTimeout ループ5分超のバッチや決済トランザクションが中断 → 120秒超でSIGKILLにより、データ不整合が発生。 ジョブを120秒以内に分割 チェックポイント設計・SIGTERM受信時に進捗保存 ECS on EC2 / マネージドインスタンス へ移行 stopTimeout を 120秒以上設定可能 05 対策

Slide 8

Slide 8 text

Summary まとめ 02 STEP 1 終了処理 < 120 秒 → Fargate 30秒以上かかる場合はstopTimeoutの設定を忘れずに STEP 2 終了処理が 120 秒に近い → Fargate で ジョブの分割 ジョブを分割して、終了処理を短く抑える STEP 3 終了処理を 120秒 に収められない → ECS on EC2 ECS on EC2 へ変更し stopTimeout を余裕のある時間に設定 終了処理の時間に応じて使い分けが必要です。

Slide 9

Slide 9 text

R EFER EN CES 参考リンク Amazon ECS 公式ドキュメント docs.aws.amazon.com/AmazonECS/latest/developerguide/ docs.aws.amazon.com/AmazonECS/latest/developerguide/ Amazon ECS Fargate タスク定義パラメータ(stopTimeout) docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/task_definition_parameters.html docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/task_definition_parameters.html Amazon ECS マネージドインスタンス タスク定義パラメータ(stopTimeout) docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/task_definition_parameters-managed-instances.html docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/task_definition_parameters-managed-instances.html Amazon ECS EC2 タスク定義パラメータ(stopTimeout) docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/task_definition_parameters_ec2.html docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/task_definition_parameters_ec2.html 前回記事:Fargate一択だと思っていた私がECS on EC2の重要性に気づいた話 dev.classmethod.jp/articles/understanding-ecs/ dev.classmethod.jp/articles/understanding-ecs/ 14

Slide 10

Slide 10 text

Thank you.