Slide 1

Slide 1 text

Dataflow × Cloud Tasksで並列 処理をする 1

Slide 2

Slide 2 text

自己紹介 2

Slide 3

Slide 3 text

1. 自己紹介 名前  :阿部哲也 大学  :法政大学 情報科学部 コンピュータ科学科 研究分野:人工知能と暗号 (秘密分散) について インターン先:株式会社Stack 興味ある分野:Go言語、GraphQL、GCPなど... by Takuya Ueda 
 The Gopher character is based on the Go mascot designed by Renée French . 3

Slide 4

Slide 4 text

1. 自己紹介 株式会社Stackでは、VIPとAppifyというサービスの開発に携わっています。 VIP Appify ブランドオリジナルの ロイヤリティープログラムを 展開することができます Shopifyの販売チャネルとして モバイルアプリを 提供することができます 4

Slide 5

Slide 5 text

今回実装した機能の概要 5

Slide 6

Slide 6 text

2. 今回実装した機能の概要 顧客タグとは Shopifyストアで登録されている顧客情報に設定で きるタグのこと。 生年月日、性別、会員ランク等、様々な情報が登 録できる。 6

Slide 7

Slide 7 text

2. 今回実装した機能の概要 会員ランクとは マーチャントは、何ポイントで上がるか、どんな名前のラン クに上がるか設定することができる Stack社の機能の一 つ。 ランクごとに、ポイントの付与倍率を設定することができる。 Shopifyは、Stack社の会員ランクの情報を持っていない。 → Shopifyのタグとして会員ランク情報を保持させている。 7

Slide 8

Slide 8 text

2. 今回実装した機能の概要 全顧客タグ更新機能 Shopifyに保存されている全ての顧客のタグを更新する機能 → 会員ランクを最新の算出方法で算出し、タグを更新する 会員ランクの名前や、昇格す るポイント数は編集可能 8

Slide 9

Slide 9 text

Dataflowの詳細 9

Slide 10

Slide 10 text

3. Dataflowの詳細 顧客を Shopify から取得 顧客1 顧客2 顧客3 customer1 customer2 customer3 顧客1 task 顧客2 task 顧客3 task Shopifyから渡ってきたIDの形式を、Stack社のID の形式に変換する。 タグを更新するTaskを各顧 客に対して作成する。 10

Slide 11

Slide 11 text

3. Dataflowの詳細 Dataflowのメリット ・ 大規模なデータを並列で処理が可能、高速な処理を実現できる。 Goroutineとの違い ・データサイズが大きいと、メモリ上でデータを扱うことが難しくなってくる。 ・Dataflowだと、オートスケールで並列分散処理を行うので、ファイル分割のような前処理が不要。 11

Slide 12

Slide 12 text

Cloud Tasksの組み合わせ 12

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

Cloud Tasksのメリット ・ 非同期だからレスポンスが早い ・ Queueによる実行の管理でレートリミットが回避できる DataflowやGoroutine、Cloud Tasksの使い分け方法 ・データサイズが小さい場合の処理 → Goroutine ・データサイズが大きい場合の処理 → Dataflow ・複雑な処理、非同期で行っても良い時の場合 → Cloud Tasks 4. Cloud Tasksの組み合わせ 15

Slide 16

Slide 16 text

まとめ 16

Slide 17

Slide 17 text

まとめ Dataflow メリット ・ 大規模なデータを並列で処理が可能、高速な処理を実現できる。 ・簡単に実装ができる。 Cloud Tasks メリット ・ 非同期だからレスポンスが早い ・ Queueによる実行の管理でレートリミットが回避できる 17