Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

Copyrights(c) Henry, Inc. All rights reserved. 実装アプローチの比較 OpenTelemetry エージェントをアプリケーションに組 み込む ● 😀 ○ インフラ視点で管理するコンポーネントが一番少ない構成 ● 🤨 ○ アプリケーションと密結合になる ○ エージェントが起動してから、アプリケーションでリクエストを受付させる など気を遣う必要がある 9

Slide 10

Slide 10 text

Copyrights(c) Henry, Inc. All rights reserved. 実装アプローチの比較 OpenTelemetry コレクターをサイドカーとして組み込む ● 😀 ○ アプリケーションからコレクター部分を切り離して管理できる ● 🤨 ○ 一般的なコンテナ PaaS の課金体系と相性が悪い ○ Cloud Run ではマルチコンテナ対応が 2023/10 時点で pre-GA 10

Slide 11

Slide 11 text

Copyrights(c) Henry, Inc. All rights reserved. 実装アプローチの比較 独立した OpenTelemetry コレクターにトレース情報を送信する ● 😀 ○ アプリケーションからコレクター部分を切り離して管理できる ○ アプリケーションのトレース情報の送信先をまとめることができる -> コス トメリットが期待できる ● 🤨 ○ インフラ視点だと構成が一番複雑になる ○ トレース情報の送信元と OpenTelemetry コレクターの間で通信ができ なかった時のアプリケーションの挙動を確認しておく必要がある 11

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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!!