プレイドが実践した BigQuery コスト最適化

PLAID Tech
February 14, 2024

プレイドが実践した BigQuery コスト最適化

2024年2月14日開催
【日経、プレイド合同勉強会】BigQueryのコストとワークロード管理の最適化Tips共有
https://nikkei.connpass.com/event/306718/

『プレイドが実践した BigQuery コスト最適化』
河野 信輝(プレイド)

PLAID Tech

February 14, 2024
Tweet

More Decks by PLAID Tech

Other Decks in Technology

Transcript

  1. © PLAID Inc. | Confidential 2 © PLAID Inc. | Confidential ⾃⼰紹介 河野 信輝

    Nobuteru Kawano • 株式会社プレイド所属 • Engineer • 2023年01⽉〜 プレイド • 〜2022年12⽉ 保険会社でデータサイエ ンティスト • ポケモンセンターにお布施してます • 数学学び直したいので履修中(確率、 統計、線形代数、グラフ理論など)
  2. © 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⽉までにおける最⼤値
  3. © 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
  4. © 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
  5. © PLAID Inc. | Confidential Bigquery-Slot-Optimization Team 1. 可視化 2. Reservation 最適化

    3. クエリ最適化 BigQuery-Slot-Optimization Team の活動 15
  6. © 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
  7. © PLAID Inc. | Confidential 可視化 SELECT job_id, period_start, period_slot_ms FROM `[project

    id].region-[region]`.INFORMATION_SCHEMA.JOBS_TIMELINE WHERE … 各時刻ごとのスロット消費量 19
  8. © PLAID Inc. | Confidential 可視化 データソース: Datadog で実現 INFORMATION_SCHEMA. JOBS_TIMELINE +

    INFORMATION_SCHEMA.JOBS リアルタイムで 把握可能に cron 実⾏: Cloud Scheduler + Cloud Functions 20
  9. © PLAID Inc. | Confidential Reservation 最適化 Reservation 割当 Project A Reservation

    X: 2000 slots Project B Project C Reservation Y: 1000 slots 処理の負荷に応じてスロットの確保が必要 22
  10. © PLAID Inc. | Confidential Reservation 最適化 Slot 実際の使⽤量 AutoScale BaseLine AutoScale

    導⼊ & 最適化でコスト⬇ スロットの割当 従来のプレイド (イメージ) 27
  11. © PLAID Inc. | Confidential クエリ最適化 ⽣データ ユーザテーブル 最新のユーザ情報が 必要なクエリ 更新頻度⬇ (差分)ビュー

    コスト⬆ トータルでコスト⬇ ワークロード最適化 ビューを⾒るように変更 ビュー参照のコスト追加は テーブル更新コスト減に⽐べ ごくわずか 33
  12. © 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
  13. 39