SlideShare a Scribd company logo
データ分析基盤を支えるエンジニアリング
白鳥 昇治
テクノロジープラットフォームユニット
データマネジメントグループ
データ基盤チーム
2017/12/12
0
今日お話すること
• 自己紹介
• リクルートライフスタイルのデータ分析基盤の紹介
• データ分析基盤に必要なエンジニアリング
• さいごに
1
自己紹介
• 白鳥 昇治(しろとり しょうじ)
• 略歴
• インフラエンジニア@SIer 2013/4〜
• 社内プライベートクラウドの構築・運用
• ソフトウェア開発ツールの社内ホスティングサービス開発・運用
• データエンジニア@リクルートライフスタイル 2017/7〜
• データ基盤チーム
• 美容データプロデュースチーム(兼務)
• 趣味
• バイク / 登山 / 仮想通貨トレード / Splatoon
2
Engineering
for data
Business
with data
技術でビジネスを
ドライブする
Stable Infrastructure Continual Innovation+
リクルートライフスタイルにおけるエンジニアの役割
今日お話すること
• 自己紹介
• リクルートライフスタイルのデータ分析基盤の紹介
• データ分析基盤に必要なエンジニアリング
• さいごに
4
リクルートライフスタイルのプロダクト
5
どういうデータが集まるの?
• 事業DBデータ
• じゃらん、ホットペッパーグルメなどの各事業DBのテーブルそのもの
や、そのスナップショットデータ
• マスターデータ
• 地理情報などの外部データから取得できるマスターデータ
• 管理者が手動で管理しているのでmaster_handスキーマと呼ばれる
• データマート
• 事業データ、マスターデータを駆使して分析・モニタリングしやすい
ように加工したもの。データプランナーが事業と一緒に考えて作成。
• 誰でも音速でBIできるのでbi_smh(BIシューマッハ)スキーマと呼ば
れる
• サイトアクセスログ
• Adobe Analyticsによる各事業のアクセスログ
6
どう使う分析基盤なの?
• アドホック分析
• データが必要になったときに。
• 例:昨日のこのエリアの宿のじゃらん予約数を知りたい
• KPI・KGIモニタリング
• 主にTableauでモニタリング、出力ファイル提供もする
• 例:アクティブユーザー数の推移を見たい
• 施策のためのデータ抽出
• 売上に直結するような施策のためのデータ抽出をバッチ実行
• データサイエンティストが考えたモデルを動かして使ったりする
• 例:キャンペーンのポイント付与対象者リストが欲しい
7
プロダクトごとに
分析フローは様々
データウェアハウス
データ分析基盤
データ分析基盤 超概要
8
データ
データ
レイク
データ
データ
格納
データ
格納 データ
マート
BIツール
集計
集約
分析
ローデータを一元的に格納
データを構造的に格納
分析しやすいように
データを加工する
データ基盤チーム
分析ユーザー
orシステム
事業
データ分析基盤BLT 概要
9
S3
HPB
JLN
HPG
TSV
CSV
Cloud Storage
Redshift(本番)
Redshift(退避)
アクセスログ
CSV
事業データ
外部データ
Exadata
Bigquery
(スナップショット
から再作成)
ETL処理
ロード
ETL処理
ロード
ETL処理
マート作成
ETL処理
展開
BIツール
JLN
JLN
実装ポイント3つ
• データレイク構成
• 4つのデータウェアハウス
• ETLのための独自フレームワーク
10
データレイク構成
11
HPB
JLN
HPG
TSV
CSV
Cloud Storage
Redshift(本番)
Redshift(退避)
アクセスログ
CSV
事業データ
外部データ
Exadata
Bigquery
(スナップショット
から再作成)
ETL処理
ロード
ETL処理
ロード
ETL処理
マート作成
ETL処理
展開
BIツール
JLN
JLN
S3
データレイク構成
• ローデータはすべてS3に保管(=データレイク構成)
• データレイク構成にしておくことによって、新しいエンジンや新
しいニーズが出てきた際もある程度柔軟に対応出来る
12
S3
Load
OK!
4つのデータウェアハウス
13
HPB
JLN
HPG
TSV
CSV
Cloud Storageアクセスログ
CSV
事業データ
外部データ
(スナップショット
から再作成)
ETL処理
ロード
ETL処理
ロード
ETL処理
マート作成
ETL処理
展開
BIツール
S3
Redshift(本番)
Redshift(退避)
Exadata
Bigquery
JLN
JLN
4つのデータウェアハウス
• Exadata
• 施策バッチの専用実行環境
• オンプレ
• 売上に直結するため、通常の分析環境とリソースを分離して安
全安心を確保
• 利用についてはマネージャー承認制
14
4つのデータウェアハウス
• Redshitf(本番)
• メインの分析環境
• データロードとマート作成が常に走っており激重
• 重要指標のモニタリングによく使われる
• データ鮮度:日次
15
4つのデータウェアハウス
• Redshift(退避)
• アドホック分析環境その2
• 本番のRedshiftが遅すぎたため作った環境
• 週次で本番Redshiftのスナップショットから再作成される
• 最新のデータをテーブル単位でS3からロードすることもできる
• データ鮮度:週次
16
4つのデータウェアハウス
• BigQuery
• アドホック分析環境その2
• アクセスログが毎時で連携されている
• 最近Redshiftのデータも連携されるようになったのでRedshift
退避環境の退役も近い
• 安いし使いやすいし最高でしかない
• データ鮮度:毎時or日次
17
(スナップショット
から再作成)
BIツールRedshift(本番)
Redshift(退避)
Exadata
Bigquery
JLN
JLN
ETL(Extract Transform Load)処理
18
HPB
JLN
HPG
TSV
CSV
Cloud Storageアクセスログ
CSV
事業データ
外部データ
S3
ETL処理
マート作成
ETL処理
ロード
ETL処理
ロード
ETL処理
展開
ETL処理のためのフレームワーク①
• 通称、h2framework
• 独自で実装した ETLのフレームワークを用意し、SQLとYAMLを作るだけ
でデータの移動を出来るようにしている。Python製。スケジューラーは
JP1。
19
ETL処理のためのフレームワーク②
• 通称、bq-loader
• S3にデータが配置されると、自動的にBigQueryにロードされる。ジョブ
の中身はPython製。イベントドリブンでイケてる。
20
今日お話すること
• 自己紹介
• リクルートライフスタイルのデータ分析基盤の紹介
• データ分析基盤に必要なエンジニアリング
• さいごに
21
データ分析基盤に必要なエンジニアリング
このデータ分析基盤で達成したいこと
とにかくどんどん分析してもらって
売上を上げてもらう!
そのために…
22
23
#1
ユーザビリティを上げる
ユーザビリティを上げる
• 使ってもらわないことには始まらない
• アクティブユーザー数は150〜200、ユニークユーザーは1000以上
• ユーザーのバックグラウンドも様々
• ディレクター、マーケター、セールス、エンジニア、データサイエン
ティスト、etc...
24
ユーザビリティを上げる
• データをいい感じにする
• データソースを増やす
• たとえば業務で使っているクラウドサービスのデータ
• データ鮮度を上げる
• Weekly→Daily→Hourly→リアルタイム
• ここはまだ要望に答えきれていない…
25
ユーザビリティを上げる
• ユーティリティツールを公開する
• チャットでつぶやくとで最新データをロードするインターフェース
• データの更新時間がわかるダッシュボード
• Slackの質問チャンネル開設
• メタ情報の公開
26
27
• 事業DBやDWH、Adobe Analyticsのメタデータを一元的に管理
• カラムに対してのコメント機能もあるため、単純なDDLよりもわかりやすい情報が載っている
#2
パフォーマンスを上げる
28
パフォーマンスを上げる
• クエリが数分間返ってこない分析基盤なんて使っても
らえない
• ユーザー「ボルト?遅っ!!」
29
パフォーマンスを上げる
• ビッグデータ、データ分析関連のソフトウェアやサービスはも
のすごい勢いでローンチ/アップデートされている
• Redshift Spectrum, AWS Glue, Dataflow, Data studio...
• 良さそうなものは検証して基盤を進化させ続け、その時想像で
きる最適を目指す
30
31
Amazon EMR
Amazon Athena
AWS Glue
役目を終えた
OR
我々の基盤に今はマッチしなかったサービス・ツール達
パフォーマンスを上げる
• マネージドサービスとは仲良く、フィードバックする
• もちろん最初はSQLチューニングやベストプラクティス適用な
ど、基本からやりましょう
32
33
#3
運用コストを下げる
運用コストを下げる
• ユーザビリティやパフォーマンスのための開発ができ
るようにする
34
運用コストを下げる
• なるべく運用は自動化しておく
• ETLのリトライは単純リランで済むように、冪等な処理に
• 故障チケットは自動で起票、チケット起票おじさんがいなくて済むように
• Infrastructure as a code/自動テスト/自動デプロイ
• 定常作業はすべて自動化するつもりで
• まだまだ道半ば><
• 魔改造しない、マネージドサービスに乗れるところは乗る
• まだまだオンプレのバッチサーバがあったりします
• とはいえミドルウェアを自分でいじれないのはちょっとさみしい><
35
#4
モニタリングする
36
モニタリングする
• データ分析基盤自体もデータ分析が必要
• モニタリングをして改善しないとダメです
• まだきちんとできておりません><
37
38
クエリ状況
障害状況
DWH負荷状況
UU推移(日足)
クエリ数推移(日足)
クエリ実行時間推移(日足)
クエリ内容
UU推移(月足)
クエリ数推移(月足)
クエリ実行時間推移(月足)
サマリ
#5
自分で分析する
39
自分自身でも分析する
• せっかく目の前に面白いデータがあるのに、遊ばない
分析しない手はない
• 使う側になってみないとわからないこと、たくさんあ
ると思います
• 自分がマーケター、ディレクターの役割で事業課題を発見・解決する
データを作ってみよう
• 誰が、何のために、どんなデータを分析してるのか認
識しないと、最適なデータ分析基盤は作れない
• =データプランナーの視点も必要
40
データ分析基盤に必要なエンジニアリング
このデータ分析基盤で達成したいこと
とにかくどんどん分析してもらって
売上を上げてもらう!
そのために…
1. ユーザビリティを上げる
2. パフォーマンスを上げる
3. 運用コストを下げる
4. モニタリングする
5. 自分で分析する
41
今日お話すること
• 自己紹介
• リクルートライフスタイルのデータ分析基盤の紹介
• データ分析基盤に必要なエンジニアリング
• さいごに
42
さいごに
• 進化を続けることができる基盤は作っていて、エンジニアとして
とても楽しい
• 新しいマネージドサービスや技術はキャッチアップ必須!
• リクルートライフスタイルのデータ分析基盤はまだ発展途上
• お話したとおり改善ポイントはいくらでもある
• 実はアプリやサーバーログのリアルタイム収集・分析基盤は別にあったり…
• リクルートライフスタイル、ひいてはリクルート全体の分析基盤
を一緒に作ってくれる方をお待ちしています!
43
44
45

More Related Content

データ分析基盤を支えるエンジニアリング

Editor's Notes

  1. リクルートライフスタイルにおけるエンジニアの役割 弊社の特徴として、エンジニアがビジネスのとても近くにいるというのがあります。 図のようにエンジニアの役割は技術によってビジネスをドライブさせることになります。 エンジニアからビジネス側へ提案することが多くある。 あとは、毎年エンジニアがビジネスプランを発表するコンテストもありますし、技術とビジネス両方学べる良い環境だと思います。 リクルートライフスタイルとエンジニアが結びつかない人も多数いるとは思いますが、技術でビジネスをドライブしてる実績が認められ最近はエンジニアを増やすことに注力しています。