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
99
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
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
6
410
A Modern Web Designer's Workflow
chriscoyier
693
190k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.1k
Measuring & Analyzing Core Web Vitals
bluesmoon
4
120
A better future with KSS
kneath
238
17k
Making the Leap to Tech Lead
cromwellryan
133
8.9k
GitHub's CSS Performance
jonrohan
1030
460k
Visualization
eitanlees
145
15k
Designing for humans not robots
tammielis
250
25k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
47
2.1k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
364
24k
10 Git Anti Patterns You Should be Aware of
lemiorhan
654
59k
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