Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
BIRのアーキテクチャと データ処理
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Jumpei Takiyasu
February 18, 2021
Technology
1.3k
0
Share
BIRのアーキテクチャと データ処理
Jumpei Takiyasu
February 18, 2021
More Decks by Jumpei Takiyasu
See All by Jumpei Takiyasu
BIRのアーキテクチャと 技術選定
juntaki
0
850
ROSでSLAMラジコンをつくる
juntaki
0
3.8k
6足歩行ロボットをつくった
juntaki
0
780
GoでAPIサーバをはやくつくる
juntaki
26
13k
Undocumented!? firebase
juntaki
0
320
3Dプリンタと4足歩行プロトタイプ
juntaki
0
6.7k
アンケートの集計システムを作った
juntaki
0
3.9k
Goならわかる Linuxのメモリ管理
juntaki
13
6.3k
社内勉強会の管理ツール Sugoi Meetupをつくった
juntaki
0
840
Other Decks in Technology
See All in Technology
Spring Boot における AOT Cache 活用テクニックと 起動時間改善事例
ntt_dsol_java
0
200
AIを「創る」と「使う」の循環 — HRテックが実践するリアルなAI組織実装
taketo957
0
160
もりもり新機能を一挙紹介! AgentCoreに入門して、AWS上にAIエージェントを構築しよう
minorun365
PRO
6
640
Generative UI × A2UI で AI エージェントを作った話 AI-DLC も使ってみた!
kmiya84377
1
310
製造業のクラウド活用最適解〜AI,DXを加速するデータ基盤の作り方〜
hamadakoji
0
260
Claude Codeを組織で使いこなす— サーバサイドAIエージェント運用の実践知
techtekt
PRO
0
160
価格.comをAI駆動で全面刷新する ー 30年分の技術的負債を返し、次の30年の土台をつくる ー
tkyowa
3
1.9k
AI駆動開発が変える、大規模開発の前提 ーHuman in the Loop から Human on the Loop へ / AIE2026
visional_engineering_and_design
2
750
TypeScript Compiler APIとPHP-Parserを活用し、TypeScriptとPHPで型を共有する
shuta13
0
320
AI活用を推進するために ファインディが下した、一つの小さな決断
starfish719
0
120
イベントストーミングとKiroの仕様駆動開発で実現する要件の認識合わせプロセス
syobochim
7
1k
Ruby::Boxでできること、Refinementsでできること
joker1007
3
350
Featured
See All Featured
Context Engineering - Making Every Token Count
addyosmani
9
930
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
590
Measuring & Analyzing Core Web Vitals
bluesmoon
9
850
Designing Powerful Visuals for Engaging Learning
tmiket
1
390
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.8k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
55k
Believing is Seeing
oripsolob
1
140
Typedesign – Prime Four
hannesfritz
42
3.1k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
23k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
0
1.6k
YesSQL, Process and Tooling at Scale
rocio
174
15k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
1
3.6k
Transcript
BIRのアーキテクチャと データ処理 Jumpei Takiyasu @juntaki M3, Inc.
自己紹介 滝安純平(@juntaki) BIRエンジニアチームリーダー兼BIRカンパニー執行役員 バックエンドとWebフロントエンドエンジニア、兼プロダクトマ ネージャをやっています。 もともと組み込みLinuxのカーネル開発をしていました。最近 はFlutterでなにか作っています。 好きな言語はGoʕ◔ϖ◔ʔ 2
今日話すこと • BIRのビジネスとシステムアーキテクチャ(再) • 回答データの活用方法・Cloud Schedulerを使ったバッチ処理 3
BIRのビジネスと システムアーキテクチャ 4
BIR - ビジネスインテリジェンス&リサーチ 医療従事者の会員向けアンケート(国内最大の医師パネル)をベースに、製薬 会社へのマーケティング支援を提供する事業を行っています。 5
アンケートページ
アンケートビジネスの流れ 1. アンケートを作る 2. 配信・督促をがんばる 3. データを整理する 4. データを可視化する アンケートを集める
データを活用できるよ うにする 7
アンケートシステムのアーキテクチャ 8
アンケートシステムのアーキテクチャ 1.アンケートを作る 2.配信・督促をがんばる 3.データを整理する 4. データを可視化する 9
Tableauとは データ可視化ツール • BigQueryやPostgreSQL、 Excelまで色々なデータに接 続可能 • データ整形、集計、可視化ま で、やりたいことは何でもでき る※すごいツール
※使いこなせば…!
Tableauの活用方法 1. 社内向け指標の可視化 a. アンケートの回答状況 b. 各種配信チャネルの流入状況 c. クラウド環境の課金状況 2.
納品物作成 a. クライアント向けダッシュボード b. データダウンロードツール
アンケートで扱うデータと格納先(概要) 配信に使うデータ • 配信ユーザID • アンケートID • ステータス 回答データ •
ユーザID • アンケートID • 回答内容 M3トップページ並のアクセス量 → Cloud Spanner 各アンケートシステムの 性能要件は一般的なWebアプリ → Cloud SQL / Aurora
可視化したいもの 内部的には… • 回答状況 • 各種KPI 納品物では… • 回答&設問 •
会員属性 配信システムの Spannerにある アンケートシステ ムのDB M3会員基盤 各所にあるデータを集めて可視化しなくては使えない 直接参照すると、可視化による負荷を各々考慮する必要があり設計難度が上がる BigQueryへ集約
バッチ処理 BigQueryにデータを集約させるための処理を Webアプリとは非同期に動かしたい • cronジョブ / SpringBatchなどフレームワークの機能 ◦ バッチ専用インスタンスが必要 ◦
アプリごとに作るので統一した管理が難しい • ワークフローエンジン(Digdag, Airflow, etc..) ◦ 依存関係がほぼ無いのでオーバースペック +失敗したときの復旧が面倒(前日の日次バッチ処理など …)
Cloud Schedulerをつかったバッチ処理 BIR独自の バッチ起動処理 他チームがDigdagから 使っていた処理を流用
バッチ処理起動用サーバ(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を書くだけ
この構成のメリット&デメリット メリット Fargateで都度コンテナを立ち上げるので、リソースを食い合って共倒れない Web APIになっているので、再実行が簡単(?date=20210220とすれば過去分も)Cloud Schedulerのコンソールが優秀 • DBメンテナンスでバッチ全部止めたい→停止ボタンおすだけ • 全部のバッチ処理を俯瞰したい
→されてる! デメリット 複雑な依存関係を考慮できない 保守は自分でがんばる
まとめ • BIRのビジネスとシステムアーキテクチャ • 回答データの活用方法・Cloud Schedulerを使ったバッチ処理 18
タイムテーブル 時間 タイトル スピーカー 19:00 ~ 19:05 オープニング 司会 19:05
~ 19:20 BIRのアーキテクチャとデータ処理 滝安 純平 19:20 ~ 19:40 DatastoreからSpannerへのゼロダウンタイム移行 四方田 貫児 アンケートシステムのデータ可視化 木村 一統 19:40 ~ 19:50 質疑応答・クロージング
アンケートのご協力をお願いします ※BIRで作っているアンケートシステム( Tiger)です! 医療従事者でない方はめったに触る機会がないので、ぜひこの機会にどうぞ We’re hiring! エムスリーのエンジニア 採用サイトはこちら アンケートはこちら
※現在は終了 しています