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
Jumpei Takiyasu
January 28, 2021
Technology
0
770
BIRのアーキテクチャと 技術選定
エムスリーアンケートシステムの技術:マイクロサービス/認証
https://m3-engineer.connpass.com/event/200495/
Jumpei Takiyasu
January 28, 2021
Tweet
Share
More Decks by Jumpei Takiyasu
See All by Jumpei Takiyasu
BIRのアーキテクチャと データ処理
juntaki
0
1.2k
ROSでSLAMラジコンをつくる
juntaki
0
3.5k
6足歩行ロボットをつくった
juntaki
0
720
GoでAPIサーバをはやくつくる
juntaki
26
13k
Undocumented!? firebase
juntaki
0
300
3Dプリンタと4足歩行プロトタイプ
juntaki
0
6.6k
アンケートの集計システムを作った
juntaki
0
3.6k
Goならわかる Linuxのメモリ管理
juntaki
13
6.2k
社内勉強会の管理ツール Sugoi Meetupをつくった
juntaki
0
810
Other Decks in Technology
See All in Technology
事業開発におけるDify活用事例
kentarofujii
5
1.4k
serverless team topology
_kensh
3
210
SQLAlchemy の select(User).where(User.id =="123") を理解してみる/sqlalchemy deep dive
3l4l5
3
330
AI AgentをLangflowでサクッと作って、1日働かせてみた!
yano13
1
150
AI駆動で進める依存ライブラリ更新 ─ Vue プロジェクトの品質向上と開発スピード改善の実践録
sayn0
1
260
頭部ふわふわ浄酔器
uyupun
0
110
難しいセキュリティ用語をわかりやすくしてみた
yuta3110
0
380
AI時代の開発を加速する組織づくり - ブログでは書けなかったリアル
hiro8ma
1
300
SCONE - 動画配信の帯域を最適化する新プロトコル
kazuho
1
320
まだ間に合う! 2025年のhono/ssg事情
watany
3
630
Dify on AWS 環境構築手順
yosse95ai
0
120
「最速」で Gemini CLI を使いこなそう! 〜Cloud Shell/Cloud Run の活用〜 / The Fastest Way to Master the Gemini CLI — with Cloud Shell and Cloud Run
aoto
PRO
1
170
Featured
See All Featured
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
34
2.3k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
The Invisible Side of Design
smashingmag
302
51k
How to train your dragon (web standard)
notwaldorf
97
6.3k
Git: the NoSQL Database
bkeepers
PRO
431
66k
It's Worth the Effort
3n
187
28k
Build your cross-platform service in a week with App Engine
jlugia
233
18k
Designing for Performance
lara
610
69k
jQuery: Nuts, Bolts and Bling
dougneiner
65
7.9k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
127
54k
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.5k
Transcript
BIRのアーキテクチャと 技術選定
自己紹介 滝安純平(@juntaki) BIRエンジニアチームリーダー兼BIRカンパニー執行役員 バックエンドとWebフロントエンドエンジニア、兼プロダクトマ ネージャをやっています。 もともと組み込みLinuxのカーネル開発をしていました。最近 はFlutterでなにか作っています。 好きな言語はGoʕ◔ϖ◔ʔ 2
今日話すこと • BIRのビジネスとシステムアーキテクチャ • 技術選定の経緯 Go / Google Cloud 構成をシンプルにして、
やりたいことに集中する 3
BIRのビジネスと システムアーキテクチャ 4
BIR - ビジネスインテリジェンス&リサーチ 医療従事者の会員向けアンケート(国内最大の医師パネル)をベースに、製薬 会社へのマーケティング支援を提供する事業を行っています。 5
アンケートページ
アンケートビジネスの流れ 1. アンケートを作る 2. 配信・督促をがんばる 3. データを整理する 4. データを可視化する アンケートを集める
データを活用できるよ うにする 7
アンケートシステムのアーキテクチャ 責務を分割して、依存関係を シンプルにする 8
アンケートシステムのアーキテクチャ 1.アンケートを作る 2.配信・督促をがんばる 3.データを整理する 4. データを可視化する アクセス量大 督促ロジックにフォーカス アクセスは比較的少ない UI/UX、管理・運用にフォーカス
9
もうすこし現実に近づけると… 実際はアンケートシステムがたくさんある。配信と督促や認証を集約することで、アンケート全体を通して の回収状況の可視化・督促ロジックの設計が可能になる。当然、機能の重複もへる 10
アンケートシステムがたくさんある理由 いろいろなアンケート形式があり、まとめると複雑になりすぎる →部分的には類似機能の再実装になるが、それぞれで最適を目指しやすい アンケート形式の例: • 管理画面でアンケートを作れるふつうのアンケートシステム • M3会員情報を付与して他アンケートへリダイレクトするシステム • アンケートの回答に応じて他のアンケートが始まる
• 月に1回配信される日記形式のアンケート 11
システムアーキテクチャまとめ 責務・アンケート形式ごとにシステムを分割し、依存関係をシンプルにする →最適な実装を目指しやすくする 構成をシンプルにして、 やりたいことに集中する 12
技術選定の経緯 Go / Google Cloud 13
最近の歴史 時期 できごと 技術要素 2018年11月 集計システムリリース Racoon Go/App Engine(Go導入/App Engine導入)
2019年8月 アンケート新管理画面リリース Tiger Kotlin,Spring/オンプレ(後にAWSへ移行) 2019年9月 新アンケートシステムリリース Ibis Go/App Engine 2019年12月 配信システムリリース Dolphin Go/App Engine 2020年7月 新アンケートシステムリリース Coyote Go/Cloud Run(Cloud Run導入) 2020年8月 配信システムバックエンド Spanner化 Cloud Spanner 2020年12月 全アンケートシステムが配信システムへ統合 14
Goを導入した理由 Javaが多い中で、下記の特徴・メリットがあったため受け入れられた • 静的型付+オブジェクト指向的な考えで作れる • いろんな書き方ができない(いい意味で) • コンパイル・起動が高速 説明できればチームごと判断で柔軟に入る文化 15
Webフレームワークは使わない net/httpとコード自動生成の組み合わせ、Clean Architectureで整理 フレームワークは言語よりも寿命が短い、習得ハードルも高くなる 16 https://speakerdeck.com/juntaki/godeapisabawohayakutukuru → シンプルな構成で、キャッチアップや保守を効率化
Goを導入した結果 その後のプロダクトは基本的にGoが多め ※Go以外を使わないわけではない、適材適所 チームの感想 「言語仕様がとにかくシンプルなので参照しているライブラリの中までコードを追いたいと きも追いやすい」 「公式でSDKや実装サンプルが公開されていることが多い」 17
Google Cloudを導入した理由 エムスリーは全体的にAWSの利用が多かったが、BIRではサーバーレスなコンポーネ ント(App EngineとCloud Run)を中心に活用している 当時は… • アンケートシステムの数よりもエンジニアが少ない •
SREチームとの連携ポイントを減らしてスピードアップ Google Cloudはコンポーネントを組み合わせなくてもWebサービスが成立する ※コントロールできる要素が少ないことがメリットになるようにシステムを組む必要はある 18
Google Cloudを導入した結果 その後のプロダクトは基本的にGoogle Cloud(以下略) ※オンプレサーバの移行など、サーバーレスのメリットを享受しにくい時などはAWSも使います。適材適所 チームの感想 「AWSと比べると一つ抽象化されている感じがする。Cloud Run便利」 「設定項目がすくない分、考えることが少なくて済んでいる。App EngineやCloud
Runの 使い勝手が良い。」 19
全体のまとめ 責務・アンケート形式ごとにシステムを分割し、依存関係をシンプルにする さらにGo/Google Cloudの組み合わせで、Webサービスの機能開発にフォーカス 構成をシンプルにして、 やりたいことに集中する 20
アンケートのご協力をお願いします ※BIRで作っているアンケートシステム( Tiger)です! 医療従事者でない方はめったに触る機会がないので、ぜひこの機会にどうぞ We’re hiring! エムスリーのエンジニア 採用サイトはこちら アンケートはこちら
※現在は終了 しています