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
Dataflow × Cloud Tasksで並列処理をする
Search
あべてつ
August 01, 2023
0
110
Dataflow × Cloud Tasksで並列処理をする
以下のイベントの登壇資料です。
https://mercari.connpass.com/event/284081/
あべてつ
August 01, 2023
Tweet
Share
More Decks by あべてつ
See All by あべてつ
クリーンアーキテクチャ について理解したこと
abetetsuya20
1
200
Featured
See All Featured
Designing on Purpose - Digital PM Summit 2013
jponch
116
7k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
BBQ
matthewcrist
85
9.4k
Designing for Performance
lara
604
68k
The Art of Programming - Codeland 2020
erikaheidi
53
13k
Fireside Chat
paigeccino
34
3.1k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5.1k
Practical Orchestrator
shlominoach
186
10k
The World Runs on Bad Software
bkeepers
PRO
65
11k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.9k
A designer walks into a library…
pauljervisheath
204
24k
Adopting Sorbet at Scale
ufuk
73
9.1k
Transcript
Dataflow × Cloud Tasksで並列 処理をする 1
自己紹介 2
1. 自己紹介 名前 :阿部哲也 大学 :法政大学 情報科学部 コンピュータ科学科 研究分野:人工知能と暗号 (秘密分散) について インターン先:株式会社Stack 興味ある分野:Go言語、GraphQL、GCPなど... by
Takuya Ueda The Gopher character is based on the Go mascot designed by Renée French . 3
1. 自己紹介 株式会社Stackでは、VIPとAppifyというサービスの開発に携わっています。 VIP Appify ブランドオリジナルの ロイヤリティープログラムを 展開することができます Shopifyの販売チャネルとして モバイルアプリを
提供することができます 4
今回実装した機能の概要 5
2. 今回実装した機能の概要 顧客タグとは Shopifyストアで登録されている顧客情報に設定で きるタグのこと。 生年月日、性別、会員ランク等、様々な情報が登 録できる。 6
2. 今回実装した機能の概要 会員ランクとは マーチャントは、何ポイントで上がるか、どんな名前のラン クに上がるか設定することができる Stack社の機能の一 つ。 ランクごとに、ポイントの付与倍率を設定することができる。 Shopifyは、Stack社の会員ランクの情報を持っていない。 →
Shopifyのタグとして会員ランク情報を保持させている。 7
2. 今回実装した機能の概要 全顧客タグ更新機能 Shopifyに保存されている全ての顧客のタグを更新する機能 → 会員ランクを最新の算出方法で算出し、タグを更新する 会員ランクの名前や、昇格す るポイント数は編集可能 8
Dataflowの詳細 9
3. Dataflowの詳細 顧客を Shopify から取得 顧客1 顧客2 顧客3 customer1 customer2
customer3 顧客1 task 顧客2 task 顧客3 task Shopifyから渡ってきたIDの形式を、Stack社のID の形式に変換する。 タグを更新するTaskを各顧 客に対して作成する。 10
3. Dataflowの詳細 Dataflowのメリット ・ 大規模なデータを並列で処理が可能、高速な処理を実現できる。 Goroutineとの違い ・データサイズが大きいと、メモリ上でデータを扱うことが難しくなってくる。 ・Dataflowだと、オートスケールで並列分散処理を行うので、ファイル分割のような前処理が不要。 11
Cloud Tasksの組み合わせ 12
4. Cloud Tasksの組み合わせ Shopifyには、1分間で叩けるAPIの回数に制限があり、並列実行すると制限を超える可能性がある。 Task Queueと組み合わせることによって、 ShopifyのAPI Rate Limitを回避する。 →
Queueの設定で1秒あたり何個のTaskを実行するかを設定することで回避できる! 顧客1 task 顧客2 task 顧客3 task 顧客4 task マーチャントA Queue 13
4. Cloud Tasksの組み合わせ マーチャントAの後にマーチャントBが全顧客タグ更新をすると、 Aの処理が終わるまで、Bの処理が始まらない。 マーチャント毎にQueueを分けることによって、待ち時間を減らす工夫をしている。 1 2 3 4
マーチャントA Queue マーチャントB Queue マーチャントC Queue 1 A2 Task A3 Task B1 Task A1 Task マーチャントBは、マーチャントAが実行完了するまで 待つ必要がある。 14
Cloud Tasksのメリット ・ 非同期だからレスポンスが早い ・ Queueによる実行の管理でレートリミットが回避できる DataflowやGoroutine、Cloud Tasksの使い分け方法 ・データサイズが小さい場合の処理 →
Goroutine ・データサイズが大きい場合の処理 → Dataflow ・複雑な処理、非同期で行っても良い時の場合 → Cloud Tasks 4. Cloud Tasksの組み合わせ 15
まとめ 16
まとめ Dataflow メリット ・ 大規模なデータを並列で処理が可能、高速な処理を実現できる。 ・簡単に実装ができる。 Cloud Tasks メリット ・
非同期だからレスポンスが早い ・ Queueによる実行の管理でレートリミットが回避できる 17