みんなのウェディングのデータ分析基盤の現状

こんにちは、みんなのウェディングの小室 (id:hogelog) です。 今回はみんなのウェディングにおけるデータ分析基盤の現状についてご報告させていただきます。

三行まとめ

忙しい人のために先に結論を書くと

です。

データ収集

データ収集は bricolage のジョブネット機構を用いて bricolage の各種ジョブや embulk を連携させ、Redshift にデータを取り込んでいます。

参考までに https://github.com/hogelog/dwh-example に簡単な構成例を準備しました。

MySQL → Redshift

みんなのウェディング http://www.mwed.jp/ のデータベースとしては MySQL を利用しています。 MySQL から Redshift にデータをコピーするのには bricolage の my-migrate ジョブを利用しています。

基本的にはすべてのテーブルを Redshift に取り込んでしまいたいのですが、適宜必要なテーブルから取り込み処理をおこなっており、現在では 50 弱の主要テーブルを日次で取り込んでいます。

Apache ログ → Redshift

Apache ログから Redshift へのデータ取り込みについては Embulk を利用しています。 Embulk 利用方法については Embulk をつかって検索ログを抽出する のエントリにその詳細を記述しています。

bricolage と embulk を連携させるときの注意点

弊社のデータ分析基盤では https://github.com/hogelog/dwh-example/blob/master/main/tmp_search_logs-create.job の様に、 bricolage の exec ジョブを経由して embulk を起動しています。 2016年6月1日現在bricolage の exec ジョブ経由で起動したコマンドに bundler 等由来の環境変数が伝搬してしまう ため、bricolage の exec ジョブ経由で embulk を正しく起動できないという問題があります。

現状では以下のように環境変数をリセットするシェルスクリプトを経由することで問題を回避しています。

#!/bin/bash

# Clear bundler environment.
unset BUNDLE_BIN_PATH BUNDLE_GEMFILE GEM_HOME GEM_PATH RUBYLIB RUBYOPT

exec embulk "$@"

https://github.com/hogelog/dwh-example/blob/master/bin/bricolage-embulk.sh

Redshift → Redshift

上述した MySQL、Apache ログ由来のテーブルを元に扱いやすく変形・統合・分析したテーブルを Redshift 内で作成しています。 これには bricolage の sql ジョブ を用いています。

現状一部の分析や集計のみこれらの SQL ジョブを利用していますが、将来的には重要な集計処理などは Redshift 内に集約させていきたいと考えています。

データ分析

bricolage によるデータ集約処理により、各種ログやデータベースの値を Redshift に集約することができたため、SQL のみで各種指標抽出や分析・集約がおこなえるようになり、Redshift をバックエンドとして使える各種ツールでの分析が容易になりました。

ダッシュボード

各種 KPI の可視化をするためのダッシュボードは re:dash を活用しています。

アドホック分析

簡単な分析については単純な SQL クライアント、複雑な分析をおこなう時は pandas + (Jupyter Notebook) 等を活用しています。 これらの分析も Redshift によるデータ分析基盤構築前は一旦データを抽出し、分析処理にかけやすいよう前処理をかける必要などがありましたが、データが Redshift に集約されたことにより分析の手間が大幅に削減されました。

今後の課題

ダッシュボード、アドホック分析どちらも現状では SQL を記述する必要があります。 しかしみんなのウェディングでは SQL は非常に有用なスキルなのでエンジニアに限らず多くの人に身につけて欲しいスキルとして推奨しており、社内で開かれている SQL 勉強会にも多くの人が参加しています。 Redshift に多くの実際のデータが格納されるようになり、勉強会の題材としてそのまま本番のデータが使われるようにもなってきました。

一方で日次の数字をまとめるだけで済む簡易な分析などについてはデータ収集、分析ともに追加実装等なしで実現できるような分析基盤については今後構築・整備を進めていく予定です。

Tabeleau 等の BIツールの導入についても検討しており、Amazon Quicksight についても全容はわかっておりませんがかなり期待しています。

参考文献

上述したみんなのウェディングのデータ分析基盤を構築する際の基本的な考え方としては青木峰郎さんが発表したCookpad TechConf 2016 - DWHに必要なことを参考にさせていただいております。

以下の書籍、ブログなどもおおいに参考にさせていただきました。

おわりに

みんなのウェディングでは Amazon Redshift という巨人の肩に乗ることでデータ分析基盤を大幅に強化することができました。 しかしデータ分析基盤の土台においても、それらのデータをサービス開発に活用するにも課題はまだまだ多く存在します。

みんなのウェディングではこのようなデータ分析基盤の構築を加速してくれる方、データ分析に基づいたサービス開発をおこなってくれる方を募集しています。

興味がある・話を聞きたい方は是非 Wantedly からご応募ください。 または @hogelog などに直接連絡いただいても問題ありません。