Slide 1

Slide 1 text

BIRのアーキテクチャと データ処理 Jumpei Takiyasu @juntaki M3, Inc.

Slide 2

Slide 2 text

自己紹介 滝安純平(@juntaki) BIRエンジニアチームリーダー兼BIRカンパニー執行役員 バックエンドとWebフロントエンドエンジニア、兼プロダクトマ ネージャをやっています。 もともと組み込みLinuxのカーネル開発をしていました。最近 はFlutterでなにか作っています。 好きな言語はGoʕ◔ϖ◔ʔ 2

Slide 3

Slide 3 text

今日話すこと ● BIRのビジネスとシステムアーキテクチャ(再) ● 回答データの活用方法・Cloud Schedulerを使ったバッチ処理 3

Slide 4

Slide 4 text

BIRのビジネスと システムアーキテクチャ 4

Slide 5

Slide 5 text

BIR - ビジネスインテリジェンス&リサーチ 医療従事者の会員向けアンケート(国内最大の医師パネル)をベースに、製薬 会社へのマーケティング支援を提供する事業を行っています。 5

Slide 6

Slide 6 text

アンケートページ

Slide 7

Slide 7 text

アンケートビジネスの流れ 1. アンケートを作る 2. 配信・督促をがんばる 3. データを整理する 4. データを可視化する アンケートを集める データを活用できるよ うにする 7

Slide 8

Slide 8 text

アンケートシステムのアーキテクチャ 8

Slide 9

Slide 9 text

アンケートシステムのアーキテクチャ 1.アンケートを作る 2.配信・督促をがんばる 3.データを整理する 4. データを可視化する 9

Slide 10

Slide 10 text

Tableauとは データ可視化ツール ● BigQueryやPostgreSQL、 Excelまで色々なデータに接 続可能 ● データ整形、集計、可視化ま で、やりたいことは何でもでき る※すごいツール ※使いこなせば…!

Slide 11

Slide 11 text

Tableauの活用方法 1. 社内向け指標の可視化 a. アンケートの回答状況 b. 各種配信チャネルの流入状況 c. クラウド環境の課金状況 2. 納品物作成 a. クライアント向けダッシュボード b. データダウンロードツール

Slide 12

Slide 12 text

アンケートで扱うデータと格納先(概要) 配信に使うデータ ● 配信ユーザID ● アンケートID ● ステータス 回答データ ● ユーザID ● アンケートID ● 回答内容 M3トップページ並のアクセス量 → Cloud Spanner 各アンケートシステムの 性能要件は一般的なWebアプリ → Cloud SQL / Aurora

Slide 13

Slide 13 text

可視化したいもの 内部的には… ● 回答状況 ● 各種KPI 納品物では… ● 回答&設問 ● 会員属性 配信システムの Spannerにある アンケートシステ ムのDB M3会員基盤 各所にあるデータを集めて可視化しなくては使えない 直接参照すると、可視化による負荷を各々考慮する必要があり設計難度が上がる BigQueryへ集約

Slide 14

Slide 14 text

バッチ処理 BigQueryにデータを集約させるための処理を Webアプリとは非同期に動かしたい ● cronジョブ / SpringBatchなどフレームワークの機能 ○ バッチ専用インスタンスが必要 ○ アプリごとに作るので統一した管理が難しい ● ワークフローエンジン(Digdag, Airflow, etc..) ○ 依存関係がほぼ無いのでオーバースペック +失敗したときの復旧が面倒(前日の日次バッチ処理など …)

Slide 15

Slide 15 text

Cloud Schedulerをつかったバッチ処理 BIR独自の バッチ起動処理 他チームがDigdagから 使っていた処理を流用

Slide 16

Slide 16 text

バッチ処理起動用サーバ(bir-batch) YAMLファイルでエンドポイントを生成する超シンプル独自フレームワーク (Digdagも検討したが、BIRは処理間の依存がなかったので採用せず) ● 指定されたFargateにパラメータを渡して起動(現在日付はクエリパラメータ) ● 失敗を検知してリトライ&リトライ失敗で通知 - endpoint: /ibis/update_answer image: 'ibis-container:latest' cmd: /work/run.sh cpu: 256 memory: 512 env: BQ_KEY: 'credential' PASSWORD: 'password' retryable: true 処理ごとに こんな感じの YAMLを書くだけ

Slide 17

Slide 17 text

この構成のメリット&デメリット メリット Fargateで都度コンテナを立ち上げるので、リソースを食い合って共倒れない Web APIになっているので、再実行が簡単(?date=20210220とすれば過去分も)Cloud Schedulerのコンソールが優秀 ● DBメンテナンスでバッチ全部止めたい→停止ボタンおすだけ ● 全部のバッチ処理を俯瞰したい →されてる! デメリット 複雑な依存関係を考慮できない 保守は自分でがんばる

Slide 18

Slide 18 text

まとめ ● BIRのビジネスとシステムアーキテクチャ ● 回答データの活用方法・Cloud Schedulerを使ったバッチ処理 18

Slide 19

Slide 19 text

タイムテーブル 時間 タイトル スピーカー 19:00 ~ 19:05 オープニング 司会 19:05 ~ 19:20 BIRのアーキテクチャとデータ処理 滝安 純平 19:20 ~ 19:40 DatastoreからSpannerへのゼロダウンタイム移行 四方田 貫児 アンケートシステムのデータ可視化 木村 一統 19:40 ~ 19:50 質疑応答・クロージング

Slide 20

Slide 20 text

アンケートのご協力をお願いします ※BIRで作っているアンケートシステム( Tiger)です!  医療従事者でない方はめったに触る機会がないので、ぜひこの機会にどうぞ We’re hiring! 
 エムスリーのエンジニア 採用サイトはこちら アンケートはこちら ※現在は終了 しています