GCPで行動ログ基盤 を開発している話

52697a657a21684a75a70c448e474fc0?s=47 kaito2
September 30, 2019

GCPで行動ログ基盤 を開発している話

52697a657a21684a75a70c448e474fc0?s=128

kaito2

September 30, 2019
Tweet

Transcript

  1. GCPで行動ログ基盤 を開発している話 エムスリー株式会社 岩月 海人

  2. 自己紹介

  3. 自己紹介 - 岩月海人 (@kaito_two) - エムスリー株式会社 - AI・機械学習チーム - どちらかというとデータエンジニア

    - 2019年 4月16日 新卒(?)入社 - 主にGCP関連の基盤を担当
  4. 話すこと

  5. 話すこと • m3.com とは? • 行動ログ基盤 ◦ 背景 ◦ 概要

    ◦ 構成 ◦ 設計・移行で苦しんだトコロ • まとめ
  6. m3.com とは?

  7. m3.com とは? 医師限定会員サイト 医師向けYahooのようなイメージ(多分一つ前でもはなしてある) サイト内に複数サービス(現在20以上)への導線が存在する。

  8. 行動ログ基盤 (移行中)

  9. 行動ログ基盤 目的 m3.com のサービス横断の広告表出システムをリニューアルする 概要 • 対応サービスのコンテンツの中からユーザーに対しておすすめを表示(パーソナラ イズ) • ユーザーの行動ログからCVをリアルタイムに補足

  10. 行動ログ基盤(現状の課題) なぜつくっているか? (既存システムの課題) 1. 各システムとの結合が強い ◦ 表示可能なコンテンツを各サービスに問い合わせている (後述) 2. 他のシステムに相乗りする形で実装されている

    ◦ 当時の開発スピードが優先されていた 3. 細かいパーソナライズができていない ◦ 現状 「Aさんはニュースサービスが好き」 ◦ やりたい 「AさんはXXXに関するニュースが好き」
  11. 各システムとの結合が強い 既存の広告システム 表示可能コンテンツ の問い合わせ 表示可能なコンテンツを 各サービスに問い合わせ ?? ?? ??

  12. (その他にもいくつか内部の事情があり) データパイプライン作ろう

  13. 行動ログ基盤 | 構成

  14. 行動ログ基盤 | 構成 ユーザーに表示したいコンテンツを登録

  15. 行動ログ基盤 | 構成 パーソナライズされた 表示するコンテンツを提供

  16. 行動ログ基盤 | 構成 各サービスの行動ログを送信

  17. 行動ログ基盤 | 構成 Pub/Sub をサブスクリプションし、 行動ログからCVを判定

  18. 行動ログ基盤 | 構成 Pub/Sub をサブスクリプションし、 行動ログからCVを判定 状態を取得・更新

  19. 行動ログ基盤 | 構成

  20. 行動ログ基盤 | 構成 ココ

  21. API 構成 表示可能なコンテンツを取得 m3の各サービス

  22. API 構成 取得した情報をもとに最適化 (ロジックをPlugableにする)

  23. 設計・移行で悩んだトコロ

  24. Pub/Sub のトピックを分割するか 現在は中央のトピックを立てている 関係ない Message でも呼び出される

  25. Pub/Sub のトピックを分割するか Dataflow で分ける方法もあるが現状はしてない マシンリソースと Pub/Subのトラフィックがかかる

  26. Cloud Datastore の制約 • 一度に500エンティティまでしか書き込めない ◦ コンテンツなどをBulkで追加するのが厳しい • Kindごとの削除のコストが高い ◦

    Dataflowのジョブを起動する必要がある。 ▪ https://cloud.google.com/datastore/docs/bulk-delete • 基盤システムなので従量課金が厳しい(当たり前) BigTable を採用している
  27. まとめ • m3.com について • m3.com 上のアドの仕組みをリニューアルしている ◦ 様々な課題が ▪

    システムの密結合 ▪ パーソナライズに改善の余地 ◦ 行動ログ基盤をつくりリアルタイムなデータの活用を進める • 構築上の悩み ◦ Pub/Sub のトピック構成 ◦ DBの選定(Datastoreが厳しそう)
  28. ありがとうございました