見出し画像

2020-03-31 Google Cloud Data Platform Day #2 #gc_dpday

2020/03/31 に開催された Google Cloud Data Platform Day #2 のイベントレポートです。

●イベント概要
ビジネスの成長を加速させるクラウド型データ分析プラット フォームとは

企業におけるデータ活用が進む中、データマネジメント、データ分析を支える分析基盤は重要になっています。Google Cloud はフルマネージドで実績のあるデータ分析プロダクト(BigQuery、Cloud Dataproc、Cloud Dataflow など)や、サーバーレスのアプローチでデータ分析基盤の複雑な運用をなくし、ビジネス上の重要な意思決定を迅速かつ効率的に行うことができるプラットフォームを提供しています。

本セミナーでは、データプラットホームとしてオンプレやクラウドをご利用中のお客様に、これからの Data Warehouse、Data Lake、Stream Analytics のあるべき姿をご紹介します。また実際に データ分析基盤として Google Cloud をご利用になっているユーザー様にご登壇いただき、選定、導入のポイント、いまどのようにお使いになっているかについてお話しいただきます。


■Google Cloud スマート アナリティクス ソリューションの最新情報

吉田 啓二 さん [ グーグル・クラウド・ジャパン ]

スクリーンショット 2020-03-31 13.10.07(2)

●スマートアナリティクスソリューション
・データウェアハウスモダナイゼーション
・データレイクモダナイゼーション
・ストリームアナリティクス

スクリーンショット 2020-03-31 13.15.35(2)

●データウェアハウスモダナイゼーション
・BigQueryを中心にデータウェアハウスを構築
  マネージドでスケーラブルに

スクリーンショット 2020-03-31 13.16.29(2)

●BigQuery Reservations
・スロットを購入、ワークロードに予約、割り当て
・コミットメントの種類
  flex
    60秒後から解約できる
    一時的にクエリが集中する場合
  月間
    30日から解約できる
  年間
    365日から解約できる
    定常的に稼働しているワークロード
・メリット
  コストが予約できる
  画面上ですぐにスロットの購入、割り当て
  未使用のスロットを組織内で有効活用

●整数範囲パーティショニング
・整数型のカラムの値の範囲でパーティショニング
  クエリのスキャン対象をパーティションで分けられる

スクリーンショット 2020-03-31 13.22.09(2)

・クラスタリングとの併用
  クエリのスキャン対象をパーティションとブロックで絞り込める

スクリーンショット 2020-03-31 13.24.01(2)

●DMLの実行回数の無制限化
・DMLをキューイング、制限をチェックして実行
・同時実行失敗のリトライは自動化
・CDCも実現できるようになった

●INFORMATION_SCHEMA
・組織全体のメタデータを見えるようになった
・監査、モニタリングに
  誰がどんなクエリを発行しているのかなど

スクリーンショット 2020-03-31 13.28.39(2)

●カラム単位でのデータアクセス制御
・タグとIAMを紐付け
・カラムとタグを紐付け

●データレイク

スクリーンショット 2020-03-31 13.30.51(2)

●Cloud Dataproc 自動スケーリング
・YARNメモリベースでスケール
・プライマリ、セカンダリどちらも

●Cloud Dataproc GKEでSparkジョブの実行
・dataproc-spark-operator
・spark clusterでのライブラリの依存管理をコンテナに委譲

●Cloud Dataproc 各種リソース
・DeltaLakeも対応

スクリーンショット 2020-03-31 13.35.06(2)

●BigQuery GCSのHiveパーティションデータのロード
・これまでは、パーティションキーバリューが欠落していた
  BigQuery
    パーティションキーバリューをテーブルに含める
  Hive
    パーティションキーバリューをテーブルに含めない

●BigQuery GCSのHiveパーティションデータの検索

●BigQuery Storage API
・直接データを読み込む
・複数ストリームで並走できる

●ストリームアナリティクス

スクリーンショット 2020-03-31 13.38.59(2)

・リアルタイムダッシュボード

スクリーンショット 2020-03-31 13.39.34(2)

●Dataflow SQL
・java, pythonで開発
  → SQLでストリーミング、バッチ
・対応サービス: Cloud Pub/Sub, BigQuery, Cloud Storage
・ウィンドウ集計: fixed, slidinng, session

●FlexRS
・一部のワーカーでプリエンプティブVMを利用できる
・max 6時間待ち
・Dataflow shuffle serviceにオフロードしてワーカーはデータを保持しない


■顧客理解を深化させるために:バンダイナムコエンターテインメントが活用するデータ統合・分析プラットフォーム

田村 雄也 さん [ バンダイナムコエンターテインメント ]
田中 大樹 さん [ バンダイナムコエンターテインメント ]

スクリーンショット 2020-03-31 14.01.51(2)

●バンダイナムコグループ
・世界で最も期待されるエンターテインメント企業グループ
・5つのユニット
  トイホビー
  ネットワークエンターテインメント
    バンダイナムコエンターテインメント
  リアルエンターテインメント
  映像音楽プロデュース
  IPクリエイション

●バンダイナムコエンターテインメント
・ビジネスモデルの一例

スクリーンショット 2020-03-31 14.04.35(2)

・重点戦略
  2000億円がネットワークコンテンツ
  1000億円が家庭用ゲーム

●データ戦略
・IPの価値を立体的に表現して最大化

スクリーンショット 2020-03-31 14.06.26(2)

・データを活用して市場規模を拡大
  IPに関心を持っているお客様に対して
  届けられているお客様の数はまだまだ
・取り得るデータを活用して
  お客様の嗜好にあった価値を届ける

●データのサイロ化
・サービスごと、デバイスごとにデータがサイロ化

スクリーンショット 2020-03-31 14.08.19(2)

●取得データの未活用
・データをとっても担当者の、正しさの証明だけだったり
・データを取っていなかったり

もっと顧客起点に→BigQueryの活用へ

●全体アーキテクチャ
・ほとんどがGCPで完結
  出口は、lookerや独自の可視化ツール

スクリーンショット 2020-03-31 14.11.43(2)

●導入の背景 ビジネス視点
・Amazon Redshiftを使っていた
・課題
  ストレージコスト
  パフォーマンス

●導入の背景 分析者視点
・SQLの書き方が一般的でなかった頃は、見送っていた
・標準SQLに対応
  集計・分析作業がしやすい

●あらゆるデータを蓄積、BQで処理・分析
・アプリ、web、EC
  →顧客DB
・アンケート、お問い合わせ、SNS
  →顧客DB

スクリーンショット 2020-03-31 14.14.37(2)

●メリット
・早い
・安い
・使いやすい

●早い
・数秒で数十億レコードをフルスキャン
・パフォーマンスを気にせず、データに集中できる
・データから検証していくことが可能に
・2016年の速度検証
  並列で処理が流れても、速度にほとんど影響しない

スクリーンショット 2020-03-31 14.20.10(2)

●コストが低い
・BigQueryとStorageを合わせたものを100として
・ストレージよりクエリにかかる料金の方が安い!
  looker組み込み、アナリストの分析で頻繁に使っているのに
・利用分だけ課金
  クエリの工夫で削減できる
・LongTermStorageで割引も聞く
・クエリ 5$/TB
  同じクエリはキャッシュが効く
  予めスキャン量を確認できる
・Tips
  Common Table Expressions
  with句で読みやすさを保持
  中間データは課金対象にならない

●使いやすい
・パフォーマンスチューニングを気にしなくて良い
  インデックス、ソートキー、保存場所がBQ側でやってくれる
  とりあえず貯めてから分析ができる
・膨大なデータを扱える
  2PBのデータを申請無しで登録できた
・プロジェクトごとに権限、費用管理できる
・プロジェクトをまたいでJoinできる
・多少非効率なクエリでも問題ない速度が出る
・一般的なBIツールをサポートしている
  民主化しやすい
・Datasetの上位概念がほしい
  Project / Dataset / Table の階層
・データカタログとしての一覧性があまりない
  データが多いので把握しづらい
  Data Catalogを整備はしているが、UIに課題

●今後の展望
・BigQuery ML
  データは揃っているので使っていきたい
  詳しくない人が触れるように
・BigQuery GIS
  位置情報もビジネスに絡めていきたい


■CDP / マーケティング DWH のトレンドと Google Cloud での実現方法

原田 憲悟 さん [ エクスチュア ]
鈴木 邦明 さん [ グーグル・クラウド・ジャパン ]

スクリーンショット 2020-03-31 15.47.22(2)

●CDPが求められる背景とその機能
・カスタマージャーニー
  商品を知ってから購入に至るまではどんどん複雑に
    気になったらスマートデバイスで調べて
    口コミやECを調べたり
    実店舗で使用感を試したり
    タッチポイントが増え、行動が複雑化
  いろいろなデータが取得できるようになっている
・自分の要望に基づく対応に期待 61%
・購入履歴からパーソナライズされたエクスペリエンスに期待 63%
・期待はどんどん引き上げられている
  消費者が何を求めているのかを把握して対応していく必要がある
・社内のあちこちに分散した顧客データ
  分析に活用できている企業は 13%
・マーケティングに関連するデータ
  コンテンツマーケ、CRM、広告
  ロイヤリティ、webやアプリの分析、SNS
  これらをつなぐ必要がある

●CDPの機能
・データ収集・管理
・ID統合
・複雑な分析
・施策実施
→複数の製品が存在

スクリーンショット 2020-03-31 15.52.44(2)

●Googleでは単一のパッケージは提供していない
・Google Cloud + Google Marketing Platform
  サービス群を組み合わせる

スクリーンショット 2020-03-31 15.53.56(2)

・基幹データ、マーケティングデータ
  →BigQuery
    →マーケティング施策

スクリーンショット 2020-03-31 15.54.50(2)

●既存CDPとの比較
・既存CDP製品
  ワンパッケージ
  長いリードタイム
    webサイトにタグを埋めて、半年運用して分析開始
  データの拡張性に制限あり
    契約形態がレコード数に依存する
    パフォーマンスが対応しきれず、絞ったり
・Googleの提供機能で実現
  必要なコンポーネントを取捨選択
  短いリードタイム
    GoogleAnalyticsやTagManagerなど既存資産を活用

●世界全体のデータ量は増加し続ける
・大量のマーケティングデータを処理できるBigQuery
・BigQueryパフォーマンスの進化
    1PBのテーブルスキャン
    2016年 245.7 sec
    2018年 113.0 sec
    2019年 4.2 sec

●移行事例:MonotaRO
・データドリブンな施策で有名
・他社製の製品を試した結果BigQueryに乗り換え
  事前に調査してから対応が必要だった
  なんでもデータを投げ込むデータレイク的な使い方ができなかった
  →あらゆるデータを集約
・迅速な分析・改善ができるようにあった
  月次集計→日次
  バッチ→リアルタイム
・セルフサービス分析が浸透
  ビジネスで分析の成果が社内に広まった
  DataPortalなどでの利用の広がり
  ビジネスプラットフォームとして活用

●エクスチュア
・Googleのサービスパートナー
・データに関するよろずや
・手を動かすコンサル会社

●改めてCDPとは
・Customer Data Platform
  顧客データを統合管理して、利活用できるようにするプラットフォーム
  活用することが重要
    つくるところに工数がかかるので、目が向きがち
    その後の活用を忘れないように
・世の中にあるCDPの例
  Tealium
  Treasure Data
  Segment
  mParticle
  Adobe Experience Platform
  など
・CDP製品は何をやってくれるの?
  複数データソースからデータをインポート
  集めたデータを名寄せ
  指定した条件に合わせてユーザ分類をつくる
  指定した外部システムにセグメントを共有
  集めたデータを可視化、分析

●既製品 vs GCPでCDP のPros/Cons
・データインポート
  既製品のほうが楽
    コネクタが用意されている
  コネクタがないソースはフルスクラッチは同じ
  必要なコネクタがマッチするか?
・データ処理
  BQが早い
    スピードに問題があることも
    BQで分析して書き戻したことも
・データ分析
  BQでSQLからBIにつなぐ
    既製品はおまけな機能
・コスト
  開発コストは掛かるが、運用フェーズに入った後はGCPの方が安い

●導入の壁
・名寄せの設計
  CDPに入ってくるwebのデータは、1:1でIDが紐付かない
  Aさん
    PC、スマホで別のメアド
    デバイスが変わればGAのcidが変わる
    twitterの裏アカウント
    オフラインのキャンペーン応募
・ITP/SameSite対応
  CDPが提供しているタグ
  ITP/SameSiteに対応していなかったらデータがまともに取れない
    リピートなど
  既製品でもITP対応が遅かったことも
  自作でタグをつくってしまうことが手っ取り早い
・セキュリティ、プライバシーポリシー
  データを触れる人の権限設定
  他社のCDPを利用する場合、他社側でどう使われているか
  オプトアウトやデータ削除に対応できるか
  既製品を使っていたとしても、免罪符にはならない

●現場からもろもろ
・何のためにCDPを入れるのか?
  製品を買う?GCPでつくる?そもそも不要?
・開発できるならGCPでつくった方が楽
・データソースがぐちゃぐちゃだったら意味がない
・開発保守は、結構負荷がかかる
・有効活用するためには消費者目線で、気持ち悪いことはしない

データを用いて良い顧客体験をつくっていきましょう


■GCP で構築する、これからの変化に対応出来るデータ分析基盤の作り方

山田 雄 さん [ リクルートテクノロジーズ ]
佐伯 嘉康 さん [ リクルートテクノロジーズ ]
白鳥 昇治 さん [ リクルートテクノロジーズ ]

スクリーンショット 2020-03-31 16.41.25(2)

●データ分析基盤のデザインパターン
・80%
  基盤エンジニアが運用に割いている割合
  開発に工数は割けない
  これをいかに削減できるか
・なぜそれほど時間がかかる?
  Scalability
    90%を意識した基盤設計
    データ量は指数関数的に増えている
  Microservices
    データソース→取得→加工→保存→分析→BI、施策
    個別にエンハンスできるように過程を分けてつくっておく

スクリーンショット 2020-03-31 16.44.55(2)

  分析ユーザ主体
    データ取得以降の過程を、分析ユーザができるような基盤
    エンジニアを介さずに
    データソース追加や新規クエリの定期実行登録など
・番外編
  基盤は一度できると使えることが当たり前
    水道ができたときは感動があったはず
    出て当たり前
    止まったときにはストレス
  基盤エンジニアのモチベーションコントロールはとても重要

●リクルートのETL課題
・SPOFが残っている
・オンプレなのでスケール限界
・シェルが残っている など
→リプレースへ

●Garuda
・ETL基盤
  本番プロダクトのデータを分析環境へつなぐ
  Pub/Subに通知して、分析者へ

スクリーンショット 2020-03-31 16.49.45(2)

・ETL要件
  Oracle / MyuSQL / Postgres
  S3 / GCS
  Salesforce / Kintone
・ETLジョブ
  DBへの同時接続数を制御したい
    本番環境に影響をださない
  データ鮮度を保ちたいジョブがある
    多数のジョブ
    いつ終わるかわからないでは問題
    優先度を管理
  ETL時間を短くしたい
・アーキテクチャ

スクリーンショット 2020-03-31 16.53.03(2)

●ETL on GKE
・ETL処理をコンテナでパーツ化
・ワークフロー管理ジョブでコンテナ実行を制御
・オーケストレーションとリトライをk8sに任せる
・GCSをfileでハブにすることで処理しやすく

スクリーンショット 2020-03-31 16.54.16(2)

・ETL = embulk + cloudsdk
  input pluginが多数
  filterでクレンジング、型変換を共通化
  bq loadでシンプルに

スクリーンショット 2020-03-31 16.55.06(2)

●データ更新方式
・全レコードを洗替
・全レコードを連携日付のパーティションとして積み上げ
  更新のあるテーブルの日付断面で履歴を検索したい
・更新日付キー + 主キー で差分更新
  予約、在庫などのトランザクションテーブル
  データ連携を早くする必要がある

スクリーンショット 2020-03-31 16.57.15(2)

・日付パーティションによる差分更新
  レコード更新のないログテーブル

スクリーンショット 2020-03-31 16.57.55(2)

●ETLジョブの実行管理
・要件
  並列度を制御したい
  優先度が高いものから実行したい
・k8s cronjobに変換
・優先度別にpubsubキュー
・ディスパッチャーpodが優先度順にキューとステータスを見て、並列数を見てk8s job起動
・ジョブステータスはDB管理、ディスパッチャーやk8s jobから書き込み

スクリーンショット 2020-03-31 17.00.27(2)

●ネットワーク
・専用線とCloudVPNでつなぐ
  k8s でぽこぽこ立てるとprivate IPが枯渇
・接続とジョブでVPCを分離 + 内部NAT

●API / WebApp
・ETLの設定を抽象化してセルフサービス化
  ジョブの設定、実行、停止
  embulkの設定
  APIを変えなければ、裏は変更できる
・板挟みの役割をシステムに

●コストの話
・ほぼGCE、GCS
  GCEはジョブ数で変動
  GCSは生データ
・監視が影響を与えた
  すべてStackdriverに流そうとしていた
  ジョブの観点をkube-state-metricsで
  → stackdriver custom metricsが多数に

スクリーンショット 2020-03-31 17.08.18(2)

  Pricing Calculatorでチェックしよう
  最終的にcustom metricsは廃止
  prometheus、linkerdでGKEのストレージ側に変更
・ストレージコストも無視できない
  emblkの出力はCSV
  GKEのストレージ節約で、Embulk→GCS
    stdin/out を経由して gsutil cp で

●ログの話
・実装コンポーネントが多数
  →ログ書式がバラバラ
  致命的ではないので後回し

●BigQueryロード仕様
・bq load の --allow_quoted_newlines があると4GBが上限になることも
・Embulkではstdoutに出すだけ
・パイプのプログラムで制御
  CSV完結
  4GBに近づいている
  gsutils を閉じて、開き直す

●まとめ
・マネージドなサービス、OSSで開発工数削減
・「必要なリソースを必要な分だけ」の追求で圧倒的なコストダウン
・API / WebUI でセルフサービス運用


■感想

1PBのスキャンが4.2秒、頻繁な分析を掛けてもクエリコストがストレージコストより安い、標準SQL、BI連携、2PBでも緩和申請不要。よく聞いてはいましたが、BigQueryの速い、安い、使いやすいに改めて驚きました!

リードタイム、コストのバランスを考えて、CDPは製品を買うのが妥当なのかなと考えていましたが、BigQueryの圧倒的な速さ、安さ、使いやすさに支えられて自作や、製品との組み合わせが現実的になっているんですね!

データパイプラインをweb UIとAPIでセルフサービス化、パイプライン内の処理をkubernetes CronJobでつけ外しできるようにするアーキテクチャ、すてきな発想ですね!

たくさんの学びをいただけました。登壇者の皆さん、運営の皆さん、ありがとうございました!


この記事が参加している募集

イベントレポ

いつも応援していただいている皆さん支えられています。