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
2
68
クラウドのスケーリングの力で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 デバイス監視から始める SRE / SRE starts with IoT device monitoring
genkiogasawara
2
230
サーバレスで挑む IoT プロジェクトの現実解 / Real solutions for the IoT project using serverless service
genkiogasawara
2
770
IT知識ゼロからのスタートで、 事業部における内製開発をどうやって 推進してきたか?/How did we promote in-house development by starting from scratch?
genkiogasawara
1
550
クラウドネイティブな省エネサービスの内製開発で、BizDevOpsを実現する / Achieving BizDevOps in in-house development of cloud-native energy-saving services
genkiogasawara
2
1.4k
エンジニアゼロの組織から内製開発の DX をどう実現したのか / How did we achieve DX in in-house development in an organization with zero engineers?
genkiogasawara
8
4.5k
入門 AWS Amplify Gen2 / Introduction to AWS Amplify Gen2
genkiogasawara
1
1.2k
ソフトウェア開発の生産性と信頼性向上に取り組んだ結果、どうなった?/What has changed as a result of efforts to improve software development productivity and reliability?
genkiogasawara
0
180
「魔の川」「死の谷」をクラウド ネイティブなチーム作りで越境する / Crossing the "Devil River" and "Death Valley" by building cloud-native teams
genkiogasawara
2
800
Amazon CodeCatalyst で実現!開発環境とCI/CDパイプライン
genkiogasawara
0
8.8k
Featured
See All Featured
Believing is Seeing
oripsolob
1
33
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
2
370
The SEO Collaboration Effect
kristinabergwall1
0
340
How to Think Like a Performance Engineer
csswizardry
28
2.4k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
0
3.4k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
140
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
890
Utilizing Notion as your number one productivity tool
mfonobong
2
200
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
0
180
[SF Ruby Conf 2025] Rails X
palkan
0
720
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
85
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
99
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!