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
120
Dataflow × Cloud Tasksで並列処理をする
以下のイベントの登壇資料です。
https://mercari.connpass.com/event/284081/
あべてつ
August 01, 2023
Tweet
Share
More Decks by あべてつ
See All by あべてつ
クリーンアーキテクチャ について理解したこと
abetetsuya20
1
210
Featured
See All Featured
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
32
5.6k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
14
1.5k
Measuring & Analyzing Core Web Vitals
bluesmoon
7
420
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
2.9k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.6k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
357
30k
A designer walks into a library…
pauljervisheath
205
24k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
10
790
4 Signs Your Business is Dying
shpigford
183
22k
Statistics for Hackers
jakevdp
799
220k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
52
2.5k
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