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
56
Datadogを活用した マイクロサービスの可観測性向上 ~モノタロウの導入効果と実践ノウハウ~
MonotaRO
PRO
October 23, 2025
Tweet
Share
More Decks by MonotaRO
See All by MonotaRO
事業成長を支えるためのデータ アーキテクチャの取り組み - Data Engineering Summit
monotaro
PRO
0
22
AIと共に進化するモノタロウ - AI駆動開発 Conference Autumn 2025
monotaro
PRO
0
170
映えないObservability
monotaro
PRO
0
430
FastAPIの魔法をgRPC/Connect RPCへ
monotaro
PRO
1
1.4k
アーキテクチャの境界を超えて
monotaro
PRO
0
330
モノタロウでCursorを導入してみた理想と現実、それと未来
monotaro
PRO
14
37k
モノタロウのAI駆動開発 Cline編 ~ Clineを200⼈で試してみた件
monotaro
PRO
7
39k
MonotaRO_Recruiting Deck_for Engineers
monotaro
PRO
0
4.8k
モノタロウのAI駆動開発 ~AI駆動開発Conference Spring 2025登壇資料
monotaro
PRO
0
3.4k
Featured
See All Featured
Visualization
eitanlees
150
16k
Building Flexible Design Systems
yeseniaperezcruz
329
39k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
285
14k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
140
34k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
24
1.6k
Why Our Code Smells
bkeepers
PRO
340
57k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
658
61k
GitHub's CSS Performance
jonrohan
1032
470k
How to train your dragon (web standard)
notwaldorf
97
6.4k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.5k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
33
1.8k
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.