$30 off During Our Annual Pro Sale. View Details »

クラウド型電子カルテシステムと Microservices への歩み

Ryo Sakuma
January 18, 2018

クラウド型電子カルテシステムと Microservices への歩み

LT @Microservices Meetup vol.6 https://microservices-meetup.connpass.com/event/75332/

See also: ScalaMatsuri 2018 3/17 13:15-13:25『Scalaでの部分的な関数型プログラミング』http://2018.scalamatsuri.org/#day1

Ryo Sakuma

January 18, 2018
Tweet

More Decks by Ryo Sakuma

Other Decks in Technology

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide