Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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! エムスリーのエンジニア 採用サイトはこちら アンケートはこちら ※現在は終了 しています