Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

Copyright © 2019 eureka, Inc. All rights reserved.

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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はどんどん進化していく。 必要なときに取り入れられるように。 腐敗防止層で、パイプラインの拡張や変更に強く

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

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