Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
building-evolutionary-data-warehouse
Search
Sotaro Tanaka
February 13, 2019
Technology
2
10k
building-evolutionary-data-warehouse
2019/02/13にエムスリー社さんで開催されたData Pipeline Casual Talkでの登壇スライドです。 #DPCT
Sotaro Tanaka
February 13, 2019
Tweet
Share
More Decks by Sotaro Tanaka
See All by Sotaro Tanaka
ABEMAはなぜセマンティックレイヤーに挑戦しているのか?
tanakarian
0
470
データ基盤の○層構造を独り歩きさせない データモデリング設計 Data Ops Night #1
tanakarian
3
4.2k
dbtを活用したデータ基盤の 論理・物理設計の現在地と振り返り / data warehouse logic design by using dbt
tanakarian
8
15k
データ分析基盤の障害を未然に防ぐためのチェックリスト / checklist for preventing incidents of data management system
tanakarian
1
13k
データの価値を失わないためのData Reliability
tanakarian
7
11k
Other Decks in Technology
See All in Technology
【詳説】コンテンツ配信 システムの複数機能 基盤への拡張
hatena
0
290
わたしがEMとして入社した「最初の100日」の過ごし方 / EMConfJp2025
daiksy
14
5.4k
LINEギフトにおけるバックエンド開発
lycorptech_jp
PRO
0
400
開発者のための FinOps/FinOps for Engineers
oracle4engineer
PRO
2
230
日経のデータベース事業とElasticsearch
hinatades
PRO
0
260
EMConf JP 2025 懇親会LT / EMConf JP 2025 social gathering
sugamasao
2
210
"TEAM"を導入したら最高のエンジニア"Team"を実現できた / Deploying "TEAM" and Building the Best Engineering "Team"
yuj1osm
1
230
DeepSeekとは?何がいいの? - Databricksと学ぶDeepSeek! 〜これからのLLMに備えよ!〜
taka_aki
1
170
いまからでも遅くない!コンテナでWebアプリを動かしてみよう!コンテナハンズオン編
nomu
0
170
株式会社Awarefy(アウェアファイ)会社説明資料 / Awarefy-Company-Deck
awarefy
3
11k
Ruby on Railsで持続可能な開発を行うために取り組んでいること
am1157154
3
160
エンジニアリング価値を黒字化する バリューベース戦略を用いた 技術戦略策定の道のり
kzkmaeda
7
3.2k
Featured
See All Featured
Automating Front-end Workflow
addyosmani
1369
200k
Agile that works and the tools we love
rasmusluckow
328
21k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.3k
Rebuilding a faster, lazier Slack
samanthasiow
80
8.9k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Being A Developer After 40
akosma
89
590k
4 Signs Your Business is Dying
shpigford
183
22k
Documentation Writing (for coders)
carmenintech
68
4.6k
Practical Orchestrator
shlominoach
186
10k
BBQ
matthewcrist
87
9.5k
Bash Introduction
62gerente
611
210k
Producing Creativity
orderedlist
PRO
344
40k
Transcript
Copyright © 2019 eureka, Inc. All rights reserved. データ基盤を「育てる」ための技術 Sotaro
Tanaka 2019/02/13 Data Pipeline Casual Talk #DPCT
Copyright © 2019 eureka, Inc. All rights reserved. 1. 自己紹介
2. eureka & PairsとBIチームの紹介 3. 「データ基盤」に求められるモノ ※Pairsの場合 4. データ基盤を「育てる」ための技術 今日話すこと
Copyright © 2019 eureka, Inc. All rights reserved. Sotaro Tanaka
@tanakarian Data 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-a nd-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-29ba3f cbffe0 おまけ : 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. ご清聴ありがとうございました!