ユーザに価値を届けるためのデータプラットフォーム
の考え方
Oct 23, 2019
Daisuke Watanabe
ECBD. Dept.
Rakuten, Inc.
2* https://search.rakuten.co.jp/search/mall/%E7%A6%8F%E5%B2%A1%E3%80%80%E6%98%8E%E5%A4%AA%E5%AD%90/?f=1&grp=product 2019/10/04
3
楽天市場の始まり
地方の商店や大きな店舗を持たない個人商店でも、
全国規模で展開する大企業と同じ土俵で戦えるよう
にしたいという情熱を持っていました。
https://rakuten.today/blog-ja/founding-story-j.html 2019/10/11
4
宇宙人って言われたことないですか?
@%^*$#@^$&#&#@#
5
アプリケーションエンジニアでした
プロジェクト
スケジュール
ビジネス要望
新機能
バッチジョブ
フロントアプリ
どのプラットフォーム
どの言語
6
こういうことないですか?
@%^*$#@^$&#&#@#
(テスト,フレームワーク,運
用,デグレ,STG,デプロイ,整
合性の検証…)
2ヶ月
新しいレポートを
1週間位でできんか?
SQL書くだけやろ?
じゃあ、自分でやるわ。
引き継ぎ困難
運用難しい・一部手作業
ビジネスに必要なジョブ
7
データプラットフォームエンジニアに転身
店舗がよりビジネスを
やりやすくするために
必要なものを届けよう
ぼく
簡単に開発できるし、
ビジネスの価値に
フォーカスできるぞ
開発を最速にで
きる仕組み作る
8
自己紹介
Daigoro (Daisuke Watanabe)
Role : Business Data platform Group, Assistant Manager
Job : Data Platform engineer
Interest Tech : DevOps / BigData / Programming
Favorite topic : Engineer Culture
Placed : Osaka > Paris > Tokyo > Fukuoka
9
何考えてる人なのか
組織
プロダクト技術
開発 ビジネス ユーザ
エンジニアカルチャー
10
今日話さないこと
• ユーザストーリーマッピング
• インパクトマッピング
• ペルソナ分析
• インセプションデッキ
• Product Discovery
• カスタマージャーニー
• データ分析のテクニック
• 機械学習
• エンジニアカルチャー
11
今日話すこと
12
良いデータプラットフォームは
ビジネスサイクルを早くし、
ユーザへの価値の提供を早くし、
技術的負債を減らせる
=
きっともっと愛される(エンジニアにも愛されたい)
13
アジェンダ
• サイクルとは
• データプラットフォームの役割
• サイクルとデータプラットフォーム
• 実際どうだったか
• DataPlatformを成長させる技術
14
サイクルの例
• 継続的改善手法
• PDCA
• STPD
• 開発手法等
• アジャイル
• スクラム
• DevOps
• サイクルの基本
• Idea・仮設
• Try
• Feedback
https://note.mu/bangucs/n/nef481150e6c8
15
ビジネスと開発のサイクル
• ビジネス → マーケット
• 変化を起こす
• 開発 → ビジネス
• サービスをリリース・改善
• 開発 → ビジネス
• 結果の確認のレポート
• データの加工し、サービス利用
マーケット
ビジネス
開発
サービス
レポート
加工
16
アジェンダ
• サイクルとは
• データプラットフォームの役割
• サイクルとデータプラットフォーム
• 実際どうだったか
• DataPlatformを成長させる技術
17
ビッグデータとは
• データ : 単一のプロセスやサーバで処理するのが困難な量
• テラバイト以上などが一般的
• 解析・処理 : 莫大なデータへの並列処理
• Hadoop, Sparkなど
• データマイニング : 莫大なデータから新たな価値を見つけること
18
簡単にデータプラットフォームを説明
データを集めて、統合・加工し、提供が役割
→ 分析・新規サービス向けのデータ作成・価値の発見
DataLake DWH
Catalog
BI
ML
ETL
System
Report
19
できること
• 分散
• データの蓄積
• 分散処理の力
• データ
• 複数のデータソースの加工・分析
• 共有化と再利用
• 2次加工3次加工データの作成と提供
• 価値の発掘
• 非構造データも構造データも処理可能
• データマイニング
• 機械学習
20
楽天市場の現在
1億人以上(ログイン会員数) *
3.4兆円 (国内EC流通総額)(2018) ***
264,389,685商品(2019年10月1日現在)
**
48,467店舗(2019年10月1日現在) **
以上
* https://corp.rakuten.co.jp/ 2019/01/21
** https://www.rakuten.co.jp/ 2019/10/05
*** https://corp.rakuten.co.jp/investors/documents/results/2018.html 2019/10/05
21
楽天全体の
クラスターの数: 4
各クラスターのサーバ数 : 約 420 台
各HDFS capacity : 約 30 PB
22
アジェンダ
• サイクルとは
• データプラットフォームの役割
• サイクルとデータプラットフォーム
• 実際どうだったか
• DataPlatformを成長させる技術
23
ビジネスと開発のサイクル
• ビジネス → マーケット
• 変化を起こす
• 開発 → ビジネス
• サービスをリリース・改善
• 開発 → ビジネス
• 結果の確認のレポート
• データの加工し、サービス利用
マーケット
ビジネス
開発
サービス
レポート
加工
24
レポート
加工
プラットフォームが加わると
• ビジネス → マーケット
• 変化を起こす
• 開発 → ビジネス
• サービスをリリース・改善
• 開発 → ビジネス
• 結果の確認のレポート
• データの加工し、サービス利用
• マーケット → データプラットフォーム
• 結果を収集
• データプラットフォーム → ビジネス
• 結果のデータを分析
• データプラットフォーム → 開発
• データを追加・加工・利用
マーケット
ビジネス
開発
データプラット
フォーム
サービス
25
データプラットフォームが目指す方向
• ビジネス
• レポートは自分で作れる
• より自由に分析できる
• データドリブン
• 開発
• 負債をアプリに抱えさせない
• 複雑な部分を簡略化・共通化
• ビジネス貢献に集中
マーケット
ビジネス
開発
データプラット
フォーム
サービス
26
27
アジェンダ
• サイクルとは
• データプラットフォームの役割
• サイクルとデータプラットフォーム
• 実際どうだったか
• DataPlatformを成長させる技術
28
エンジニア的に
経験してわかったこと
29
運用するだけでも大変、改善が大変
運用の大変さ
• 常にデータの量も増える(一年で 20PB → 40PB )
• ユーザの増加により要望とデータの複雑化
• 高すぎるサービスレベル
• 分散処理は予期せぬフリーズが起こりやすい
• なぜかデータには意図せぬ事が起きる
改善する恐怖(ビッグデータを扱う基盤は複雑)
• Hiveのversion上げたら”left outer join”が違う結果を返すようになった
• Javaログの出力方式変えたら、データが半分以上壊れた
• On memory処理に変えたら処理時間が20倍になった
30
いいこともあるよ
• トレンド技術なので変化早く幅広い
• ビッグデータ系
• 機械学習
• DevOps系
• 貢献できる範囲が広い
• 技術的な可能性がビジネスの可能性を大きく広げる
• プロダクトフォーカス
• エンジニアのミッションは常に技術を通してより良くすること
• あるべき姿を追い求めることができる
31
データプラットフォーム ベスト プラクティス
• システムのフローをできるだけシンプルに
• データをアプリだけのためではなく、分析も想定にいれて設計する
• データを捨てない、すべてのデータになにか価値がある
• 認可・認証の管理を怠らない
• データリネージを正しく管理して、データクオリティを守る
• データもクエリもオーナーを明確にしないと、2年後に管理できなくなる
• 共通化を可能な限り進めないと、同じロジックのクエリが大量になる。
• データはいろいろと消えるので、バックアップは大切に。
• 会社の動向を考え、プロアクティブにプラットフォームを進化させる
• プロジェクトベースではなく、プロダクトベースで考える
• DevOpsはプラットフォームの開発に合う
32
データプラットフォームのいま
33
データプラットフォームへの改善
改善
• DevOpsカルチャー
• 壊しても戻せるバックアップとBCP
• Scalabilityの向上
• 自動復旧。夜中の緊急対応を月10以上からほぼ0に。
• システムのブラックボックスをクリアにして、問い合わせを減らす
• 開発チームがひと目で挙動を理解でき変更できる
将来
• データのクオリティと複雑性の低減
• リアルタイムデータとHistoryとマスターデータの融合
34
プラットフォームの数字
30以上のデータソース
400以上のユースケース
日8000以上のクエリ(BI除く)
週1以上で改善リリース
1年以上大きなトラブルなし
35
BIの導入ケースを
一つ紹介したい。
36
ってなにか
• 発見
• 仮説検証
• 分析
37
よくあること
@%^*$#@^$&#&#@#
(みんなが分析できるように
最新のすごいBIツールを導
入したよ、どうやってビジ
ネス運用するか知らんけど)
なんか、すごい分析が
できるらしいBIっても
のを渡されたけど、ど
う分析するんだ。。
支社A 支社B 支社C
教育体制
38
プロジェクトメンバー
エバンジェリスト エバンジェリスト エバンジェリスト
ECC ECC ECC
企画 導入 展開 定着
ナレッジ共有フローEvangelist system
Project team
Evangelist Evangelist Evangelist
Branch A Branch B Branch C
39
These views were created by Sales
persons.
40
ハーバードビジネスレビュー 年 月号に掲載
企業文化のレベルでデータドリブンに変わった事例として紹介
DIAMONDハーバード・ビジネス・レビュー(2019/5/13)
https://www.dhbr.net/
https://www.dhbr.net/articles/-/5876
41
今日伝えたかったこと
42
アジェンダ
• サイクルとは
• データプラットフォームの役割
• サイクルとデータプラットフォーム
• 実際どうだったか
• DataPlatformを成長させる技術
43
時間あれば技術的な話を。
44
簡単に紹介する流行りのテクノロジーベース
• Hadoop
• 分散処理でビッグデータを扱う
• Hive
• SQLライクにビッグデータを扱う
• Spark
• On Memoryで大きなデータを分散処理
• Kafka
• 1兆レコード/dayをリアルタイム扱うためのデータフロー
• 疎結合でスケールするようにデザインされてる
45
Data
Hadoop
Hive
ETL
Prometheus
Grafana
PagerDuty
Export
Batch
Data
Service
Data
Exporter
terraform
Jenkins
Ansible
kafka
kafka
Data
Data
PySpark
Docker
MonitorDeploy/Operation
Data Pipeline
NFS
CoreIngestion
ML
Ranger
Governance
Splunk
Language
Java
Scala
Bash
PythonChef
Development
Docker
Intellij
Maven / SBT
Pants
Kubernetes
Atlas
Cockroach
DB
Kafka
Consumer
Kafka
Connect
46
技術の話ができなかったのでここらへんをぜひ皆さんと話したいです
• DevOps
• Kubernetes / istio
• BigData
• Hive 3.1 + Kafka
• Confluent platform / Brooklin
• Ranger + Atlas
• Engineer Culture
• Squad / Chapter / Guild
• Development
• Pants Mono Repository
• Scala
ユーザに価値を届けるためのデータプラットフォームの考え方

ユーザに価値を届けるためのデータプラットフォームの考え方