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
130
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
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
35
2.3k
Site-Speed That Sticks
csswizardry
10
650
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
124
52k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
20
1.3k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Building a Modern Day E-commerce SEO Strategy
aleyda
41
7.3k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
32
5.9k
Building Applications with DynamoDB
mza
95
6.5k
A Tale of Four Properties
chriscoyier
159
23k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.8k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
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