Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

M3の医療webサービス群を支える基盤技術

1,544 views

Published on

吉祥寺.pm #13 https://kichijojipm.connpass.com/event/75327/ の発表資料です。

Published in: Technology
  • Be the first to comment

M3の医療webサービス群を支える基盤技術

  1. 1. エムスリーの医療Webサービス群 を支える基盤技術 2017/2/9 吉祥寺.pm #13 @progrhyme
  2. 2. 自己紹介 ➢ @progrhyme ○ https://github.com/progrhyme ○ https://twitter.com/progrhyme ➢ 職歴: ○ 〜2017 Oct. @DeNA ○ 〜現在 @M3 ➢ 担当: ○ 電子カルテ ○ AIチーム ○ その他 ➢ 主務はサーバインフラ, DevOps周り 2
  3. 3. 今日のテーマ ➢ エムスリーの多様なWebサービスを構成するシステ ムの要素技術や、サービス横断で開発や運用を支え るツール・技術を紹介する。 3
  4. 4. アジェンダ ➢ サービス・インフラ概観 ➢ 開発プロセス・ツール ➢ インフラツール ➢ まとめ 4
  5. 5. サービス・インフラ概観
  6. 6. M3のサービス構成 ➢ 国内・海外合わせて30以上 ➢ 対象ユーザ別: ○ 医療従事者(m3.com, ...) ○ 医療関連企業(MR君, ...) ○ 医療施設(m3.com CAREER, …) ○ 一般企業(広告, マーケティング等) ○ 一般ユーザ(AskDoctors, …) ➢ サブコンポーネントを含めると扱う システムは100を超える ➢ 参考: ○ https://corporate.m3.com/service/m edical-staff/ 6 m3.com MR君 m3.com CAREER AskDoctors
  7. 7. インフラ構成概要 7 M3 本社 グループ各社 オフィスNW DC (オンプレ) GCP クラウド
  8. 8. オンプレ vs クラウド ➢ 新しいサービスでは、クラウドの利用が増えている。 ➢ 提供サービス数の比では、まだオンプレの方が多い。 ➢ クラウドはAWSを使うケースが多い。 ➢ 一部でGCPやその他のクラウドを利用。 8
  9. 9. 典型的なWebサービスの構成 ➢ Webサーバ ○ 古いものはApacheが多い ○ 新しいものは大体 Nginx ➢ Applicationサーバ ○ Java (含む Scala, Kotlin) ■ フレームワーク … Play, Spring Bootなど ■ Tomcat ○ Ruby ■ フレームワーク … ほとんど Rails ■ サーバ … passenger, unicorn, puma ➢ DB ○ PostgreSQLが多い ○ MySQLやOracleもある 9
  10. 10. OCTOPARTS ➢ API aggregator ○ Scala製。Netflix/Hystrix を利用 ○ Microservicesのお伴に ○ 複数のバックエンドAPIに並列クエリ, レスポンスのキャッシング, タイ ムアウト設定, サーキット・ブレーカー, 管理画面, アラート送信, … な どの機能 ➢ https://m3dev.github.io/octoparts/ 10
  11. 11. 開発プロセス・ツール
  12. 12. ロールアウト ➢ Jenkinsからサーバに対してコマンドをキックしている パターンが多い ➢ kentaro/cinnamon や Capistrano を利用 12 web/app servers Pipeline script Cinammon Jenkins
  13. 13. GitLab ➢ Community Edition (OSS版)をセルフホストして動か している ➢ GitHubと機能的に遜色ないが、Community版ゆえ の制限がたまにつらい ➢ GitLab CI便利 13
  14. 14. 社内リポジトリ ➢ JFrog Artifactory as Maven Repository ➢ Sonatype Nexus as … ○ RubyGems ○ PyPI … New! ➢ 今後: ○ Nexus (v3)に統合していきたい 14
  15. 15. Nexus Repository Manager ➢ 以下に対応: ○ RubyGems, PyPI, Maven ○ npm, Bower ○ Docker Registry ○ YUM ○ NuGet ○ 他 ○ ※DarkPANのサポートはな い ➢ Java アプリケーション ➢ Nginx -> Jetty に reverse proxy ➢ ドキュメントも充実 ○ https://help.sonatype.com/display/ NXRM3 15
  16. 16. AWS Gateway (内製ツール) 16
  17. 17. AWS Gateway (内製ツール) ➢ AWS IAM IDフェデレーション ○ 外部のIDプロバイダーと連携してユーザーのアクセス権限 を指定できる ○ OpenID Connect, SAML 2.0に対応 ○ Cognitoでモバイルにも対応可能 ➢ Ruby on RailsのWebアプリを作った ➢ Nginx -> Unicorn に reverse proxy ➢ DB は PostgreSQL 17
  18. 18. インフラツール
  19. 19. Infrastructure as Code ➢ kickstart … オンプレのOSインストール ➢ Ansible ○ サーバの構成管理 ○ オンプレ、クラウド両方で利用 ○ 参考: Ansible オレオレベストプラクティス - Qiita ➢ Terraform, Packer ○ クラウド環境の構成管理に利用 19
  20. 20. Monitoring ➢ Cacti … メトリクス ➢ Kibana … アクセスログ, response time等 ➢ Prometheus … Docker Swarmクラスタ ➢ Zipkin … Microservicesの分散トレーシング ➢ その他 ○ CloudWatch … AWS ○ Sentry … エラーログ監視 ○ OCTOPARTS ○ 内製のE2E監視デーモン ○ etc. 20
  21. 21. その他の基盤ツール・システム ➢ プロダクション環境で動作: ○ m3.com 会員認証 ■ API ■ OpenID ○ ログイン攻撃検知API … ツールによるアクセスなどを遮断 ○ メール送信API ➢ In-houseなもの: ○ LDAP … 社内システムの認証用 ○ Gistub … Gistクローン。GitLabだとSnippets 21
  22. 22. まとめ
  23. 23. まとめ〜入社3ヶ月を経て〜 ➢ レガシー化したシステムもあるが、新しい技術も積極 的に取り入れている ○ リニューアル案件も複数走っている ■ 例: 10年前のレガシーシステムをサーバーサイドKotlinでフルリニューア ルしている話 ➢ 共通基盤が整っている ○ 基盤チームによる横断ツールの開発、メンテ、サポート ○ サービス側で車輪を再開発しなくていい ➢ SREが足りない! ○ 専任のSRE/インフラ要員は3人 ○ SREチーム立ち上げ中 23
  24. 24. We are hiring! ➢ https://corporate.m3.com/recruit/job/engineering/ ➢ Tech Talk (月2回)やカジュアル面談にぜひお越し下さい!! 24
  25. 25. ご清聴ありがとうございました。

×