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

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

Genki Ogasawara
September 06, 2024
16

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

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