FiNCのデータ戦略と​ AWSでのデータプラットフォーム構築​ / Healthcare Data in FiNC

FiNCのデータ戦略と​ AWSでのデータプラットフォーム構築​ / Healthcare Data in FiNC

X-Tech JAWS #3 での登壇資料です
https://xtechjaws.doorkeeper.jp/events/72011

Ba0cce2241a7133aec62afc8ed15a172?s=128

Kenji Suzuki

April 20, 2018
Tweet

Transcript

  1. FiNCのデータ戦略と AWSでのデータプラットフォーム構築 FiNC, Kenji Suzuki @X-Tech JAWS #3

  2. Agenda • 自己紹介 • About FiNC • FiNCヘルスケアプラットフォームで収集しているデータ • データ収集基盤

    • データ活用事例 • まとめ
  3. Kenji Suzuki • 2010 ~ 2014 DeNA – Infra Engineer

    • 2015 ~ FiNC – Site Reliability Engineer – Security Engineer – Blockchain Engineer 自己紹介
  4. About FiNC

  5. FiNCヘルスケアプラットフォームで収集しているデータ

  6. o ໨త o ͓೰ΈʢμΠΤοτɺੜ׆श׳վળɺӡಈෆ଍ղফɺ݈߁ҡ࣋ɺےྗΞοϓɺ ମܕҡ࣋ɺංຬɺ಺ଁࢷ๱ɺΉ͘ΈɺศൿɺੜཧෆॱFUDʣ o ؾʹͳΔ෦Ґʢ༏ઌॱҐʣ o ϑΟδΧϧͷঢ়ଶʢ೥ྸɺੑผɺ਎௕ɺମॏɺମࢷ๱཰ɺے೑ྔɺ࢟੎ͷঢ়گ FUD

    o ਎ମػೳʢےྗɺے೑࣋ٱྗɺॊೈੑɺॠൃྗFUDʣ o ମ಺ػೳʢ݂ѹɺجૅ୅ँɺମԹɺ৺ഥ਺FUDʣ o ӡಈश׳ʢݱࡏɺաڈFUDʣ o ޷͖ͳ৯΂෺ʢڕྉཧɺ࿨৯ɺ໙ྨFUDʣ o طԟྺʢՖค঱ɺෆ຾঱ɺ͏ͭපɺ౶೘පɺߴ݂ѹɺ೘ࢎ஋FUD o ϥΠϑελΠϧʢग़ۈؼ୐࣌ؒɺٳ೔ʣ ౳ アプリ 登録時 データ 検査データ o ݂ӷݕࠪ o Ҩ఻ࢠݕࠪ 食事データ o ৯ࣄ౤ߘσʔλ o ৯඼σʔλϕʔε 身体データ o ମॏ o ਭ຾ o า਺ 基礎データ o ೥ྸɾੑผɾॅॴ౳ FiNCアプリで収集されるデータ群 上記静的データ + アプリ内でのユーザーの行動データを収集している
  7. データの活用 • 様々なデータを収集 • 得られた生データを効率よく分析可能な状態に成形する • 分析結果をサービスに反映させる

  8. データ収集基盤 - 一般的なデータ収集基盤 - 特定目的でのデータ収集基盤 - コンテンツレコメンド - ユーザーデータの汎用データレイク

  9. 前提:システム全体図(マイクロサービス) User Interface Service1 Service2 Service3 Service4 Service5 • 機能単位でのサーバー

    分割 • 一人のユーザーの行動 により生じるログが各 サーバーに散らばる • 効率よくそれらを収集 し、集計しやすい形に 整える必要がある
  10. データ・ログの流れ Microservices

  11. データ・ログの流れ(AWS DMS補足) FiNC開発ブログ https://medium.com/finc-engineering/dms-operation- etc-98f67d28a1a0

  12. • あらゆる経路からredshiftにデータを集めている – 各マイクロサービスからfluentd経由で収集されるサーバーログ – 各マイクロサービスからfluentd経由で収集される特定の目的のため に特別に設定されたログ – 各マイクロサービスからAWS DMS経由で収集されるデータベースの特

    定テーブルのスナップショット – モバイルクライアントに仕込まれたfirehose経由で収集されるユー ザーの行動をログ – モバイルクライアントに仕込まれた各種SDKからfirehose経由で収集 されるユーザーの行動ログ • これらのログ・データを効率よく分析するためにサマリー テーブルと呼ばれるテーブルを作成する 集められるデータ
  13. redshift サマリーテーブル例:プッシュ通知 • 各サービス単位で散 らばったログから プッシュ関連の情報 を取ろうとするとか なり複雑なクエリが 必要になる •

    深夜などに定期的に サマリーテーブルを 作成する処理を流す • 集計がよりシンプル に(非エンジニアでも 理解できる) プッシュ通知 サービスログ ユーザー デモグラ情報 ユーザー 各ステータス ユーザー 活動ログ バッチ 処理 プッシュ通知用 サマリーテーブル - どんなユーザーが - いつ - どんな通知を受け取り - 開いたかどうか - 1h後に何をしたか - 1day後に何をしたか
  14. サマリーテーブル例:プッシュ通知 • サマリーテーブルを 作るバッチはそれな りに泥臭く • それでも分析のたび に複雑なクエリを叩 くよりは効率が良い

  15. データ収集基盤 - 一般的なデータ収集基盤 - 特定目的でのデータ収集基盤 - コンテンツレコメンド - ユーザーデータの汎用データレイク

  16. 特定目的におけるデータ収集基盤 • 特定の目的に特化したデータ収集と分析を行う基盤 – アプリ内メディアのコンテンツ表示レコメンドシステム – より汎用的にユーザーデータを統合した汎用データレイク

  17. データ収集基盤 - 一般的なデータ収集基盤 - 特定目的でのデータ収集基盤 - コンテンツレコメンド - ユーザーデータの汎用データレイク

  18. コンテンツのレコメンドシステム • FiNCアプリ内メディア • ユーザー毎に最適化されたコンテ ンツを表示したい • ユーザーの閲覧履歴などからレコ メンドを行う

  19. コンテンツのレコメンドシステム • 各マイクロサービスか らレコメンドに必要な データをredshift収集 する • レコメンドのモデルは 機械学習を用いて作成 される(この部分の詳

    細は今回はスキップ) • 当初は既存の分析の流 れを流用してRedshift ベースでレコメンドし ようとしたが。。。 Existing microservices Redshift Model Training recommender API Why I have to make Big data aggregations! Too much!
  20. コンテンツのレコメンドシステム Existing microservices Redshift API Export to CSV file e.g.

    AWS S3 Pre- aggregate data stores AWS Batch Model training Access app services Copy data to analytics DB Scale out blob storage • ユーザーの行動データ は非常に巨大で、 redshift上に全て載せ ることは現実的でない • redshiftに蓄積された データをs3にexport • exportされたデータを 元にAWS Batch上で動 いているモデルのト レーニングプロセスが レコメンドモデルを作 成
  21. データ収集基盤 - 一般的なデータ収集基盤 - 特定目的でのデータ収集基盤 - コンテンツレコメンド - ユーザーデータの汎用データレイク

  22. 汎用データレイク(構想) DataLake Serve r App Ad for Ad for ML

    Use in app Transform DataStore Source Collect App App App User segmentation Glue(catalog) Serve r Glue(ETL) Lambda Athena
  23. データ活用事例

  24. データ活用事例 ユーザークラスタリ ング • 入会時アンケー トによるクラス タリング • 退会アカウント の行動分析と予

    測 ライフログ • 睡眠時間予測 • 生理周期の予測 • BMI値などの データからのオ ススメ記事の設 定 レコメンド • 記事の閲覧履歴 からのレコメン ド • プッシュ通知内 容・時間の最適 化
  25. まとめ

  26. • FiNCのアプリケーションでのデータの重要性 • データ収集と分析基盤の紹介 • 活用事例紹介 • ヘルスケアデータを分析したいエンジニアさん募集してい ます まとめ