2019/02/13にエムスリー社さんで開催されたData Pipeline Casual Talkでの登壇スライドです。 #DPCT
Copyright © 2019 eureka, Inc. All rights reserved.データ基盤を「育てる」ための技術Sotaro Tanaka2019/02/13Data Pipeline Casual Talk #DPCT
View Slide
Copyright © 2019 eureka, Inc. All rights reserved.1. 自己紹介2. eureka & PairsとBIチームの紹介3. 「データ基盤」に求められるモノ ※Pairsの場合4. データ基盤を「育てる」ための技術今日話すこと
Copyright © 2019 eureka, Inc. All rights reserved.Sotaro Tanaka @tanakarianData Engineer @ BI Team● 24歳(大学院中退) / 新卒● Pairsのデータ基盤の設計/構築/運用を主に担当(※分析もやる)● 趣味はアニメとゲーム1. 自己紹介
Copyright © 2019 eureka, Inc. All rights reserved.2. About eureka & Pairs会社概要従業員数- 130名(平均年齢28.5歳)事業内容- 自社サービス企画・開発・運営- オンラインデーティングサービス「 Pairs- カップル専用アプリ「 Couples」
Copyright © 2019 eureka, Inc. All rights reserved.3. 「データ基盤」に求められるモノ※ Pairsの場合
Copyright © 2019 eureka, Inc. All rights reserved.Pairsのデータ基盤 ≒ eurekaのデータ基盤です※ 複数サービスを展開している企業の横断のデータ基盤や、複数クライアントのデータを管理するような基盤の話ではありません前提
Copyright © 2019 eureka, Inc. All rights reserved.Q. データ基盤とは何ですか?A(?). データの統合? 「民主化」? 集約?A(?). 数字出しの自動化?A(?). DataLake, DataWarehouse, DataMartを作ること?ところで「データ基盤」とは何ですか?
Copyright © 2019 eureka, Inc. All rights reserved.データ基盤?
Copyright © 2019 eureka, Inc. All rights reserved.
Copyright © 2019 eureka, Inc. All rights reserved.「基盤」という言葉はわかりにくい?● ポジションや職種によってイメージするものが結構違う○ アナリスト「Tableauでしょ?○ エンジニア「Pub/SubでDataflowでBigQueryでしょ?」● 「利用者からの期待」と「実際に作っているもの」の乖離○ 想定しているモノが違う ->コミュニケーションミスによる要件の肥大化
Copyright © 2019 eureka, Inc. All rights reserved.どの作業を「基盤」で置き換えるか?から考えてみる
Copyright © 2019 eureka, Inc. All rights reserved.Pairsにおける分析作業の主なフローKPI設計PO(分析依頼者)からの相談データの抽出/加工/整形データの可視化依頼者への共有考察 / 提案
Copyright © 2019 eureka, Inc. All rights reserved.BIチーム5人でこれら全てをやっているKPI設計PO(分析依頼者)からの相談データの抽出/加工/整形データの可視化依頼者への共有考察 / 提案
Copyright © 2019 eureka, Inc. All rights reserved.しかし、依頼の増加 → 作業量の増加で詰んだKPI設計PO(分析依頼者)からの相談データの抽出/加工/整形データの可視化依頼者への共有考察 / 提案● 同じような抽出/加工作業の繰り返しにリソースをほとんど投下していた
Copyright © 2019 eureka, Inc. All rights reserved.人間スケールアウト?基盤?● 人を増やして、スケールアウトというのもひとつの手だと思う○ 特にまだ分析やデータを見る文化が根付いていないときは基盤とか考えるよりも先にやることがある○ PoC段階でもそう● Pairsでは、この問題を「データ基盤」を作ることで解決を図った○ “Keep Small”という「むやみに作業人員は増やさない」考え方
Copyright © 2019 eureka, Inc. All rights reserved.データ基盤=ここの作業を標準化し、自動化するKPI設計PO(分析依頼者)からの相談データの抽出/加工/整形データの可視化依頼者への共有考察 / 提案
Copyright © 2019 eureka, Inc. All rights reserved.抽出 / 加工 / 整形 => データパイプラインKPI設計PO(分析依頼者)からの相談データの抽出/加工/整形データの可視化依頼者への共有考察 / 提案
Copyright © 2019 eureka, Inc. All rights reserved.可視化、共有 => 各種BIツールKPI設計PO(分析依頼者)からの相談データの抽出/加工/整形データの可視化依頼者への共有考察 / 提案
Copyright © 2019 eureka, Inc. All rights reserved.データパイプライン大事
Copyright © 2019 eureka, Inc. All rights reserved.4. データ基盤を「育てる」ための技術
Copyright © 2019 eureka, Inc. All rights reserved.データ基盤なんとなくわかったパイプライン重要なのもわかったしかし…うーーん
Copyright © 2019 eureka, Inc. All rights reserved.エウレカBIチームで利用している分析依頼用のJIRAサービスデスク● たとえば、「ログイン」の分析だけで見ても、様々な切り口での分析依頼がある。● これらに全て答えられる「基盤」が作れるのか?そもそも標準化、自動化とかできるの?非公開です。ごめんなさい。
Copyright © 2019 eureka, Inc. All rights reserved.「最初にカッチリ決めて作る」はほぼ不可能● プロダクトは成長し続け、機能追加や仕様変更は日常茶飯事である○ それらにツギハギで対応していっても変なものしかできない● 不確実性と常に向き合いつつ、データモデルを洗練させ続ける必要がある
Copyright © 2019 eureka, Inc. All rights reserved.「環境や条件は変わる」ことを前提に、むしろ「進化させていく」ように作る
Copyright © 2019 eureka, Inc. All rights reserved.つまり、データ基盤を「育てる」ものと捉える(と言わせてください)
Copyright © 2019 eureka, Inc. All rights reserved.「変わってしまう」よりも、「進化」/「育てる」「…進化とは、目的に沿った、絶え間なく変化する環境で生き残ることができるシステムを持つことである。」[1]『進化的アーキテクチャ−絶え間ない変化を支える』P.18
Copyright © 2019 eureka, Inc. All rights reserved.● 育てる○ 「アジャイル形式でプロダクトオーナー (PO)らと連携し、DWHを洗練させる」● 育てるための技術○ 「PoC段階の素早い検証を可能にする BigQueryのView機能, Jupyter」○ 「腐敗防止層で、パイプラインの拡張や変更に強くする」○ 「パイプラインの各フェーズでの要件 /レベルを定め、テストする」■ ログ転送、バルクローダー、分散メッセージング、 ETL、データストア、etc…データ基盤を「育てる」ための技術
Copyright © 2019 eureka, Inc. All rights reserved.● 「育てる」部分は主にここ○ どんなDWHを作っていくのか?○ POが一番ドメインエキスパートに近い存在○ POと連携をして、分析対象について知り、データモデルに反映するPOらと連携し、DWHを洗練させるhttps://amzn.to/2HCC3hj
Copyright © 2019 eureka, Inc. All rights reserved.PoC段階の素早い検証を可能にするBigQueryView● BigQueryのView機能○ プロダクトの機能追加や POからの要望で必要なデータは様々○ データモデルの修正や項目追加はすぐにはDWHに反映させない○ まずBigQueryでViewを作成し、実用に耐えるものか価値があるものかを確認○ 共通化できるものや継続的にみるものは、DWHに置くため、パイプラインに載せる
Copyright © 2019 eureka, Inc. All rights reserved.非公開です。ごめんなさい。PoC段階の素早い検証を可能にするJupyter● Jupyter (PoC段階の予測モデル作成など)○ notebook内でデータ前処理〜モデルのインプット作成、モデリングまで完結○ notebookをそのまま関係者に共有し、価値を確認○ 価値があると分かれば、予測タスクをパイプラインに載せる
Copyright © 2019 eureka, Inc. All rights reserved.※ イメージ (たとえばCloud Composerを使う場合)● コアになるデータの処理ロジックと、各サービスAPIとの接合部分は分ける。テストもしやすくなる。腐敗防止層で、パイプラインの拡張や変更に強くデータ処理ロジック 接合部分 Cloud Composer(API)
Copyright © 2019 eureka, Inc. All rights reserved.https://medium.com/bluecore-engineering/were-all-using-airflow-wrong-and-how-to-fix-it-a56f14cb0753 (モチベーションは少し異なるが、似た話 )● データパイプライン関連のクラウドサービスやOSSはどんどん進化していく。必要なときに取り入れられるように。腐敗防止層で、パイプラインの拡張や変更に強く
Copyright © 2019 eureka, Inc. All rights reserved.● Pairsの場合(まだできていない。が、対象は以下あたり)● バルクローダー : Embulk with Digdag● ログ転送 : fluentd● 分散メッセージング : Cloud Pub/Sub● ETL : Cloud Dataflow● ワークフロー管理 : Cloud Composer● データストア : BigQuery, Cloud Storage各フェーズでの要件/レベルを定め、テストする
Copyright © 2019 eureka, Inc. All rights reserved.● 正直どれもまだ満足にできていない。やっと手をつけ始めた状況。○ 一番大事な要素だとは思っている○ これまでは、とりあえずより良さそうなものを導入してきた● このDPCTの場で、「〜性」の話やSLA設定、テストとか皆さんどうしているかをお話したいです。それ、Pairsのデータ基盤ではできてるの?
Copyright © 2019 eureka, Inc. All rights reserved.● 昨年のアドカレでCloud Composerのこと書きました● https://medium.com/eureka-engineering/data-mgmt-cloud-composer-29ba3fcbffe0おまけ : Cloud Composer(Airflow)を使っています
Copyright © 2019 eureka, Inc. All rights reserved.文献● [1] 『進化的アーキテクチャ−絶え間ない変化を支える』ニール・フォード, レベッカ・パーソンズ, パトリック・クア著 島田浩二訳オライリージャパンhttps://www.oreilly.co.jp/books/9784873118567/
Copyright © 2018 eureka, Inc. All rights reserved.ご清聴ありがとうございました!