エムスリーテックブログ

エムスリー(m3)のエンジニア・開発メンバーによる技術ブログです

BIRの技術スタックとアーキテクチャ

f:id:juntaki1:20191212131221p:plain

この記事はエムスリー Advent Calendar 2019の12日目の記事です。 エムスリーエンジニアリンググループの滝安(@juntaki)です。BIRというチームでエンジニアやらプロダクトマネージャー的なことをしています。 BIRはビジネスインテリジェンス&リサーチの略で、そこでは医療従事者の会員向けアンケートをベースに、製薬会社へのマーケティング支援を提供する事業を行っています。そんなこともあり、最近では新しいアンケートシステムを作っていました。

www.m3tech.blog

記事でもGoやApp Engineを利用していますが、チーム全体としてもGoをメイン言語として採用し、クラウドの活用はAWSよりGCPの利用がメインです(エムスリー全体の技術スタックはこの辺をご参照ください)。現在開発中のものも含め、近い未来に実現するシステムのアーキテクチャと、採用している技術スタックについて紹介します。

BIRのシステム概要

アンケートと一口に言っても、その裏では色々なことをやっています。

f:id:juntaki1:20191211161350p:plain
システム全体の構成図

会員向けには当然ながらアンケート回答画面があるのですが、その裏ではそれを作るためのアンケート管理画面が必要です。そして、アンケートデータをレポート向けに分析するための集計システムが社内で利用されています。

さらに、最近ではより活用に繋がりやすい形式かつリアルタイムな情報提供のために可視化システムデータウェアハウス(DWH)を整備しています。

そして、ただアンケートの回答ページを作るだけでは、誰も訪れてくれません。なので、メルマガや、m3.com内にあるさまざまなチャネルからユーザに気づいてもらうための配信機能を統合した配信システムを現在開発中です。

技術スタックと全体のアーキテクチャ

つぎにどんな技術スタックを利用しているのかと、全体のアーキテクチャの概要を紹介します。

f:id:juntaki1:20191211180839p:plain
BIRの技術スタック&システムアーキテクチャ

各システムはAPI呼び出しか、Pub/SubのTopicをインタフェースとしたマイクロサービスになっています。 データの流れに沿って左側から説明していきます。

  1. アンケートに回答が入るとPub/Subに回答イベントが登録され、回答データがアンケートシステム上に保存されます。
  2. 配信システムは回答イベントを拾い、該当アンケートの配信状態に変更を加えます。 配信システムは複数あるアンケートシステム(ここに書いたもの以外も実はあります)のイベントを全部まとめて、現在の全配信状態を把握できるため、チャネル利用の最適化やモニタリングが行えるようになっています。
  3. バッチ処理により、回答データはBigQueryのDWHに同期され、Tableauからはそのデータが閲覧できる状態になります。

上記の流れとは別に集計システムはアンケートの配信が始まった瞬間から集計のための計算式を設定できるようになります。 回答の回収が完了した後、集計データをダウンロードし、レポートとして納品します。

まとめ

BIRシステム全体の概要・アーキテクチャと、それぞれのサービスで利用されている技術スタックについて説明しました。 各システムについては、関連記事に詳細な解説があるので、そちらもぜひ見てみてください。

We are hiring!

エムスリー、とくにBIRではGo/Reactエンジニアや、データ基盤開発に興味があるエンジニアを募集しています。社員とカジュアルにお話することもできますので、興味を持たれた方は下記よりお問い合わせください。

open.talentio.com

open.talentio.com

jobs.m3.com

関連記事

アンケートシステム(Ibis) www.m3tech.blog

www.m3tech.blog

www.m3tech.blog

アンケートシステム(Tiger) qiita.com

集計システム