Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Datadogを活用した マイクロサービスの可観測性向上 ~モノタロウの導入効果と実践ノウハウ~
Search
MonotaRO
PRO
October 23, 2025
0
17
Datadogを活用した マイクロサービスの可観測性向上 ~モノタロウの導入効果と実践ノウハウ~
MonotaRO
PRO
October 23, 2025
Tweet
Share
More Decks by MonotaRO
See All by MonotaRO
FastAPIの魔法をgRPC/Connect RPCへ
monotaro
PRO
1
1.1k
アーキテクチャの境界を超えて
monotaro
PRO
0
270
モノタロウでCursorを導入してみた理想と現実、それと未来
monotaro
PRO
14
36k
モノタロウのAI駆動開発 Cline編 ~ Clineを200⼈で試してみた件
monotaro
PRO
7
38k
MonotaRO_Recruiting Deck_for Engineers
monotaro
PRO
0
3.8k
モノタロウのAI駆動開発 ~AI駆動開発Conference Spring 2025登壇資料
monotaro
PRO
0
2.8k
リスクが取りにくいシステム開発でのDevinとの付き合い方
monotaro
PRO
6
3.6k
業務理解の深化と実践~ドメインモデリングで基幹システムを捉える
monotaro
PRO
6
8.2k
20241217 競争力強化とビジネス価値創出への挑戦:モノタロウのシステムモダナイズ、開発組織の進化と今後の展望
monotaro
PRO
0
900
Featured
See All Featured
Stop Working from a Prison Cell
hatefulcrawdad
271
21k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
190
55k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
253
22k
Large-scale JavaScript Application Architecture
addyosmani
514
110k
A Modern Web Designer's Workflow
chriscoyier
697
190k
GraphQLとの向き合い方2022年版
quramy
49
14k
Building a Modern Day E-commerce SEO Strategy
aleyda
44
7.8k
VelocityConf: Rendering Performance Case Studies
addyosmani
332
24k
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
Practical Orchestrator
shlominoach
190
11k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.7k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.2k
Transcript
2025.07.30 Datadogを活用した マイクロサービスの可観測性向上 ~モノタロウの導入効果と実践ノウハウ~ © 2025 MonotaRO Co., Ltd.
自己紹介 © 2025 MonotaRO Co., Ltd.
好きなこと/趣味 漫画(特にキングダム)、 NBA、新日本プロレス 略歴 2022年4月 モノタロウに新卒入社(技術職) 2022年7月~ 現在 ECシステムエンジニアリング部門 所属
仕事内容 モノタロウサイトの商品検索ページのフロントエンド開発および、検索アグリゲーションAPIの開発をメ インに担当。 有志で行っているDeveloper Experience向上プロジェクトでは、PR毎のプレビュー環境作成自動化など の開発基盤整備を推進。 現在はモノタロウサイトの耐障害性向上の一環で、Datadog APMを用いてサイトシステム全体への分散 トレーシング導入の推進を行っています 🚀 加藤 功一朗(かとう こういちろう)
好きなこと/趣味 嵐、アニメ・ドラマ鑑賞 テニス、ゴルフ 略歴 2022年4月 モノタロウに新卒入社(総合職) 2022年7月~ 現在 ECシステムエンジニアリング部門 EC開発-Bグループ
所属 2023年12月~2025年3月 ECシステムエンジニアリング部門 開発生産性グループ 所属(兼任) 仕事内容 モノタロウサイトの利便性向上・継続利用のための機能追加・改修を担当。フロントエンド開発がメイン で、機能の内容によって一部バックエンド開発も実施。直近は新規開発のPMを担当。 開発生産性グループでは、Developer Experience向上プロジェクトで、技術職メンバーと一緒にPR毎の プレビュー環境作成自動化などの開発基盤整備を推進した。 現在はモノタロウサイトの耐障害性向上の一環で、Datadog APMを用いてサイトシステム全体への分散 トレーシング導入の推進を行っている。 木上 瑞美 (きがみ たまみ)
会社紹介 © 2025 MonotaRO Co., Ltd.
事業紹介 6 BtoB を対象に、 自ら間接資材の在庫を持ち、 自らオンラインで売るEC 企業 コールセンター、商 品 採
用、物 流、 マーケティング、データサイエンス、 IT など多くの業務とシステムを 自社開発、自社運用している フルスタック EC カンパニー
膨大な注文・配送への対応 ※2024年(単体)の実績 7
本日の発表内容 © 2025 MonotaRO Co., Ltd.
目次 • モノタロウサイトの構成 • モノタロウサイトの課題 • 前提知識 ◦ どのようにDatadogにデータが取り込まれるのか? •
Datadog活用状況 ◦ APM ◦ 統合サービスタグの整備 ◦ Monitors ◦ Logs ◦ Dashboards • 今後の展望 • まとめ 9
モノタロウサイトの構成 © 2025 MonotaRO Co., Ltd.
モノリスからマイクロサービスへ 11 11 nginx BFF FEアプリA FEアプリB Product Search Customer
Recommend Order Cart Product microservice FEアプリA FEアプリB nginx API① API② モノリス期(~2023) マイクロサービス化過渡期(2023~現在)
モノタロウサイト構成の歴史(モノリス期: ~2023) • APMは1台だけ有効化すれば、大体の処理を確認できたので (多少不便ではあるが)十分だった ◦ 1台だけの導入なのでコスト面もあまり気にならなかった • モノリスであるため分散トレーシングはあまり重要視しておらず、 アプリとAPIのトレースが繋がっていないケースも多々あった
◦ 必要があればBig Queryに保存しているログをrequest idで突き合わせていた 12 FEアプリA FEアプリB nginx API① API②
13 モノタロウサイト構成の歴史 (マイクロサービス化過渡期: 2023~現在) • マイクロサービス化が進み、システムの繋がりが増えてきた ◦ 1台だけAPMを有効化すれば十分という状況からは変わった ◦ アプリによってAPM導入状況が異なる・トレースを繋げる対応はできて
いなかった(これまで意識していなかったので考慮できていない) nginx BFF FEアプリA FEアプリB Product Search Customer Recommend Order Cart Product microservice
モノタロウサイトの課題 © 2025 MonotaRO Co., Ltd.
マイクロサービス化が進むにつれて、、、 • サイトの全体像を把握しづらくなってきた ◦ 最近サイト全体に影響する障害が多い ▪ 障害発生時に発生箇所の特定が大変 ▪ 担当部署もすぐには分からない😨 15
💡 モノタロウサイトの可観測性向上のため、Datadogを整備・活用したい!
前提知識:どのようにDatadogにデータが 取り込まれるのか? © 2025 MonotaRO Co., Ltd.
17 アプリからDatadogまでのデータの取り込みの流れ • ざっくりと以下の流れ ◦ アプリケーション > エージェント(Datadog Agent /
Otel Collector) ▪ Datadog Tracer / OpenTelemetry SDKを使用して テレメトリデータを送信 ◦ エージェント(Datadog Agent / Otel Collector) > Datadog ▪ 受け取ったテレメトリデータの受信及び処理 ▪ Datadog Backendへのデータ転送 OpenTelemetry in Datadog
18 アプリからDatadogまでのデータの取り込みの流れ • ざっくりと以下の流れ ◦ アプリケーション > エージェント(Datadog Agent /
Otel Collector) ▪ Datadog Tracer / OpenTelemetry SDKを使用して テレメトリデータを送信 ◦ エージェント(Datadog Agent / Otel Collector) > Datadog ▪ 受け取ったテレメトリデータの受信及び処理 ▪ Datadog Backendへのデータ転送 OpenTelemetry in Datadog モノタロウでは Datadog Agentを使用 モノタロウでは 両方を使用
19 補足:全てのトレースが取り込まれるわけではない👻 項目 Head Sampling Tail Sampling 説明 • リクエスト開始時にアプリのSDK側で事前定義
されたルールでサンプリングを決定 • Agent側で実際のトレース内容 (エラー、レイテンシなど)を基に サンプリングルールを設定して決定 メリット • 実装が容易 • 予測可能なデータ量 • エラーやレイテンシが遅いといった 重要なトレースを確実に保存 デメリット • サンプリングに細かい条件をつけられない • エージェントの構成・運用が複雑 OpenTelemetry in Datadog
Datadog活用状況: APM © 2025 MonotaRO Co., Ltd.
整備前のDatadogの課題点 21 01 各アプリのトレースが一気通貫で繋がっていない 02 Datadogを使いこなせていない
22 ① 各アプリのトレースが一気通貫で繋がっていない • 整備前の状況:トレースが歯抜けになっている ◦ エラー調査でエラー発生個所が歯抜けになっており原因が特定できない ◦ レイテンシ悪化の調査で、どの処理に時間がかかっているのか見えない Service
CのTrace Service BのTrace Service DのTrace Service AのTrace →トレースを繋げるにはどうすればよいのか?
複数コンポーネントのトレースを繋げるには 23 01 headerにtraceの情報を載せて後段のサービスに伝播 する必要がある 02 Parent Based Sampling設定の追加が必要
24 複数コンポーネントのトレースを繋げるには① • headerにtraceの情報を載せて後段のサービスに伝播する必要がある ◦ Datadog SDK用:x-datadog-trace-id, x-datadog-parent-id ◦ OpenTelemetry
SDK用:traceparent, tracestate Monitor OTel-instrumented apps with support for W3C Trace Context
25 複数コンポーネントのトレースを繋げるには② • FEアプリAで10%、BFFで10%サンプリングしていた場合両方が繋がった トレースの割合は単純計算で1%になってしまう。 ◦ Parent Based Sampling設定の追加が必要 ▪
親がサンプリングした場合、子も必ずサンプリングする
分散トレーシングの before / after © 2025 MonotaRO Co., Ltd.
27 トレーシングのbefore • 1つ後ろのリクエストの呼び出しまでしか見えない😥 ◦ 実際には更に後段に複数のコンポーネントが存在する
28 トレーシングのafter • 最前段から最後段までトレースが繋がるように🥳
Datadog活用状況: 統合サービスタグの整備 © 2025 MonotaRO Co., Ltd.
整備前のDatadogの課題点 30 01 各アプリのトレースが一気通貫で繋がっていない 02 Datadogを使いこなせていない
31 ② Datadogを使いこなせていない 取り組んだこと: • まずはタグのルールの整備を実施 ◦ 統合サービスタグ(DD_ENV / DD_SERVICE
/ DD_VERSION) の命名規則を整備し、全体で適用 ※ Datadog 公式のベストプラクティスにも書かれている通り、 env、service、version タグを正しく設定することが Datadog を使いこなす上で 非常に重要
32 統合サービスタグの整備:タグの設定内容の前後比較 タグ 整備前 整備後 DD_ENV 環境名にサイトの情報が 含まれていた 環境名のみに統一 siteX-dev,
siteY-prod ↓ dev, prod DD_SERVICE サービス名に環境名が 含まれていた サービス名 のみに統一 search-app-dev ↓ search-app DD_VERSION 未設定、固定値など imageタグ名・日時など どのデプロイか識別 できるよ うなものに変更 v1 ↓ YYYYMMDDHHMMSS, commit hash, release tag
33 統合サービスタグの整備:DD_ENV / DD_SERVICE • Service Mapでのコンポーネントの依存関係の可観測性UP🚀 2024/07月時点 2025/07月時点
34 統合サービスタグの整備:DD_VERSION • リリースバージョン毎の指標の可観測性UP🚀 ◦ リリース後にレイテンシが悪化した際、どのバージョンから発生してい るか分かる p99 レイテンシ 1秒あたりのリクエスト数
Datadog活用状況: Monitors © 2025 MonotaRO Co., Ltd.
Monitorsの活用状況 • 各サービスで必要に応じてメトリクスをもとにMonitorsを設定しています ◦ 例:エラーの割合の増加、レイテンシ悪化など • 基本的にアラートをSlackに通知しており、担当チームで監視できる体制に なっています • 本番のMonitors設定:206件(2025/07/22時点)
36
37 Monitorsの活用状況 • 具体的な利用方法 ◦ Monitorsに設定したアラート発生時、 担当チームの監視用Slackチャンネルに通知 ◦ 通知が来た際の対応手順(Runbookに定義)に従ってアプリを 運用している担当チームメンバーが通知を元に対応を判断
💡異常が発生した際にすばやく検知・対応できるようになっている アプリ内で利用しているAPIが エラーになっている →担当チームにエスカレーション
Datadog活用状況: Logs © 2025 MonotaRO Co., Ltd.
39 Datadog Logsの活用 • 具体的な活用事例 ◦ Datadog Logsに送信されたログを内容のパターンでグループ化する 機能を利用し、発生件数を担当チームで監視 →急増や新規エラーがあれば原因調査
Datadog Logsの活用:TraceとLogの紐づけ • ログにdd.trace_id / dd.span_idを追加することで、 TraceとLogが紐づくように😃 (参考:Correlate Logs and
Traces) ◦ 注意:Otel SDKを使用している場合は、TraceId と SpanId をOpenTelemetry形式 からDatadog形式に変換する必要があります 40
Datadog活用状況: Dashboards © 2025 MonotaRO Co., Ltd.
Dashboardsの活用状況 • Monitors一覧やLog Patterns List、SLO等監視したい指標をまとめて表示 ◦ 設定内容はTerraformで管理しています 42
Dashboardsの活用状況:インフラ • インフラ指標(Pod数・CPU使用率・メモリ使用量)も監視しています 43
44 Dashboardsの活用状況 • サービス単位などでダッシュボードが作成されている • 具体的な活用内容 ◦ トラブル発生時、トラブル対応したメンバーがエラーの収束状況を確認 ◦ トラブル発生時、影響が全体的/限定的かを判断する
◦ ダッシュボードで全体の指標を定常的に監視することで 異常発生を素早く検知 (該当サービスのDashboardsを見て) この件すでに収束済みですか? Datadogのダッシュボードを見ると 5xxエラーが継続していまして。 確認します
今後の展望 © 2025 MonotaRO Co., Ltd.
今後取り組みたいこと • 運用整備 ◦ 障害発生箇所が一目でわかるようにする →障害発生時の発生箇所特定時間・担当チームへの連携までの時間を 20%削減 ▪ インシデントの活用検討など ◦
開発者がDatadogを活用できるようにする ▪ 勉強会の実施(本日Datadog Japan社と合同で実施しました!) ▪ 社内ドキュメントの整理など • Datadogの整備 ◦ OpenTelemetry Collectorを用いたTail Sampling ▪ n%の分散トレーシング+100%のエラートレース 46
まとめ © 2025 MonotaRO Co., Ltd.
48 まとめ • 分散トレーシングの実現 ◦ headerにtraceの情報 (x-datadog-trace-id/x-datadog-parent-id or traceparent/tracestate)を載せて伝播させる ◦
Parent Based Samplingの設定を追加 • 統合サービスタグ(ENV, SERVICE, VERSION)の整備 ◦ コンポーネントの依存関係やリリースバージョン毎の 指標の可観測性UP🚀 • Monitorsを活用して異常を素早く検知できる体制が整った • LogとTraceが紐づき異常のあるリクエストの問題点が1画面で分かるように • Dashboardsを活用して朝会等でアプリの変化を俯瞰して確認できるように
We are Hiring ! © 2025 MonotaRO Co., Ltd. 各ポジションで募集中
https://mid-career.monotaro.com/EngineeringIT
© 2025 MonotaRO Co., Ltd.