Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
クラウドのスケーリングの力で5時間 かかるバッチジョブを10分に短縮する / Reduce t...
Search
Genki Ogasawara
September 06, 2024
1
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
Share
More Decks by Genki Ogasawara
See All by Genki Ogasawara
サーバレスで挑む IoT プロジェクトの現実解 / Real solutions for the IoT project using serverless service
genkiogasawara
1
180
IT知識ゼロからのスタートで、 事業部における内製開発をどうやって 推進してきたか?/How did we promote in-house development by starting from scratch?
genkiogasawara
1
190
クラウドネイティブな省エネサービスの内製開発で、BizDevOpsを実現する / Achieving BizDevOps in in-house development of cloud-native energy-saving services
genkiogasawara
2
810
エンジニアゼロの組織から内製開発の DX をどう実現したのか / How did we achieve DX in in-house development in an organization with zero engineers?
genkiogasawara
9
4.1k
入門 AWS Amplify Gen2 / Introduction to AWS Amplify Gen2
genkiogasawara
1
830
ソフトウェア開発の生産性と信頼性向上に取り組んだ結果、どうなった?/What has changed as a result of efforts to improve software development productivity and reliability?
genkiogasawara
0
85
「魔の川」「死の谷」をクラウド ネイティブなチーム作りで越境する / Crossing the "Devil River" and "Death Valley" by building cloud-native teams
genkiogasawara
2
500
Amazon CodeCatalyst で実現!開発環境とCI/CDパイプライン
genkiogasawara
0
7.7k
Featured
See All Featured
Building Adaptive Systems
keathley
38
2.3k
It's Worth the Effort
3n
183
27k
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
Build The Right Thing And Hit Your Dates
maggiecrowley
33
2.4k
How To Stay Up To Date on Web Technology
chriscoyier
788
250k
What's in a price? How to price your products and services
michaelherold
243
12k
Building Better People: How to give real-time feedback that sticks.
wjessup
364
19k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
93
16k
How to train your dragon (web standard)
notwaldorf
88
5.7k
Practical Orchestrator
shlominoach
186
10k
Gamification - CAS2011
davidbonilla
80
5k
Bash Introduction
62gerente
608
210k
Transcript
(FOLJ0HBTBXBSB ΫϥυͷεέʔϦϯάͷྗͰ࣌ؒ ͔͔ΔόονδϣϒΛʹॖ͢Δ 1 ,(94UVEZ(SPVQ
⾃⼰紹介 Genki (⼩笠原 元気) ・最近のトピック CNDS で基調講演をしました 海外旅⾏デビュー(シンガポール) リッツ・カールトンデビュー @geivk
2
Agenda 今回実現したいタスク 制約条件 / タスク分割のポイント クラウドサービスの選定 スケーリングを実現するアーキテクチャ まとめ 3
Agenda 今回実現したいタスク 制約条件 / タスク分割のポイント クラウドサービスの選定 スケーリングを実現するアーキテクチャ まとめ 4
エピローグ 5 ローカルで動かすプログラムが5時間もかかる・・・ パソコンが買えないならクラウドを使えばいいじゃない
やりたいこと • 毎⽇・特定の時間にジョブ(プログラム)を実⾏したい • 1ジョブ5時間かかるため短縮したい 6
前提条件 • 1バッチジョブ=複数タスクで構成される 7 タスク タスク タスク バッチジョブ タスク タスク
タスクの内容 8 処理1 リクエスト HTTP レスポンス 処理2 50〜100回リクエスト後のデータを もとに数値計算を実⾏ 処理3
対向サービス データベース 書き込み タ ス ク
Agenda 今回実現したいタスク 制約条件 / タスク分割のポイント クラウドサービスの選定 スケーリングを実現するアーキテクチャ まとめ 9
制約条件 • ネットワーク帯域が⾼速であること • できるだけ安価に済ませたい • 対向サービスの性質上、⽇本からリクエストする必要あり • クラウドサービスの上限値 10
クラウドサービスの選定のポイント ◆ 300〜400タスクをどの粒度に分割するのか ◆ バッチジョブに適したネットワーク環境を提供するサービスの検証 ◆ 安価なサービスの利⽤上の制約条件 11
クラウドサービスの選定のポイント ◆ 300〜400タスクをどの粒度に分割するのか ◆ バッチジョブに適したネットワーク環境を提供するサービスの検証 ◆ 安価なサービスの利⽤上の制約条件 12
クラウドサービスのコスト • クラウドサービスは基本従量課⾦制 • 並列実⾏しても、コスト影響が少ない → 10時間×1インスタンス ≒ 1時間×10インスタンス 13
タスクにかかる時間 14 タスク 60〜90秒 タスク 60〜90秒 60〜90秒 タスク 300〜400 タスク
5〜7時間 ・・・ ジ ョ ブ A
3つのジョブ 15 ジョブA ジョブB ジョブC 対向サービスA 対向サービスC 対向サービスB 認証 認証
認証
ジョブを適正に分割するには︖ 16 タスク タスク タスク ・・・ ジョブ A-1 ジョブ A-360
・・・
ジョブを適正に分割するには︖ 17 リクエスト ・・・ ジョブ A-1 ジョブ A-360 ・・・ 認
証 リクエスト 認 証 リクエスト 認 証 ◆ 認証情報の呼び出し︓3回→400回に増える =認証情報サービスの利⽤料⾦が133倍になる ◆ ジョブを 360 個並列で動かす =クラウドサービスの上限に引っかかってしまう
タスクの内容(再掲) 18 処理1 リクエスト HTTP レスポンス 処理2 50〜100回リクエスト後のデータを もとに数値計算を実⾏ 処理3
対向サービス データベース 書き込み タ ス ク
3つのジョブ 19 ジョブA ジョブB ジョブC データベース 認証
ジョブを適正に分割するには︖ 20 リクエスト ・・・ ジョブ A-1 ジョブ A-36 ・・・ 認
証 リクエスト 10タスクごとに36分割 リクエスト リクエスト リクエスト ・・・ 認 証 リクエスト リクエスト リクエスト
Agenda 今回実現したいタスク 制約条件 / タスク分割のポイント クラウドサービスの選定 スケーリングを実現するアーキテクチャ まとめ 21
クラウドサービスの選定 • 定期実⾏したい • ワークフロー化したい • 並列実⾏したい • コストを削減したい 22
クラウドサービスの選定 • 定期実⾏したい → Amazon EventBridge Scheduler • ワークフロー化したい →
Amazon Step Functions • 並列実⾏したい → Amazon Elastic Container Service • コストを削減したい → Amazon Fargate Spot 23
Agenda 今回実現したいタスク 制約条件 / タスク分割のポイント クラウドサービスの選定 スケーリングを実現するアーキテクチャ まとめ 24
アーキテクチャ 25
アーキテクチャのポイント(実装者向け) • Step Functions で Map を使い、ECS タスクを並列起動 26
アーキテクチャのポイント(実装者向け) • Step Functions で Map を使い、ECS タスクを並列起動 • Step
Functions のネイティブ API の RunTask Fargate の起動は可能、Fargate Spot の起動はできない → Step Functions で CallAwsService API 経由で RunTask を実⾏ 27
アーキテクチャのポイント(実装者向け) • Step Functions で Map を使い、ECS タスクを並列起動 • Step
Functions のネイティブ API の RunTask Fargate の起動は可能、Fargate Spot の起動はできない → Step Functions で CallAwsService API 経由で RunTask を実⾏ • CallAwsService API 経由の RunTask では エラーハンドリングができなくなるため、別で実装する必要がある 28
Agenda 今回実現したいタスク 制約条件 / タスク分割のポイント クラウドサービスの選定 スケーリングを実現するアーキテクチャ まとめ 29
まとめ • クラウドのスケーリングメリットを最⼤限活かし、5時間かかるタスクを適切 に分割し並列実⾏することで、30分に短縮できた • ビジネス要件・クラウドサービスの上限値などさまざまな制約条件がトレード オフにになるため、注意深く検討する必要がある 30
Thank you!