$30 off During Our Annual Pro Sale. View Details »

building-evolutionary-data-warehouse

Sotaro Tanaka
February 13, 2019

 building-evolutionary-data-warehouse

2019/02/13にエムスリー社さんで開催されたData Pipeline Casual Talkでの登壇スライドです。 #DPCT

Sotaro Tanaka

February 13, 2019
Tweet

More Decks by Sotaro Tanaka

Other Decks in Technology

Transcript

  1. Copyright © 2019 eureka, Inc. All rights reserved.
    データ基盤を「育てる」ための技術
    Sotaro Tanaka
    2019/02/13
    Data Pipeline Casual Talk #DPCT

    View Slide

  2. Copyright © 2019 eureka, Inc. All rights reserved.
    1. 自己紹介
    2. eureka & PairsとBIチームの紹介
    3. 「データ基盤」に求められるモノ ※Pairsの場合
    4. データ基盤を「育てる」ための技術
    今日話すこと

    View Slide

  3. Copyright © 2019 eureka, Inc. All rights reserved.
    Sotaro Tanaka @tanakarian
    Data Engineer @ BI Team
    ● 24歳(大学院中退) / 新卒
    ● Pairsのデータ基盤の設計/構築/運用を主に
    担当(※分析もやる)
    ● 趣味はアニメとゲーム
    1. 自己紹介

    View Slide

  4. Copyright © 2019 eureka, Inc. All rights reserved.
    2. About eureka & Pairs
    会社概要
    従業員数
    - 130名(平均年齢28.5歳)
    事業内容
    - 自社サービス企画・開発・運営
    - オンラインデーティングサービス「 Pairs
    - カップル専用アプリ「 Couples」

    View Slide

  5. Copyright © 2019 eureka, Inc. All rights reserved.
    3. 「データ基盤」に求められるモノ
    ※ Pairsの場合

    View Slide

  6. Copyright © 2019 eureka, Inc. All rights reserved.
    Pairsのデータ基盤 ≒ eurekaのデータ基盤です
    ※ 複数サービスを展開している企業の横断のデータ基盤や、
    複数クライアントのデータを管理するような基盤の話ではありません
    前提

    View Slide

  7. Copyright © 2019 eureka, Inc. All rights reserved.
    Q. データ基盤とは何ですか?
    A(?). データの統合? 「民主化」? 集約?
    A(?). 数字出しの自動化?
    A(?). DataLake, DataWarehouse, DataMartを作ること?
    ところで「データ基盤」とは何ですか?

    View Slide

  8. Copyright © 2019 eureka, Inc. All rights reserved.
    データ基盤?

    View Slide

  9. Copyright © 2019 eureka, Inc. All rights reserved.

    View Slide

  10. Copyright © 2019 eureka, Inc. All rights reserved.
    「基盤」という言葉はわかりにくい?
    ● ポジションや職種によってイメージするものが結構違う
    ○ アナリスト「Tableauでしょ?
    ○ エンジニア「Pub/SubでDataflowでBigQueryでしょ?」
    ● 「利用者からの期待」と「実際に作っているもの」の乖離
    ○ 想定しているモノが違う ->コミュニケーションミスによる要件の肥大化

    View Slide

  11. Copyright © 2019 eureka, Inc. All rights reserved.
    どの作業を「基盤」で置き換えるか?
    から考えてみる

    View Slide

  12. Copyright © 2019 eureka, Inc. All rights reserved.
    Pairsにおける分析作業の主なフロー
    KPI設計
    PO(分析依頼者)
    からの相談
    データの
    抽出/加工/整形
    データの可視化
    依頼者への共有
    考察 / 提案

    View Slide

  13. Copyright © 2019 eureka, Inc. All rights reserved.
    BIチーム5人でこれら全てをやっている
    KPI設計
    PO(分析依頼者)
    からの相談
    データの
    抽出/加工/整形
    データの可視化
    依頼者への共有
    考察 / 提案

    View Slide

  14. Copyright © 2019 eureka, Inc. All rights reserved.
    しかし、依頼の増加 → 作業量の増加で詰んだ
    KPI設計
    PO(分析依頼者)
    からの相談
    データの
    抽出/加工/整形
    データの可視化
    依頼者への共有
    考察 / 提案
    ● 同じような抽出/加工作業の繰り返しにリソースをほとんど投下していた

    View Slide

  15. Copyright © 2019 eureka, Inc. All rights reserved.
    人間スケールアウト?基盤?
    ● 人を増やして、スケールアウトというのもひとつの手だと思う
    ○ 特にまだ分析やデータを見る文化が根付いていないときは基盤とか考えるよりも先にやること
    がある
    ○ PoC段階でもそう
    ● Pairsでは、この問題を「データ基盤」を作ることで解決を図った
    ○ “Keep Small”という「むやみに作業人員は増やさない」考え方

    View Slide

  16. Copyright © 2019 eureka, Inc. All rights reserved.
    データ基盤=ここの作業を標準化し、自動化する
    KPI設計
    PO(分析依頼
    者)からの相談
    データの
    抽出/加工/整形
    データの可視化
    依頼者への共有
    考察 / 提案

    View Slide

  17. Copyright © 2019 eureka, Inc. All rights reserved.
    抽出 / 加工 / 整形 => データパイプライン
    KPI設計
    PO(分析依頼
    者)からの相談
    データの
    抽出/加工/整形
    データの可視化
    依頼者への共有
    考察 / 提案

    View Slide

  18. Copyright © 2019 eureka, Inc. All rights reserved.
    可視化、共有 => 各種BIツール
    KPI設計
    PO(分析依頼
    者)からの相談
    データの
    抽出/加工/整形
    データの可視化
    依頼者への共有
    考察 / 提案

    View Slide

  19. Copyright © 2019 eureka, Inc. All rights reserved.
    データパイプライン大事

    View Slide

  20. Copyright © 2019 eureka, Inc. All rights reserved.
    4. データ基盤を「育てる」ための技術

    View Slide

  21. Copyright © 2019 eureka, Inc. All rights reserved.
    データ基盤なんとなくわかった
    パイプライン重要なのもわかった
    しかし…うーーん

    View Slide

  22. Copyright © 2019 eureka, Inc. All rights reserved.
    エウレカBIチームで利用している分析依頼用の
    JIRAサービスデスク
    ● たとえば、
    「ログイン」の分析だけで見ても、様々
    な切り口での分析依頼がある。
    ● これらに全て答えられる「基盤」が作れ
    るのか?
    そもそも標準化、自動化とかできるの?
    非公開です。
    ごめんなさい。

    View Slide

  23. Copyright © 2019 eureka, Inc. All rights reserved.
    「最初にカッチリ決めて作る」はほぼ不可能
    ● プロダクトは成長し続け、機能追加や仕様変更は日常茶飯事である
    ○ それらにツギハギで対応していっても変なものしかできない
    ● 不確実性と常に向き合いつつ、データモデルを洗練させ続ける必要がある

    View Slide

  24. Copyright © 2019 eureka, Inc. All rights reserved.
    「環境や条件は変わる」ことを前提に、
    むしろ「進化させていく」ように作る

    View Slide

  25. Copyright © 2019 eureka, Inc. All rights reserved.
    つまり、データ基盤を「育てる」もの
    と捉える(と言わせてください)

    View Slide

  26. Copyright © 2019 eureka, Inc. All rights reserved.
    「変わってしまう」よりも、「進化」/「育てる」
    「…進化とは、目的に沿った、絶え間なく変化する環境で
    生き残ることができるシステムを持つことである。」
    [1]『進化的アーキテクチャ−絶え間ない変化を支える』
    P.18

    View Slide

  27. Copyright © 2019 eureka, Inc. All rights reserved.
    ● 育てる
    ○ 「アジャイル形式でプロダクトオーナー (PO)らと連携し、DWHを洗練させる」
    ● 育てるための技術
    ○ 「PoC段階の素早い検証を可能にする BigQueryのView機能, Jupyter」
    ○ 「腐敗防止層で、パイプラインの拡張や変更に強くする」
    ○ 「パイプラインの各フェーズでの要件 /レベルを定め、テストする」
    ■ ログ転送、バルクローダー、分散メッセージング、 ETL、データストア、etc…
    データ基盤を「育てる」ための技術

    View Slide

  28. Copyright © 2019 eureka, Inc. All rights reserved.
    ● 「育てる」部分は主にここ
    ○ どんなDWHを作っていくのか?
    ○ POが一番ドメインエキスパートに近い存在
    ○ POと連携をして、分析対象について知り、
    データモデルに反映する
    POらと連携し、DWHを洗練させる
    https://amzn.to/2HCC3hj

    View Slide

  29. Copyright © 2019 eureka, Inc. All rights reserved.
    PoC段階の素早い検証を可能にするBigQueryView
    ● BigQueryのView機能
    ○ プロダクトの機能追加や POからの要望で
    必要なデータは様々
    ○ データモデルの修正や項目追加は
    すぐにはDWHに反映させない
    ○ まずBigQueryでViewを作成し、
    実用に耐えるものか価値があるものかを確認
    ○ 共通化できるものや継続的にみるものは、
    DWHに置くため、パイプラインに載せる

    View Slide

  30. Copyright © 2019 eureka, Inc. All rights reserved.
    非公開です。
    ごめんなさい。
    PoC段階の素早い検証を可能にするJupyter
    ● Jupyter (PoC段階の予測モデル作成など)
    ○ notebook内でデータ前処理〜モデルの
    インプット作成、モデリングまで完結
    ○ notebookをそのまま関係者に共有し、
    価値を確認
    ○ 価値があると分かれば、予測タスクを
    パイプラインに載せる

    View Slide

  31. Copyright © 2019 eureka, Inc. All rights reserved.
    ※ イメージ (たとえばCloud Composerを使う場合)
    ● コアになるデータの処理ロジックと、
    各サービスAPIとの接合部分は分ける。
    テストもしやすくなる。
    腐敗防止層で、パイプラインの拡張や変更に強く
    データ処理ロジック 接合部分 Cloud Composer(API)

    View Slide

  32. Copyright © 2019 eureka, Inc. All rights reserved.
    https://medium.com/bluecore-engineering/were-all-using-airflow-wrong-a
    nd-how-to-fix-it-a56f14cb0753 (モチベーションは少し異なるが、似た話 )
    ● データパイプライン関連のクラウドサービス
    やOSSはどんどん進化していく。
    必要なときに取り入れられるように。
    腐敗防止層で、パイプラインの拡張や変更に強く

    View Slide

  33. Copyright © 2019 eureka, Inc. All rights reserved.
    ● Pairsの場合(まだできていない。が、対象は以下あたり)
    ● バルクローダー : Embulk with Digdag
    ● ログ転送 : fluentd
    ● 分散メッセージング : Cloud Pub/Sub
    ● ETL : Cloud Dataflow
    ● ワークフロー管理 : Cloud Composer
    ● データストア : BigQuery, Cloud Storage
    各フェーズでの要件/レベルを定め、テストする

    View Slide

  34. Copyright © 2019 eureka, Inc. All rights reserved.
    ● 正直どれもまだ満足にできていない。やっと手をつけ始めた状況。
    ○ 一番大事な要素だとは思っている
    ○ これまでは、とりあえずより良さそうなものを導入してきた
    ● このDPCTの場で、「〜性」の話やSLA設定、テストとか
    皆さんどうしているかをお話したいです。
    それ、Pairsのデータ基盤ではできてるの?

    View Slide

  35. Copyright © 2019 eureka, Inc. All rights reserved.
    ● 昨年のアドカレでCloud Composerのこと書きました
    ● https://medium.com/eureka-engineering/data-mgmt-cloud-composer-29ba3f
    cbffe0
    おまけ : Cloud Composer(Airflow)を使っています

    View Slide

  36. Copyright © 2019 eureka, Inc. All rights reserved.
    文献
    ● [1] 『進化的アーキテクチャ−絶え間ない変化を支える』ニール・フォード, レベッカ・パーソンズ, パトリック・クア著 島田浩二訳
    オライリージャパン
    https://www.oreilly.co.jp/books/9784873118567/

    View Slide

  37. Copyright © 2018 eureka, Inc. All rights reserved.
    ご清聴ありがとうございました!

    View Slide