OpenTelemetry Meetup 2023-10 https://opentelemetry.connpass.com/event/296353/
Copyrights(c) Henry, Inc. All rights reserved.好きになる、はじめての電子カルテOpenTelemetry Meetup 2023-10ヘンリーにおける可観測性獲得への取り組み2023/10/19 @nabeo
View Slide
Copyrights(c) Henry, Inc. All rights reserved.自己紹介渡辺 道和 (@nabeo)株式会社ヘンリー CTO室 SRE2023年06月〜2
Copyrights(c) Henry, Inc. All rights reserved.クラウド型電子カルテ・レセコンシステム「Henry」● 電子カルテ : 医療情報を管理・記録するソフトウェア● レセコンシステム : レセプト (診療報酬) に基づいた会計情報を管理するソフトウェア3
Copyrights(c) Henry, Inc. All rights reserved.扱っている課題の特徴と技術スタック● ドメインが巨大、かつ、複雑、かつ、難解○ 難解な診療報酬制度が2年ごとに改訂される○ 地方自治体ごとに異なる公費の計算○ 医療機関様ごとに異なるニーズへの対応○ ソフトウェアとしても機能が複雑に絡まっていて見通しにくい状態● 技術スタック○ Server-side Kotlin○ Backend for Frontend としての Node.js (TypeScript)○ gRPC、GraphQL○ Google Cloud4
Copyrights(c) Henry, Inc. All rights reserved.可観測性獲得文脈での課題● 医療機関様ごとに必要とされる機能やその使用頻度が異なる● 問題やお問い合わせの切り分けが難しい● SLI/SLO の整備でも可観測性の獲得は重要である5
Copyrights(c) Henry, Inc. All rights reserved.ヘンリーにおける Observability ツールの現状● 一部で OpenTelemetry のトレース情報を Cloud Trace やSentry に送信して、可視化をしている○ OpenTelemetry SDK のトレース ID 採番を利用して、分散システムのログにトレーサビリティを持たせている○ 意図通りのトレーサビリティが確保できていない問題があった● 【イマココ】トレース情報の送信方法の見直し○ 一緒にプロジェクトを進めている同僚から OpenTelemetryを正しく計装して、Datadogに連携したら欲しい情報がとれていそうという示唆があった6
Copyrights(c) Henry, Inc. All rights reserved.Datadog の検討● いい感じに可視化できて、トレース情報の扱いもコントロールできそう○ とくに tail sampling ができそうということが大きい● 一旦、Datadog の採用は見送る方針に変更○ OpenTelemetry 計装に問題がありそうということもわかった○ コストの試算したところ一旦は採用を見送って、Cloud Trace や CloudLogging をちゃんと使う方針に方向転換■ Datadog の利用料金だけでまぁまぁな金額になりそうだった■ OpenTelemetry の計装だけでは Datadog による可視化、データ連携で制限がつく7
Copyrights(c) Henry, Inc. All rights reserved.Cloud Run サービス + OpenTelemetryCollector エージェントの実装アプローチ● OpenTelemetry エージェントをアプリケーションに組み込む● OpenTelemetry コレクターをサイドカーとして組み込む● 完全に独立した OpenTelemetry コレクターにトレース情報を送信する8
Copyrights(c) Henry, Inc. All rights reserved.実装アプローチの比較OpenTelemetry エージェントをアプリケーションに組み込む●😀○ インフラ視点で管理するコンポーネントが一番少ない構成●🤨○ アプリケーションと密結合になる○ エージェントが起動してから、アプリケーションでリクエストを受付させるなど気を遣う必要がある9
Copyrights(c) Henry, Inc. All rights reserved.実装アプローチの比較OpenTelemetry コレクターをサイドカーとして組み込む●😀○ アプリケーションからコレクター部分を切り離して管理できる●🤨○ 一般的なコンテナ PaaS の課金体系と相性が悪い○ Cloud Run ではマルチコンテナ対応が 2023/10 時点で pre-GA10
Copyrights(c) Henry, Inc. All rights reserved.実装アプローチの比較独立した OpenTelemetry コレクターにトレース情報を送信する●😀○ アプリケーションからコレクター部分を切り離して管理できる○ アプリケーションのトレース情報の送信先をまとめることができる -> コストメリットが期待できる●🤨○ インフラ視点だと構成が一番複雑になる○ トレース情報の送信元と OpenTelemetry コレクターの間で通信ができなかった時のアプリケーションの挙動を確認しておく必要がある11
Copyrights(c) Henry, Inc. All rights reserved.Cloud Run で OpenTelemetry コレクターを動かす時の注意● OpenTelemetry の Node.js 向け SDK では認証ヘッダをつけることが難しいので、通信経路を工夫する必要がある● OpenTelemetry の仕様の他にベンダー独自拡張の仕様にも気を配って計装する必要がある12
Copyrights(c) Henry, Inc. All rights reserved.Thank youWe are hiring!!https://jobs.henry-app.jp/13https://dev.henry.jp/We are writing!!