Slide 1

Slide 1 text

© PLAID Inc. | Confidential © PLAID Inc. | Confidential 2024.02.14  |  【日経、プレイド合同勉強会】BigQueryのコストとワークロード管理の最適化Tips共有 プレイドが実践した BigQuery コスト最適化 BigQuery-Slot-Optimization Team のあゆみ 1

Slide 2

Slide 2 text

© PLAID Inc. | Confidential 2 © PLAID Inc. | Confidential ⾃⼰紹介 河野 信輝 Nobuteru Kawano • 株式会社プレイド所属 • Engineer • 2023年01⽉〜 プレイド • 〜2022年12⽉ 保険会社でデータサイエ ンティスト • ポケモンセンターにお布施してます • 数学学び直したいので履修中(確率、 統計、線形代数、グラフ理論など)

Slide 3

Slide 3 text

© PLAID Inc. | Confidential 3 © PLAID Inc. | Confidential 株式会社プレイドについて 株式会社プレイド 東京都中央区銀座6-10-1 GINZA SIX 10F 設⽴:2011年10⽉ 従業員:282名 ※2023年3⽉末時点

Slide 4

Slide 4 text

© PLAID Inc. | Confidential 4 © PLAID Inc. | Confidential 株式会社プレイドについて OUR MISSION データによって⼈の価値を最⼤化する

Slide 5

Slide 5 text

© PLAID Inc. | Confidential 5 © PLAID Inc. | Confidential KARTEについて CX(顧客体験)プラットフォーム

Slide 6

Slide 6 text

© PLAID Inc. | Confidential 6 © PLAID Inc. | Confidential KARTEについて CX(顧客体験)プラットフォーム ⼀⼈ひとりに合わせた 顧客体験を提供 WebやAppの訪問者の⾏動を 顧客ごとにリアルタイムに解析

Slide 7

Slide 7 text

© PLAID Inc. | Confidential 7 © PLAID Inc. | Confidential Stats of KARTE データ規模も爆発的に増加 199 億UU 累計ユーザー数 ※1 0.x 秒/解析 解析速度 134,000 over 秒間トラッキング数 ※3 2.59 兆円 年間解析流通⾦額 ※2 ※1 ローンチ〜2023年2⽉までのユニークユーザー数の実績 ※2 EC領域における解析流通⾦額。2022年3⽉〜2023年2⽉までの単年の実績 ※3 閲覧、クリック、購⼊などKARTEで計測しているユーザーの全イベントが 対象。ローンチ〜2023年3⽉までにおける最⼤値

Slide 8

Slide 8 text

© PLAID Inc. | Confidential BigQuery とプレイド https://tech.plaid.co.jp/bigquery-slot-resource-optmization 8

Slide 9

Slide 9 text

© PLAID Inc. | Confidential スロットって? BigQuery 公式ドキュメント BigQuery スロットは、BigQuery で SQL クエリを実⾏するために使⽤される仮想 CPU です。 クエリの実⾏中、BigQuery はクエリのサイズと複雑さに応じて、クエリに必要なスロット数 を⾃動的に計算します。 スロットについて https://cloud.google.com/bigquery/docs/slots?hl=ja オンデマンド料⾦の同時実⾏スロットの最⼤数 2,000 スロット 割り当てと上限 https://cloud.google.com/bigquery/quotas?hl=ja#query_jobs 重い処理はスロットをたくさん使う 少ないスロットしか使えないと、処理に時間がかかる 9

Slide 10

Slide 10 text

© PLAID Inc. | Confidential 課⾦について 課⾦体系 オンデマンド コンピューティング スキャンデータ量 (USD/TiB) 容量コンピューティング スロット消費量 (USD/Slot hour) プレイドはこちら 10

Slide 11

Slide 11 text

© PLAID Inc. | Confidential 2023年07⽉ BigQuery-Slot-Optimization Team 始動! 11

Slide 12

Slide 12 text

© PLAID Inc. | Confidential Bigquery-Slot-Optimization Team 2023年 BigQuery 料⾦体系変更 12

Slide 13

Slide 13 text

© PLAID Inc. | Confidential Bigquery-Slot-Optimization Team $0.024/slot hour $0.04 /slot hour ※ Enterprise Edition 1 year commit 容量コンピューティング料⾦ ストレージ料⾦ Logical storage のみ ※ 単価は倍だが圧縮後の容量 Physical storage も選択可能に 13

Slide 14

Slide 14 text

© PLAID Inc. | Confidential Bigquery-Slot-Optimization Team Physical storage 活⽤でコスト減⇩ スロット単価増⇧のインパクト⼤ BigQuery-Slot-Optimization Team 集中的にコスト最適化 プレイドの場合 14

Slide 15

Slide 15 text

© PLAID Inc. | Confidential Bigquery-Slot-Optimization Team 1. 可視化 2. Reservation 最適化 3. クエリ最適化 BigQuery-Slot-Optimization Team の活動 15

Slide 16

Slide 16 text

© PLAID Inc. | Confidential 可視化 BigQuery-Slot-Optimization Team 16

Slide 17

Slide 17 text

© PLAID Inc. | Confidential 可視化 スロット使⽤量が⼤きいタスクを ⾒つけたい! ⾃前でモニタリング BigQuery の Console もあるが クエリ内容でどのタスクか グルーピングしたい 17

Slide 18

Slide 18 text

© PLAID Inc. | Confidential 可視化 SELECT job_id, … WHEN REGEXP_CONTAINS(query, r'/* JOURNEY') THEN 'journey' … FROM `[project id].region-[region]`.INFORMATION_SCHEMA.JOBS を “JOURNEY” としてグルーピングする /* JOURNEY##### */ SELECT … グルーピング 18

Slide 19

Slide 19 text

© PLAID Inc. | Confidential 可視化 SELECT job_id, period_start, period_slot_ms FROM `[project id].region-[region]`.INFORMATION_SCHEMA.JOBS_TIMELINE WHERE … 各時刻ごとのスロット消費量 19

Slide 20

Slide 20 text

© PLAID Inc. | Confidential 可視化 データソース: Datadog で実現 INFORMATION_SCHEMA. JOBS_TIMELINE + INFORMATION_SCHEMA.JOBS リアルタイムで 把握可能に cron 実⾏: Cloud Scheduler + Cloud Functions 20

Slide 21

Slide 21 text

© PLAID Inc. | Confidential Reservation 最適化 BigQuery-Slot-Optimization Team 21

Slide 22

Slide 22 text

© PLAID Inc. | Confidential Reservation 最適化 Reservation 割当 Project A Reservation X: 2000 slots Project B Project C Reservation Y: 1000 slots 処理の負荷に応じてスロットの確保が必要 22

Slide 23

Slide 23 text

© PLAID Inc. | Confidential Reservation 最適化 Slot スロットの割当 23

Slide 24

Slide 24 text

© PLAID Inc. | Confidential Reservation 最適化 Slot 実際の使⽤量 スロットの割当 24

Slide 25

Slide 25 text

© PLAID Inc. | Confidential Reservation 最適化 Slot 実際の使⽤量 スロットの割当 従来のプレイド (イメージ) 余裕を持った 固定スロット数 25

Slide 26

Slide 26 text

© PLAID Inc. | Confidential Reservation 最適化 Slot BaseLine 年間を通じて固定購⼊ 割引価格(Commitment) 必要な時だけ BaseLine + AutoScale = 購⼊スロット スロットの割当 AutoScale 26

Slide 27

Slide 27 text

© PLAID Inc. | Confidential Reservation 最適化 Slot 実際の使⽤量 AutoScale BaseLine AutoScale 導⼊ & 最適化でコスト⬇ スロットの割当 従来のプレイド (イメージ) 27

Slide 28

Slide 28 text

© PLAID Inc. | Confidential Reservation 最適化 Slot Scale out/in 時 overhead ただし、 AutoScale 28

Slide 29

Slide 29 text

© PLAID Inc. | Confidential Reservation 最適化 Reservation 割当 軽い Project Reservation: BaseLine 200 slots 1- sec のレスポンスを確保 29

Slide 30

Slide 30 text

© PLAID Inc. | Confidential クエリ最適化 BigQuery-Slot-Optimization Team 30

Slide 31

Slide 31 text

© PLAID Inc. | Confidential クエリ最適化 可視化はできた! でかいジョブを やっつけよう! 31

Slide 32

Slide 32 text

© PLAID Inc. | Confidential クエリ最適化 ⽣データ ユーザテーブル 最新のユーザ情報が 必要なクエリ ⾼い更新頻度が必要 同⼀ユーザの判定(ログイン前‧後など) ユーザの⾏動に応じたセグメンテーション など ワークロード最適化 ユーザテーブル更新コスト⼤ 32

Slide 33

Slide 33 text

© PLAID Inc. | Confidential クエリ最適化 ⽣データ ユーザテーブル 最新のユーザ情報が 必要なクエリ 更新頻度⬇ (差分)ビュー コスト⬆ トータルでコスト⬇ ワークロード最適化 ビューを⾒るように変更 ビュー参照のコスト追加は テーブル更新コスト減に⽐べ ごくわずか 33

Slide 34

Slide 34 text

© PLAID Inc. | Confidential クエリ最適化 Recommender の推奨事項適⽤ 34

Slide 35

Slide 35 text

© PLAID Inc. | Confidential クエリ最適化 … LEFT JOIN b … … LEFT JOIN ( SELECT * FROM b WHERE id = ʻhoge’ ) … Slot hour 70% 減⬇ BigQuery 公式ドキュメント https://cloud.google.com/bigquery/docs/best-practices-perfor mance-compute?hl=ja#reduce_data_before_using_a_join JOIN を使⽤する前に データを削減する 35

Slide 36

Slide 36 text

© PLAID Inc. | Confidential 結果どうなった? BigQuery-Slot-Optimization Team 36

Slide 37

Slide 37 text

© PLAID Inc. | Confidential 結果どうなった? BigQuery コスト 20%⬇ 37

Slide 38

Slide 38 text

© PLAID Inc. | Confidential ご清聴ありがとうございました 38

Slide 39

Slide 39 text

39