Upgrade to Pro — share decks privately, control downloads, hide ads and more …

monotaro_devsumi2020winter

 monotaro_devsumi2020winter

Youichi Fujimoto

February 13, 2020
Tweet

More Decks by Youichi Fujimoto

Other Decks in Technology

Transcript

  1. https://www.monotaro.com/ 1

    View Slide

  2. https://www.monotaro.com/
    2020.2.13
    自己紹介
    2

    View Slide

  3. https://www.monotaro.com/
    2020.2.13
    目次
    3
    ● モノタロウのご紹介 
    ● データマーケティングを支えるデータ基盤
    ● ECサイトを支えるシステムのリアーキテク
    チャリング
    ● まとめ

    View Slide

  4. https://www.monotaro.com/
    2020.2.13 4

    View Slide

  5. https://www.monotaro.com/
    2020.2.13 5
    間接資材とは
    工具・消耗品 事務用品
    科学用品
    カー用品
    原材料以外は、間接資材

    View Slide

  6. https://www.monotaro.com/
    2020.2.13 6
    間接資材購買 – モノタロウ以前
    人的コスト
    時間がかかる
    商品がほしい
    複数・多種な
    営業に連絡
    見積 価格交渉 発注 
    納期確定 納品
    いくら??
    いつ届くの!?

    View Slide

  7. https://www.monotaro.com/
    2020.2.13 7
    間接資材購買 – モノタロウ以後
    商品がほしい 翌日届く
    すぐ届く
    価格交渉なし
    購買に関わるコストを大きく下げる

    View Slide

  8. https://www.monotaro.com/
    2020.2.13
    企業における間接資材の調達プロセスをテクノロジーと
    データで圧倒的に簡単にする
    モノタロウの提供している価値
    One
    Price
    One
    Stop
    Easy
    to Buy
    価格透明性がある 必要なもの全部ある すぐ見つかる、買える
    8

    View Slide

  9. https://www.monotaro.com/
    2020.2.13 9
    20%以上成長を10年継続
    ・データマーケティングが成長を牽引
    ・システムは常にキャパシティとの戦いでもある
    2019年
    1,200億円を突破

    View Slide

  10. https://www.monotaro.com/
    2020.2.13
    あらゆる顧客接点をデータを活用して最適化していく
    モノタロウのデータマーケティング
    10
    SEO/SEM
    プッシュ型マーケティング
    検索 リコメンド
    業種別最適化 パーソナライズ
    特価・クーポン施策
    誰に
    何を
    いつ
    どのくらい

    View Slide

  11. https://www.monotaro.com/
    2020.2.13 11
    例1:ユーザの業種で検索の表
    示順を最適化する
    検索最適化のほんの一例
    例2:商品のマスタにない専門ワード、
    業界用語も検索可能にする
    医療系ユーザ
    製造業ユーザ
    ・データ、アルゴリズムによって検索の顧客体験の最適化を行う
    ・しかし商品数は1800万SKUあるため、手動でのチューニングは不可能
    ・それをエンジニアリングによって自動化・仕組化していくことが重要

    View Slide

  12. https://www.monotaro.com/
    2020.2.13
    AI無人店舗
    12
    エンジニアリングドリブンなカルチャー
    自動倉庫 ピッキング

    View Slide

  13. https://www.monotaro.com/
    2020.2.13 https://www.monotaro.com/
    モノタロウのデータマーケティングを
    支えるデータ基盤
    13

    View Slide

  14. https://www.monotaro.com/
    2020.2.13
    旧データ基盤(〜2017)の問題点
    ● データ保存場所が分散 → データ移動が大変
    ● オンプレデータ基盤のサーバスペックが足りない
    ● 分析に必要なデータが揃っていない
    データが集約されていて、スケールできて、使いやすく、
    管理しやすく、コストも安いデータ基盤がほしい!
    14

    View Slide

  15. https://www.monotaro.com/
    2020.2.13
    15
    扱えるデータ量 作成されたレポート数 SQL 業務利用者人数
    10× 10× 5×
    ~ 100 テーブル
    1000 テーブル~
    ~ 30 レポート
    300 レポート~
    ~ 10 人
    50 人~
    ( IT エンジニア以外 )
    データ基盤導入の成果

    View Slide

  16. https://www.monotaro.com/
    2020.2.13
    1. 全ての必要なデータを1箇所に集約
    2. CDC(Change Data Capture)による安定し
    たデータ連携
    3. 業務担当者(非エンジニア)によるSQLデータ
    分析の浸透
    16
    データ基盤が活用されたポイント

    View Slide

  17. https://www.monotaro.com/
    2020.2.13
    その1
    あらゆるデータを1箇所に集めた
    17
    データ基盤が活用されたポイント

    View Slide

  18. https://www.monotaro.com/
    2020.2.13 18
    BigQuery
    Export
    Binlog
    Connector
    Raw
    Data
    DWH EC Site
    Application
    Data Source ETL DWH/DataMart Application
    Kinesis Lambda
    Cloud
    Dataproc
    BigQuery Compute
    Engine

    View Slide

  19. https://www.monotaro.com/
    2020.2.13
    BigQueryの利用
    ● フルマネージド
    ● シンプル
    ● 圧倒的スケーラビリティ
    ● GSuite 連携 (アカウントの準備とか不要)
    ● Google Analytics 連携 (Google Marketing Platform)
    19
    BigQuery

    View Slide

  20. https://www.monotaro.com/
    2020.2.13
    その2
    CDC(Change Data Capture)による安定した
    データ連携
    20
    データ基盤が活用されたポイント

    View Slide

  21. https://www.monotaro.com/
    2020.2.13
    CDCによるデータ連携
    ● データの変更情報のみを取得、処理を行うCDC (Change
    Data Caputure)を行い、擬似的にSlaveDB作成
    ● マスターのDBに負荷をかけず、安定してデータを連携で
    きた
    ● メインとなる基幹のDB(MySQL)でBinLog Connectorを利
    用して実現している
    21

    View Slide

  22. https://www.monotaro.com/
    2020.2.13 22
    Cloud
    Pub/Sub
    基幹システム, EC サイト
    MySQL
    Binlog
    Connector
    MySQL
    BigQuery
    Binlog
    Connector
    MySQL
    Binlog
    Connector
    Schematizer
    App Engine
    Processor
    Compute Engine
    Bookkeeper
    Compute Engine
    DDL
    DML
    Schema
    Schema
    Merge Job
    Schema
    Updates
    Row
    Data
    BinLog Connectorの仕組み

    View Slide

  23. https://www.monotaro.com/
    2020.2.13
    ● データ基盤に出来るだけリアルタイムに近いデータ利用の
    ニーズがあった。

    ● 従来の方法(mysqldump や select 結果を同期) だと物理削除
    に対応できないケースがある

    ● 従来の方法だと差分更新できないケースがある

    ○ 更新時間の値が信用できない

    ○ 更新されたレコードを把握するためのクエリが負荷が高い

    23
    BinLog Connectorを使った理由

    View Slide

  24. https://www.monotaro.com/
    2020.2.13
    その3
    業務担当者(非エンジニア)によるSQLデータ分析
    24
    データ活用が社内で浸透した3つのポイント

    View Slide

  25. https://www.monotaro.com/
    2020.2.13
    ● もともと業務担当者にニーズがあった
    ● 分析依頼を行なっているとスピードが遅い
    ● 業務担当者が直接クエリを流せれば的確な分析
    ができる
    ● BiqQueryの場合、同時実行クエリの増加によ
    る遅延がおきづらいという利点もあった
    25
    なぜ非エンジニアにDB基盤を解放したか

    View Slide

  26. https://www.monotaro.com/
    2020.2.13
    ● 定期的なSQL/BigQuery/DataStudio
    研修
    ● もともとデータ分析を行う社風
    ● SlackのHelpチャネルでQAを色々な
    人が行う文化
    26
    どうやってSQLを組織的に学んだのか

    View Slide

  27. https://www.monotaro.com/
    2020.2.13
    データ活用現状
    27
    ❏ マーケター
    ❏ マーチャンダイザー
    ❏ カスタマーサポート
    ❏ 物流
    ❏ セールス
    (全ての部門で利用)
    レポート作

    分析(SQL)
    データソースと
    して利用
    業務アプリ
    ケーション
    参照 or
    ダウンロード
    ❏全社的に利用
    ❏全社的に利用
    (ユーザ数は全社員の約
    30%)

    View Slide

  28. https://www.monotaro.com/
    2020.2.13
    IAM管理
    ● あらゆるデータを基盤上に持ってきたが秘匿データは適切な人にだ
    け見るようにする →マスキングとAuthorized View
    コスト管理 
    ● あらゆる人にアドホックなクエリを許可している
     →ハイコストなクエリをリアルタイムで検知
    ● 全体の利用状況は把握できるようにしたい
     →GCP Censusで利用状況を可視化/チェック
    28
    データ基盤運用での管理ポイント

    View Slide

  29. https://www.monotaro.com/
    2020.2.13 29
    さらにECアプリケーションでの活用
    EC App DWH
     BigQuery
    Application(API)
    GKE
    Application
     Cloud
     Bigtable
    パーソナライズ化したデータをAPIを通してECのアプリ
    ケーションで利用可能にした
    データサイエンティス
    トがパーソナライズを
    生成

    View Slide

  30. https://www.monotaro.com/
    2020.2.13
    ・データ基盤が整い活用も進んだ。これをより広げ全ての顧
    客接点での活用をより素早くできるようにしたい。
    ・より高度な顧客接点での最適化 - パーソナライズの拡充と
    リアルタイム化を実現したい
    →そのためには現状のECアプリケーションをリアーキテク
    チャリングする必要がある
    30
    ECアプリケーション刷新の必要性の高まり

    View Slide

  31. https://www.monotaro.com/
    2020.2.13 https://www.monotaro.com/
    これからのECサイトの成長を支える
    システムのリアーキテクチャリング
    31

    View Slide

  32. https://www.monotaro.com/
    2020.2.13
    https://www.monotaro.com/
    セッション数: 数千万/月
    注文数: 数十万/月
    32
    モノタロウ ECサイトとは

    View Slide

  33. https://www.monotaro.com/
    2020.2.13
    モノタロウ ECサイトの構成要素
    33
    ● トップページ
    ● 商品ページ
    ● 検索
    ● カート
    ● マイページ
    ● お気に入り
    ● 商品レビュー
    etc.
    在庫
    商品 価格
    注文
    顧客
    キャン
    ペーン
    レビュー
    請求
    出荷
    問い合
    わせ
    倉庫
    カート
    納期

    View Slide

  34. https://www.monotaro.com/
    2020.2.13
    ECサイトを取り巻く状況
    34
    セキュリティ
    ● Chrome SameSite
    ● Apple iTP2.1
    システム関係
    ● 既存コードのリファクタリング
    ● APIエンドポイント・リクエスト数増加
    ● リアルタイムマーケティング施策増
    ファーストパーティーの
    データ活用
    スケーラビリティとアジ
    リティの両立

    View Slide

  35. https://www.monotaro.com/
    2020.2.13
    モノタロウのマーケティング
    35
    様々なデータを活用して
    ● SEM/リスティング広告
    ● 業種別リコメンド
    ● 検索結果最適化
    ● キャンペーン・特価
    ● プッシュマーケティング
    などをリアルタイムに最適化していきたい
    Life Time Value

    View Slide

  36. https://www.monotaro.com/
    2020.2.13 36
    現在のシステムの全体像
    EC システム
    基幹システム
    MySQL MySQL MySQL
    マーケティング
    システム
    BigQuery
    App
    Engine
    Cloud
    Bigtable
    Application Application
    Application Application
    Application
    Application
    Web API

    View Slide

  37. https://www.monotaro.com/
    2020.2.13
    データ活用に適したアーキテクチャへ
    37
    ● 非対称なマルチクラウド
    ○ AWSにECサイト
    ○ GCPにデータ基盤
    ○ オンプレに基幹システム
    ● ReadModel、更新頻度のばらつき
    ● DBスキーマ
    ● フロントエンド
    ● マーケターのダッシュボード

    View Slide

  38. https://www.monotaro.com/
    2020.2.13
    REST API化は進んだが問題も出てきた
    ● エンドポイント増加
    ● コール数増加/依存の複雑化
    ● ロジックの属人化
    ● DBのスケーラビリティ
    ● 検索インデックスへの負荷集中
    ● データモデルのばらつき
    データ活用に適したアーキテクチャへ
    38

    View Slide

  39. https://www.monotaro.com/
    2020.2.13 39
    目指すシステムの全体像
    Data Platform
    BigQuery
    Cloud
    Bigtable API Platform
    Kubernetes
    Engine
    API Gateway
    Real-Time Data Pipeline
    Cloud
    Pub/Sub
    Cloud
    Dataflow
    Cloud
    Bigtable
    Cloud
    Pub/Sub
    Applications
    Kubernetes
    Engine
    App
    Engine
    サブシステム群
    EC アプリケーション
    Database
    Database
    CDC
    Application Application
    オーダーマネジメントシステム
    Database
    Database
    Connector Application
    商品情報管理システム
    Database
    Database
    Connector Application
    マーケティングシステム
    Database
    Database
    Connector Application
    その他サブシステム
    Database
    Database
    Connector Application

    View Slide

  40. https://www.monotaro.com/
    2020.2.13
    データ活用に適したアーキテクチャへ
    40
    例: リコメンド、パーソナライズ
    ● リリースが容易でスケーラブルなAPI
    ● 常に最新のデータが反映されたストレージ
    ● 持続的な成長を支えるインフラ
    -> システムとデータ基盤が共通のアーキテクチャに

    View Slide

  41. https://www.monotaro.com/
    2020.2.13
    既存API群のMicroservice化
    41
    サイトでのデータ活用とスケーリングのため
    One database per Microservice化
    Monolithic
    DB
    Web App
    Web App
    Web API
    Web App
    Web App
    Web API
    Microservice
    Microservice
    Microservice

    View Slide

  42. https://www.monotaro.com/
    2020.2.13
    巨大バッチのEvent-Driven化
    42
    購入、出荷などUXに関わるイベントでビューを逐次更新し
    たい。マーケティングもリアルタイム化したい。
    購入
    逐次処理
    出荷 マイページ
    逐次処理

    View Slide

  43. https://www.monotaro.com/
    2020.2.13
    システムへのChange Data Captureの活用
    43
    データ基盤同様、MySQLのbinlogのイベントを使う
    サブシステム
    MySQL
    サブシステム
    MySQL
    サブシステム
    MySQL
    Table
    Table
    Table
    Cloud
    Bigtable
    Cloud
    Pub/Sub
    binlogを使ってテー
    ブルをそのままレ
    プリケート
    Microservice
    (詳細は”binlog stream”でggってみましょう)

    View Slide

  44. https://www.monotaro.com/
    2020.2.13
    CDCによるデータパイプライン
    44
    サブシステム
    MySQL
    サブシステム
    MySQL
    サブシステム
    MySQL
    Cloud
    Pub/Sub
    Table
    Table
    Table
    Application
    変更イベントごとに
    ビューを更新
    KVS
    データ
    パイプライン
    Cloud
    Dataflow
    Cloud
    Spanner
    様々なデータで
    イベントをEnrich
    常に最新
    のデータ
    Cloud
    Bigtable

    View Slide

  45. https://www.monotaro.com/
    2020.2.13
    リアーキテクチャリングと技術スタック
    45
    データ基盤のスタック      ECサイトのスタック
    漸進的にギャップを埋める -> リアーキテクチャリング
    Cloud
    Dataflow
    Cloud
    Pub/Sub
    Kubernetes
    Engine
    Cloud
    Bigtable

    View Slide

  46. https://www.monotaro.com/
    2020.2.13
    運用のデータドリブン化
    46
    変化への柔軟な対応
    ● ユーザー数・売上の伸び
    ● 新たな施策やトラフィックの変動
    ● A/Bテスト・カナリアリリース
    -> SLO/SLIによるデータドリブンな運用
    BigQuery
    Kubernetes
    Engine

    View Slide

  47. https://www.monotaro.com/
    2020.2.13 47
    目指すシステムの全体像
    Data Platform
    BigQuery
    Cloud
    Bigtable API Platform
    Kubernetes
    Engine
    API Gateway
    Real-Time Data Pipeline
    Cloud
    Pub/Sub
    Cloud
    Dataflow
    Cloud
    Bigtable
    Cloud
    Pub/Sub
    Applications
    Kubernetes
    Engine
    App
    Engine
    サブシステム群
    EC アプリケーション
    Database
    Database
    CDC
    Application Application
    オーダーマネジメントシステム
    Database
    Database
    Connector Application
    商品情報管理システム
    Database
    Database
    Connector Application
    マーケティングシステム
    Database
    Database
    Connector Application
    その他サブシステム
    Database
    Database
    Connector Application

    View Slide

  48. https://www.monotaro.com/
    2020.2.13
    ● データ基盤とシステムを(アーキテクチャ的に)統合
    ● リファクタリング+リアーキテクチャリング
    ○ データ活用のためのMicroservice化
    ○ データの価値を高めるイベントドリブン化
    ● 変化に強いデータドリブンなインフラ
    ○ SRE
    48
    まとめ

    View Slide

  49. https://www.monotaro.com/
    2020.2.13
    配布資料の2次元バーコードからアンケート
    フォームへご回答よろしくお願いします
    ブースにてマスク等粗品を
    お渡しします
    49
    アンケートご回答よろしくお願いします

    View Slide

  50. エンジニア募集中
    本社(尼崎)/東京オフィス(赤坂)

    View Slide

  51. https://www.monotaro.com/
    2020.2.13
    急成長するモノタロウと一緒に働いてみませんか?
    ● 自社開発・自社運用で、全社/全業務でITを駆使する
    テクノロジー企業です
    ● 本社は関西ですが、東京も開発の中心になるべく幅広い
    職種を募集しています
    ○ ITエンジニア、データサイエンティスト、デジタル
    マーケター、プロダクトマネージャー
    ● 詳しくは https://recruit.monotaro.com/
    51

    View Slide

  52. https://www.monotaro.com/ 52

    View Slide