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
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Jumpei Takiyasu
January 28, 2021
Technology
0
820
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.3k
ROSでSLAMラジコンをつくる
juntaki
0
3.7k
6足歩行ロボットをつくった
juntaki
0
760
GoでAPIサーバをはやくつくる
juntaki
26
13k
Undocumented!? firebase
juntaki
0
310
3Dプリンタと4足歩行プロトタイプ
juntaki
0
6.7k
アンケートの集計システムを作った
juntaki
0
3.8k
Goならわかる Linuxのメモリ管理
juntaki
13
6.2k
社内勉強会の管理ツール Sugoi Meetupをつくった
juntaki
0
830
Other Decks in Technology
See All in Technology
A Gentle Introduction to Transformers
keio_smilab
PRO
2
1k
vLLM Community Meetup Tokyo #3 オープニングトーク
jpishikawa
0
320
ランサムウエア対策してますか?やられた時の対策は本当にできてますか?AWSでのリスク分析と対応フローの泥臭いお話。
hootaki
0
110
非情報系研究者へ送る Transformer入門
rishiyama
11
7k
Oracle Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
5
1.2k
(Test) ai-meetup slide creation
oikon48
1
220
[JAWS DAYS 2026]私の AWS DevOps Agent 推しポイント
furuton
0
140
Yahoo!ショッピングのレコメンデーション・システムにおけるML実践の一例
lycorptech_jp
PRO
1
190
親子 or ペアで Mashup for the Future! しゃべって楽しむ 初手AI駆動でものづくり体験
hiroramos4
PRO
0
100
Oracle Database@AWS:サービス概要のご紹介
oracle4engineer
PRO
3
1.7k
マネージャー版 "提案のレベル" を上げる
konifar
22
15k
JAWS DAYS 2026 ExaWizards_20260307
exawizards
0
410
Featured
See All Featured
Evolving SEO for Evolving Search Engines
ryanjones
0
150
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.4k
Designing Powerful Visuals for Engaging Learning
tmiket
0
270
WENDY [Excerpt]
tessaabrams
9
36k
It's Worth the Effort
3n
188
29k
Site-Speed That Sticks
csswizardry
13
1.1k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Bash Introduction
62gerente
615
210k
YesSQL, Process and Tooling at Scale
rocio
174
15k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.6k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.7k
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! エムスリーのエンジニア 採用サイトはこちら アンケートはこちら
※現在は終了 しています