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 APMで測定するアプリケーションパフォーマンス
Search
Hiroyuki Shigeta
February 15, 2024
Technology
0
250
Datadog APMで測定するアプリケーションパフォーマンス
2024.02.15 第3木曜LT会 #2 発表資料です。
https://metaps.connpass.com/event/307900/
Hiroyuki Shigeta
February 15, 2024
Tweet
Share
Other Decks in Technology
See All in Technology
5min GuardDuty Extended Threat Detection EKS
takakuni
0
180
整頓のジレンマとの戦い〜Tidy First?で振り返る事業とキャリアの歩み〜/Fighting the tidiness dilemma〜Business and Career Milestones Reflected on in Tidy First?〜
bitkey
0
680
GitHub Copilot の概要
tomokusaba
1
150
生成AI時代の開発組織・技術・プロセス 〜 ログラスの挑戦と考察 〜
itohiro73
1
380
自律的なスケーリング手法FASTにおけるVPoEとしてのアカウンタビリティ / dev-productivity-con-2025
yoshikiiida
0
800
Beyond Kaniko: Navigating Unprivileged Container Image Creation
f30
0
110
KubeCon + CloudNativeCon Japan 2025 に行ってきた! & containerd の新機能紹介
honahuku
0
120
解析の定理証明実践@Lean 4
dec9ue
1
200
ドメイン特化なCLIPモデルとデータセットの紹介
tattaka
1
510
rubygem開発で鍛える設計力
joker1007
2
270
ビズリーチが挑む メトリクスを活用した技術的負債の解消 / dev-productivity-con2025
visional_engineering_and_design
0
330
CursorによるPMO業務の代替 / Automating PMO Tasks with Cursor
motoyoshi_kakaku
2
810
Featured
See All Featured
The Pragmatic Product Professional
lauravandoore
35
6.7k
A Modern Web Designer's Workflow
chriscoyier
694
190k
Docker and Python
trallard
44
3.5k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
48
2.9k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
181
53k
Building a Scalable Design System with Sketch
lauravandoore
462
33k
Mobile First: as difficult as doing things right
swwweet
223
9.7k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
124
52k
Adopting Sorbet at Scale
ufuk
77
9.4k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
161
15k
Transcript
Datadog APMで測定するアプリケー ションパフォーマンス 株式会社メタップスペイメント 茂田 裕行
自己紹介 名前 茂田 裕行 経歴 • 2018年に株式会社メタップスペイメント入社 • それ以前はSIerやスタートアップでサービスやアプリの開発、保守 普段使っている言語 Go,
Python
『給与即時払いサービスCRIA』のサービス構成 • バックエンドAPI ◦ Go ◦ AWS(ECS Fargate, Aurora, SQS,
S3, SNS, Lambda) • アプリ ◦ React Native • ブラウザ版、管理画面 ◦ React • マイクロサービス ◦ 送金 ◦ データの一括登録
運用で困っていること • インフラで発生するインシデント(メールが送られない、画面表示が遅いなど)が発生しても、即座の原因 特定が困難 • イベント(データ登録や更新)ごとの頻度や利用時間帯がつかめない • 時系列的に記録されたログでは、他に来るリクエストの情報が混じったりして、特定の関心のあるリクエス トを追うのが難しい •
処理が複数のサービスに分散されていると、関心のあるの処理を追いづらい
Datadog APMとは Datadog社が提供する、アプリケーションのパフォーマンスをリアルタイムで監視し、分析するためのツール (SaaS) • ユーザーのリクエストがシステムを通過するパスを追跡し、各モジュールでの処理時間を把握できる • アプリケーションのパフォーマンスを監視し、異常が発生した場合に検知 • 詳細なレポーティング
• 分散システムのサポート
実際に組み込んでみた // アプリケーション開始時 tracer.Start(tracer.WithServiceName(serviceName)) defer tracer.Stop() // データベース接続時 sqltrace.Register("mysql", &mysql.MySQLDriver{},
sqltrace.WithServiceName(serviceName)) db, err := sqltrace.Open("mysql", "datadog_sample:password@tcp(db:3306)/db_test", sqltrace.WithServiceName(serviceName)) if err != nil { logger.Error("failed to connect mysql", slog.Any("error", err)) return } defer db.Close() それ以外にも、datadog-agentの設定でAPM有効化を行う必要がある ソースコードでライブラリを組み込む必要がある( Goの場合)
適用後に見られる画面 リクエスト数、エラー数、レイテンシ、処理内訳が確認できた サマリ
適用後に見られる画面 トレース 適切に設定すれば、アプリケーションでかかった時間だけでなく、外部システム( DBやマイクロサービス) の呼び出し時間や処理内容もわかる。 メソッドごとの処理時間も、スパン(処理単位)を設定すればわかる。
適用後に見られる画面 ログ 適切に設定(span_idとtrace_idをログに出力しdatadogへ送信)すれば、リクエストごとに、紐づいたログ を参照できる
今後の課題 • 本番環境への全体的な適用(ソースコード修正が必要) ◦ Goだとcontext.Contextというパラメータに、 APM設定用の情報を設定し、リクエストを受け付ける処理から DB やAWS操作処理まで引き回す必要がある ◦ 各サービスで修正する必要がある
• 各イベントの時間帯ごとの発生頻度を出す方法は調査中