Slide 1

Slide 1 text

Copyright © 2018 M3, Inc. All Rights Reserved クラウド型電子カルテシステムと Microservices への歩み LT @Microservices Meetup vol.6 加藤 諒(エムスリー株式会社)

Slide 2

Slide 2 text

サービス概要 クラウド型電子カルテシステム - クラウド: AWSを用いて構築(大手はオンプレ) - 電子カルテ: 患者情報の入力・会計機能 - 症状・処方した医薬品名などを入力 - その日に患者が支払う金額を計算 - 医師が過去に入力したデータから 医薬品などを事前にレコメンド => ほぼクリックだけでカルテが完成

Slide 3

Slide 3 text

サービスアーキテクチャ概要 ・レコメンド ・会計 常時接続 WebSocket メイン ロジック クリニック内

Slide 4

Slide 4 text

サービスアーキテクチャ概要 ・レコメンド ・会計 常時接続 WebSocket メイン ロジック クリニック内 よくありがちな web アプリ

Slide 5

Slide 5 text

今日のトピック ・レコメンド ・会計 メイン ロジック HTTP & JSON Faraday gem チョット Microservices な構成が どのように生まれてきたか

Slide 6

Slide 6 text

ファーストリリース前 レコメンド メイン ロジック

Slide 7

Slide 7 text

ファーストリリース前 レコメンド メイン ロジック 一般論: 良いユーザ体験をもたらす レコメンド機能の実装には 十分多量のデータ処理が必要

Slide 8

Slide 8 text

ファーストリリース前 レコメンド メイン ロジック フィールドテストの初期段階で 重すぎる処理・応答速度が発生

Slide 9

Slide 9 text

ファーストリリース前 レコメンド メイン ロジック Thread を利用した 待ち合わせ処理に転換 Rails + Thread の結果 - autoload 壊れる - Concern 壊れる - バージョンアップへの負債

Slide 10

Slide 10 text

ファーストリリース前 レコメンド メイン ロジック レコメンド機能に専念する 別アプリケーションとして 分離することに

Slide 11

Slide 11 text

ファーストリリース前 メイン ロジック HTTP & JSON Faraday gem レコメンド JVM 上でスレッドを使う アプリケーションを Scala + Skinny Framework で実装

Slide 12

Slide 12 text

ファーストリリース メイン ロジック HTTP & JSON Faraday gem レコメンド 速い応答速度・良いユーザ体験 キラー機能・ビジネスにも貢献 良いユーザ体験を実現するため Microservices 的になった

Slide 13

Slide 13 text

会計機能リリース前 メイン ロジック HTTP & JSON Faraday gem レコメンド 会計は「金銭の発生する計算」 - 関数型のアプローチ - 保守性の高い言語・技術を使 いたい - 尖った新技術に挑戦したい

Slide 14

Slide 14 text

会計機能リリース前 メイン ロジック HTTP & JSON Faraday gem レコメンド Scala + Cats による実装を 別エンドポイントとして追加 Cats: Scala の関数型ライブラリ Scala + Cats の開発に関しては同僚が ScalaMatsuri 2018 (3/17 13:15-13:25) で登壇

Slide 15

Slide 15 text

会計機能リリース前 メイン ロジック HTTP & JSON Faraday gem Scala + Cats による実装を 別エンドポイントとして追加 Cats: Scala の関数型ライブラリ Scala + Cats の開発に関しては同僚が ScalaMatsuri 2018 (3/17 13:15-13:25) で登壇 ・レコメンド ・会計

Slide 16

Slide 16 text

会計機能リリース メイン ロジック HTTP & JSON Faraday gem - 保守性の高い言語・技術 - 尖った新技術への挑戦 - 現在も安定稼働 ・レコメンド ・会計 Microservices 的な構成により 技術選択の幅が広がった

Slide 17

Slide 17 text

今後の展望 ・レコメンド ・会計 常時接続 WebSocket メイン ロジック クリニック内 EC2 のコンテナ化(ECS など) - 運用の時間的コスト削減 - ちなみに社内別サービスでは Elastic Beanstalk の運用実績

Slide 18

Slide 18 text

まとめ - Monolithic => チョット Microservices へ - Microservices は原理主義的にこだわらずとも 十分にメリットのある技術選択肢 - Microservices による適材適所の技術選択で 良いユーザ体験・ビジネスにも貢献 - Microservices によりエンジニアの伸び代が作れる