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

ヘンリーにおける可観測性獲得への取り組み

nabeo
October 19, 2023

 ヘンリーにおける可観測性獲得への取り組み

nabeo

October 19, 2023
Tweet

More Decks by nabeo

Other Decks in Technology

Transcript

  1. Copyrights(c) Henry, Inc. All rights reserved.
    好きになる、はじめての電子カルテ
    OpenTelemetry Meetup 2023-10
    ヘンリーにおける可観測性獲得への取り組み
    2023/10/19 @nabeo

    View Slide

  2. Copyrights(c) Henry, Inc. All rights reserved.
    自己紹介
    渡辺 道和 (@nabeo)
    株式会社ヘンリー CTO室 SRE
    2023年06月〜
    2

    View Slide

  3. Copyrights(c) Henry, Inc. All rights reserved.
    クラウド型電子カルテ・レセコンシステム「Henry」
    ● 電子カルテ : 医療情報を管理・記録するソフトウェア
    ● レセコンシステム : レセプト (診療報酬) に基づいた会計情報を管
    理するソフトウェア
    3

    View Slide

  4. Copyrights(c) Henry, Inc. All rights reserved.
    扱っている課題の特徴と技術スタック
    ● ドメインが巨大、かつ、複雑、かつ、難解
    ○ 難解な診療報酬制度が2年ごとに改訂される
    ○ 地方自治体ごとに異なる公費の計算
    ○ 医療機関様ごとに異なるニーズへの対応
    ○ ソフトウェアとしても機能が複雑に絡まっていて見通しにくい状態
    ● 技術スタック
    ○ Server-side Kotlin
    ○ Backend for Frontend としての Node.js (TypeScript)
    ○ gRPC、GraphQL
    ○ Google Cloud
    4

    View Slide

  5. Copyrights(c) Henry, Inc. All rights reserved.
    可観測性獲得文脈での課題
    ● 医療機関様ごとに必要とされる機能やその使用頻度が異なる
    ● 問題やお問い合わせの切り分けが難しい
    ● SLI/SLO の整備でも可観測性の獲得は重要である
    5

    View Slide

  6. Copyrights(c) Henry, Inc. All rights reserved.
    ヘンリーにおける Observability ツールの現

    ● 一部で OpenTelemetry のトレース情報を Cloud Trace や
    Sentry に送信して、可視化をしている
    ○ OpenTelemetry SDK のトレース ID 採番を利用して、分散システムの
    ログにトレーサビリティを持たせている
    ○ 意図通りのトレーサビリティが確保できていない問題があった
    ● 【イマココ】トレース情報の送信方法の見直し
    ○ 一緒にプロジェクトを進めている同僚から OpenTelemetryを正しく計装
    して、Datadogに連携したら欲しい情報がとれていそうという示唆があっ

    6

    View Slide

  7. Copyrights(c) Henry, Inc. All rights reserved.
    Datadog の検討
    ● いい感じに可視化できて、トレース情報の扱いもコントロールでき
    そう
    ○ とくに tail sampling ができそうということが大きい
    ● 一旦、Datadog の採用は見送る方針に変更
    ○ OpenTelemetry 計装に問題がありそうということもわかった
    ○ コストの試算したところ一旦は採用を見送って、Cloud Trace や Cloud
    Logging をちゃんと使う方針に方向転換
    ■ Datadog の利用料金だけでまぁまぁな金額になりそうだった
    ■ OpenTelemetry の計装だけでは Datadog による可視化、データ連携で制限が
    つく
    7

    View Slide

  8. Copyrights(c) Henry, Inc. All rights reserved.
    Cloud Run サービス + OpenTelemetry
    Collector エージェントの実装アプローチ
    ● OpenTelemetry エージェントをアプリケーションに組み込む
    ● OpenTelemetry コレクターをサイドカーとして組み込む
    ● 完全に独立した OpenTelemetry コレクターにトレース情報を送信
    する
    8

    View Slide

  9. Copyrights(c) Henry, Inc. All rights reserved.
    実装アプローチの比較
    OpenTelemetry エージェントをアプリケーションに組
    み込む

    😀
    ○ インフラ視点で管理するコンポーネントが一番少ない構成

    🤨
    ○ アプリケーションと密結合になる
    ○ エージェントが起動してから、アプリケーションでリクエストを受付させる
    など気を遣う必要がある
    9

    View Slide

  10. Copyrights(c) Henry, Inc. All rights reserved.
    実装アプローチの比較
    OpenTelemetry コレクターをサイドカーとして組み込む

    😀
    ○ アプリケーションからコレクター部分を切り離して管理できる

    🤨
    ○ 一般的なコンテナ PaaS の課金体系と相性が悪い
    ○ Cloud Run ではマルチコンテナ対応が 2023/10 時点で pre-GA
    10

    View Slide

  11. Copyrights(c) Henry, Inc. All rights reserved.
    実装アプローチの比較
    独立した OpenTelemetry コレクターにトレース情報を送信する

    😀
    ○ アプリケーションからコレクター部分を切り離して管理できる
    ○ アプリケーションのトレース情報の送信先をまとめることができる -> コス
    トメリットが期待できる

    🤨
    ○ インフラ視点だと構成が一番複雑になる
    ○ トレース情報の送信元と OpenTelemetry コレクターの間で通信ができ
    なかった時のアプリケーションの挙動を確認しておく必要がある
    11

    View Slide

  12. Copyrights(c) Henry, Inc. All rights reserved.
    Cloud Run で OpenTelemetry コレクターを
    動かす時の注意
    ● OpenTelemetry の Node.js 向け SDK では認証ヘッダをつける
    ことが難しいので、通信経路を工夫する必要がある
    ● OpenTelemetry の仕様の他にベンダー独自拡張の仕様にも気を
    配って計装する必要がある
    12

    View Slide

  13. Copyrights(c) Henry, Inc. All rights reserved.
    Thank you
    We are hiring!!
    https://jobs.henry-app.jp/
    13
    https://dev.henry.jp/
    We are writing!!

    View Slide