Upgrade to Pro — share decks privately, control downloads, hide ads and more …

クラウドのスケーリングの力で5時間 かかるバッチジョブを10分に短縮する / Reduce t...

Avatar for Genki Ogasawara Genki Ogasawara
September 06, 2024
34

クラウドのスケーリングの力で5時間 かかるバッチジョブを10分に短縮する / Reduce the batch job time by a 36th using the power of scaling in the public cloud

Avatar for Genki Ogasawara

Genki Ogasawara

September 06, 2024
Tweet

More Decks by Genki Ogasawara

Transcript

  1. ジョブを適正に分割するには︖ 17 リクエスト ・・・ ジョブ A-1 ジョブ A-360 ・・・ 認

    証 リクエスト 認 証 リクエスト 認 証 ◆ 認証情報の呼び出し︓3回→400回に増える =認証情報サービスの利⽤料⾦が133倍になる ◆ ジョブを 360 個並列で動かす =クラウドサービスの上限に引っかかってしまう
  2. ジョブを適正に分割するには︖ 20 リクエスト ・・・ ジョブ A-1 ジョブ A-36 ・・・ 認

    証 リクエスト 10タスクごとに36分割 リクエスト リクエスト リクエスト ・・・ 認 証 リクエスト リクエスト リクエスト
  3. クラウドサービスの選定 • 定期実⾏したい → Amazon EventBridge Scheduler • ワークフロー化したい →

    Amazon Step Functions • 並列実⾏したい → Amazon Elastic Container Service • コストを削減したい → Amazon Fargate Spot 23
  4. アーキテクチャのポイント(実装者向け) • Step Functions で Map を使い、ECS タスクを並列起動 • Step

    Functions のネイティブ API の RunTask Fargate の起動は可能、Fargate Spot の起動はできない → Step Functions で CallAwsService API 経由で RunTask を実⾏ 27
  5. アーキテクチャのポイント(実装者向け) • Step Functions で Map を使い、ECS タスクを並列起動 • Step

    Functions のネイティブ API の RunTask Fargate の起動は可能、Fargate Spot の起動はできない → Step Functions で CallAwsService API 経由で RunTask を実⾏ • CallAwsService API 経由の RunTask では エラーハンドリングができなくなるため、別で実装する必要がある 28