Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Datadog RUM 本番導入までの道

Datadog RUM 本番導入までの道

freee でパイロットプロダクトに Datadog RUM を導入した際の詰まりポイントをまとめました。

※ Japan Datadog User Group Meetup#10 の登壇資料です。
登壇動画: https://www.youtube.com/live/35JcoUB8m6M?feature=shared&t=2473

Avatar for Shintaro Matsumoto

Shintaro Matsumoto

June 11, 2025
Tweet

Other Decks in Programming

Transcript

  1. 2 2023/04 freee 新卒入社
 2023/07~
 2025/03 DBRE
 2025/04~ Enabling
 


    
 趣味: 麻雀🀄
 雀聖3から転げ落ちていってます
 shinta
 SRE船 Enablingヨット

  2. 5 • Real User Monitoring の略
 ◦ アプリケーションのフロントエンドのパフォーマンスをリアルタイムで監視できる
 • RUM

    で見れるもの(一例)
 ◦ 画面ごとのレンダリング速度
 ◦ 画面ごとの Core Web Vitals (UX 指標)
 ◦ 画面ごとのエラー率
 ◦ 平均サイト滞在時間
 ◦ ユーザーの典型的な画面遷移のリスト
 ◦ ユーザーの画面操作している様子の動画(セッションリプレイ)
 ◦ ユーザーのイラつき度合い(フラストレーションシグナル)
 
 Datadog RUM とは?

  3. 6 • Session: 
 ユーザーがサイトに滞在してる間の単位のデータ
 • View: 
 ページにアクセスされる度に生成されるデータ
 •

    User Action: 
 ボタンをクリックしたなどのユーザーインタラクションの データ
 
 Datadog RUM の基本概念

  4. 12 • ほとんどフロントの可観測性がない状態だったから
 ◦ ① 画面が真っ白になるようなエラーになっていても、
 ユーザーの問い合わせでしか気づけない
 ◦ → MTTR

    の遅延に繋がる
 
 ◦ ② API のレスポンスは速いが描画が遅いケースを検知できていない
 ◦ → UX 改善のサイクルが回しづらい
 
 なぜ Datadog RUM を導入したのか
 ※ MTTR (Mean Time To Repair) : システムの故障から復旧までに要する時間

  5. 16 • ステージング環境に先に RUM を導入、E2E を流すことで1セッションごとの平均 API リクエスト 数を算出
 •

    本番環境の API リクエスト数は算出可能 (バックエンドは監視が豊富なので)
 • 本番導入時のセッション数 = 本番環境の API リクエスト数 ÷ 1セッションごとの平均 API リクエ スト数
 サンプリングレートの決定方法

  6. 20 • RUM では User Action についての情報を収集している
 ◦ ボタンのラベルの text

    がモロに Datadog に出ていた
 Datadog に RUM 経由で顧客データが送られてしまうパターン

  7. 24 • ステージング環境に RUM を導入したところ、
 ResizeObserver loop completed with undelivered

    notifications. というエラーが大量発生
 • 調べると JavaScript の一般的なエラーで、ユーザー影響はほとんどないらしい
 ◦ とはいえ怖い...
 RUM 導入後、フロントで謎エラー発生

  8. 25 • Issue 立ててみたけど SDK 側で回避するのは根本的に無理らしい...
 • RUM SDK が画面の要素を監視しているのと、freee

    のサービスが画面の要素のサイズを変 更しているのが相性悪いらしい
 RUM 導入後、フロントで謎エラー発生

  9. 28

  10. 29

  11. 30 • 謎エラーが起きてる時と起きてない時の画面の描画速度に差はない
 • UX の良さを示す Core web vitals にも差はない


    • 念の為実際に画面で謎エラーを再現させて、体験に問題がないのを目視で確認
 • → 握りつぶす方向へ意思決定できた
 謎エラーの影響調査

  12. 34 RUM と APM の繋ぎ方
 allowedTracingUrls: バックエンドの FQDN
 traceContextInjection: APM

    のサンプリ ングレートに関する設定
 traceSampleRate: APM のサンプリング レート

  13. 37 • RUM のメトリクスはモニターや SLO などにも活用できる
 • 画面が真っ白になっていることを検知するモニターの作成
 ◦ 画面にエラーが発生してることのモニター

    + 描画速度のモニターの
 composite モニターでいける説
 • 重要な画面の Core Web Vitals を SLI とする SLO の作成
 ◦ RUM のメトリクスから generate metrics できるのでそれを利用
 今後の展望