Slide 1

Slide 1 text

JJUGナイトセミナー - OpenTelemetryとSpring Boot 4.0で進化するJavaアプリの可観測性 
 APMの世界から見る
 OpenTelemetryのTraceの世界


Slide 2

Slide 2 text

オブザーバビリティやってますか?
 
 
 What is it?


Slide 3

Slide 3 text

今日から始めれる
 
 Application Performance Monitoring
 What is it?


Slide 4

Slide 4 text

OpenTelemetryのTraceを活用した
 
 Javaアプリの可視化をやっていきます
 What is it?


Slide 5

Slide 5 text

1. 自己紹介
 2. OpenTelemetryとその仕組み
 3. Traceのはじめ方
 4. 実務で役立つAPMのTips
 5. おわりに
 あじぇんだ


Slide 6

Slide 6 text

1. 自己紹介
 2. OpenTelemetryとその仕組み
 3. Traceのはじめ方
 4. 実務で役立つAPMのTips
 5. おわりに
 あじぇんだ


Slide 7

Slide 7 text

自己紹介
 曽根 壮大(41歳)
 Have Fun Tech LLC 代表社員
 株式会社リンケージ CTO 兼 COO
 
 そ
 ● 日本PostgreSQLユーザ会 勉強会分科会 担当
 ● 3人の子供がいます(長女、次女、長男)
 ● 技術的にはWeb/LL言語/RDBMSが好きです
 ● コミュニティが好き たけ
 ね
 とも


Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

経歴 高校卒業
 浪人
 警察官
 派遣社員
 社内SE
 インフラエンジニア
 Web エンジニア
 フルスタック
 エンジニア
 CTO(第1期)
 Customer Reliability Engineer
 CTO(第2期)
 独立
 ここから東京 いまここ リーマンショックと警察官の退職 タイミングが重複する 
 ソフトウェア エンジニア 
 CTO(第3期)
 COO & CTO


Slide 10

Slide 10 text

1. 自己紹介
 2. OpenTelemetryとその仕組み
 3. Traceのはじめ方
 4. 実務で役立つAPMのTips
 5. おわりに
 あじぇんだ


Slide 11

Slide 11 text

OpenTelemetryとは
 
 
 OpenTelemetryとその仕組み

Slide 12

Slide 12 text

● 3つのシグナルをベースにテレメトリーデータを収集する
 ○ ログ
 ○ メトリック
 ○ トレース
 ● 集めたデータを任意のバックエンドへエクスポートする
 ● 上記を満たすための標準規格を定めた
 オープンソースプロジェクト
 OpenTelemetryとは

Slide 13

Slide 13 text

● 3つのシグナルをベースにテレメトリーデータを収集する
 ○ ログ
 ○ メトリック
 ○ トレース
 ● 集めたデータを任意のバックエンドへエクスポートする
 ● 上記を満たすための標準規格を定めた
 オープンソースプロジェクト
 OpenTelemetryとは 言語やベンダーに依存しない 
 もちろんJavaもサポート! 


Slide 14

Slide 14 text

OpenTelemetryと3つのシグナル https://github.com/cncf/tag-observability/raw/whitepaper-v1.0.0/assets/primary-signals.png 
 


Slide 15

Slide 15 text

● ログ
 ○ システムで発生したイベントのタイムスタンプ付きのメッセージの記録 
 ○ 基本的にはテキストデータ
 ■ フォーマットは指定されていない 
 ■ JSONを使うことが多い
 ○ メリット
 ■ 簡単でわかりやすい
 ■ あとから集計できる
 ○ デメリット
 ● ストレージコストがとにかく高い
 3つのシグナル

Slide 16

Slide 16 text

● メトリックス
 ○ システムの数値データを集計した時系列の記録 
 ○ グラフにすることができる
 ■ 線グラフとか棒グラフとか色々見せ方はあるが線グラフが多い 
 ○ メリット
 ■ 数値の集計は自由に設定できる 
 ■ 数値なので閾値でアラートを仕掛けることができる 
 ■ 軽量なのでストレージコストが安い 
 ○ デメリット
 ● 数値だけでは根拠はわからない 
 ● 瞬間ではなく、一定時間の時系列データが必要 
 3つのシグナル

Slide 17

Slide 17 text

● メトリックス
 ○ システムの数値データを集計した時系列の記録 
 ○ グラフにすることができる
 ■ 線グラフとか棒グラフとか色々見せ方はあるが線グラフが多い 
 ○ メリット
 ■ 数値の集計は自由に設定できる 
 ■ 数値なので閾値でアラートを仕掛けることができる 
 ■ 軽量なのでストレージコストが安い 
 ○ デメリット
 ● 数値だけでは根拠はわからない 
 ● 瞬間ではなく、一定時間の時系列データが必要 
 3つのシグナル 今日の体重ではなく、連続した体重がないと 
 ダイエットが上手く言っているかはわからない 


Slide 18

Slide 18 text

● トレース
 ○ セッション単位やイベントIDを元に経路のイベントを記録 
 ○ アプリケーションが別れていても順を追うことができる 
 ○ メリット
 ■ ユーザの導線やボトルネックを把握しやすい 
 ■ N+1を呼んでいる関数など内部構造がわかる 
 ■ システムをまたいだ経路がわかる 
 ○ デメリット
 ■ ストレージのコストが高い
 ■ アプリケーション側の対応が必要な場合も多い 
 3つのシグナル

Slide 19

Slide 19 text

● トレース
 ○ セッション単位やイベントIDを元に経路のイベントを記録 
 ○ アプリケーションが別れていても順を追うことができる 
 ○ メリット
 ■ ユーザの導線やボトルネックを把握しやすい 
 ■ N+1を呼んでいる関数など内部構造がわかる 
 ■ システムをまたいだ経路がわかる 
 ○ デメリット
 ■ ストレージのコストが高い
 ■ アプリケーション側の対応が必要な場合も多い 
 3つのシグナル 今日の主役はここ!! 


Slide 20

Slide 20 text

OpenTelemetryの仕組み
 
 
 OpenTelemetryとその仕組み

Slide 21

Slide 21 text

● OpenTelemetry API
 ● OpenTelemetry SDK
 ● OpenTelemetry Protocol
 ● OpenTelemetry Collector
 ● OpenTelemetry exporters
                   …etc
 OpenTelemetryの主な構成要素 他にも規則とか色々ある 


Slide 22

Slide 22 text

OpenTelemetryとその仕組み アプリケーション
 Collector
 Receivers
 Exporter
 OTel Auto Inst
 OTel SDK
 OTel API
 backend
 Service
 今日はViewerはMackerelを使います 


Slide 23

Slide 23 text

手動計装の場合 Javaアプリケーション
 Collector
 Receivers
 Exporter
 OTel Auto Inst
 OTel SDK
 OTel API
 backend
 Service
 自分がコードの任意の場所に 計測を設定する


Slide 24

Slide 24 text

自動計装の場合 Javaアプリケーション 
 Collector
 Receivers
 Exporter
 OTel Auto Inst
 OTel SDK
 OTel API
 backend
 Service
 自動的に計測データを収集する 


Slide 25

Slide 25 text

OpenTelemetryとその仕組み 自動計装はもちろん
 
 Springにも対応しています!


Slide 26

Slide 26 text

1. 自己紹介
 2. OpenTelemetryとその仕組み
 3. Traceのはじめ方
 4. 実務で役立つAPMのTips
 5. おわりに
 あじぇんだ


Slide 27

Slide 27 text

Traceのはじめ方 手動計装と自動計装の
 
 デモを用意しました
 https://github.com/soudai/mackerel-to-java-otel-apm-example

Slide 28

Slide 28 text

1. 自己紹介
 2. OpenTelemetryとその仕組み
 3. Traceのはじめ方
 4. 実務で役立つAPMのTips
 5. おわりに
 あじぇんだ


Slide 29

Slide 29 text

実務で役立つAPMのTips APMの勘所
 
 


Slide 30

Slide 30 text

● テレメトリーデータは全部集めるのが理想 
 ○ しかし、お金がかかる
 ○ 特にログがめちゃめちゃ高くなる 
 ○ 最初は困ったときはS3を見に行く、からでも良い 
 ● 初手はメトリックスから始めるのが良い 
 ○ 事前に集計できるのでコストが圧縮しやすい 
 ○ 時系列データはモニタリングに基本なので扱いやすい 
 ○ 時系列データだけでもわかることはたくさんある 
 ● ログよりはトレースの方がインパクトがある 
 ○ APMを活用できるとデバッグが変わる 
 ○ レガシーコードのバージョンアップとか始める人は強い味方になってくれる 
 ○ データが多すぎる場合はサンプリング 
 ○ スパンも活用すると扱いやすさが格段にあがる 
 実務で役立つAPMのTips

Slide 31

Slide 31 text

サンプリング トレースを活用するときに区切りをつける
 A処理 B処理 C処理 …… Trace Trace Trace Trace 一部だけ保存する

Slide 32

Slide 32 text

スパン トレースを活用するときに区切りをつける
 A処理 B処理 C処理 …… Trace span span span トレースを活用するときに区切りをつける
 処理ごとに区切る

Slide 33

Slide 33 text

● spanを設定するときにトレースIDとDBを関連付する情報も登録する 
 ○ 例:ユーザid、テナントid
 ○ ロジックに関わるような場合は処理結果なども対象になる 
 ● バッチの処理対象件数やメッセージのidなども有効 
 ○ あとから取得できないのでデバッグに必要なデータをできるだけ 
 登録しておくと良い
 ○ 特にバッチや非同期処理などは重要 
 ● ログを見に行かなくても処理の流れが追えるので便利 
 ○ デバッガのブレークポイントのように使える 
 ● 特定のユーザや条件を設定するなども有効 
 ○ 実行環境のOSやブラウザなど
 ○ 同じユーザでも実行環境が違うことはありえる 
 属性を活用する

Slide 34

Slide 34 text

1. 自己紹介
 2. OpenTelemetryとその仕組み
 3. Traceのはじめ方
 4. 実務で役立つAPMのTips
 5. おわりに
 あじぇんだ


Slide 35

Slide 35 text

宣伝!Mackerelセミナーのご紹介 
 MackerelではじめるAPM入門  OpenTelemetry ゼロコード計装で「まずは見える」を実現 Mackerel APMを使い、OpenTelemetryのゼロ コード計装で「まずは見える化」する方法を実演 します。 ● ゼロコード計装の実践 ● ボトルネックの可視化 ● OpenTelemetry設計の要点 お申込みはこちら

Slide 36

Slide 36 text

おわりに オブザーバビリティは
 
 小さく始めることが大事


Slide 37

Slide 37 text

おわりに オブザーバビリティは
 
 小さく始めることが大事
 完璧を目指すと手数もコストもかかる

Slide 38

Slide 38 text

おわりに テストのないレガシーコードの
 
 バージョンアップのときにAPMは非常に強力


Slide 39

Slide 39 text

おわりに テストのないレガシーコードの
 
 バージョンアップのときにAPMは非常に強力
 検討するだけの価値はあります!

Slide 40

Slide 40 text

おわりに テストのないレガシーコードの
 
 バージョンアップのときにAPMは非常に強力
 検討するだけの価値はあります! 導入の動機に使える

Slide 41

Slide 41 text

おわりに 既存環境が自動計装に対応しているなら
 
 サンプリングを有効にして始めるのも効果的


Slide 42

Slide 42 text

おわりに 既存環境が自動計装に対応しているなら
 
 サンプリングを有効にして始めるのも効果的
 手数が少なくて効果が高い

Slide 43

Slide 43 text

おわりに

Slide 44

Slide 44 text

おわりに リリースは怖くない
 
 失敗できる状態にしよう


Slide 45

Slide 45 text

ご清聴ありがとうございました
 
 
 おわりに