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
260
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
Webブラウザ向け動画配信プレイヤーの 大規模リプレイスから得た知見と学び
yud0uhu
0
230
Generative AI Japan 第一回生成AI実践研究会「AI駆動開発の現在地──ブレイクスルーの鍵を握るのはデータ領域」
shisyu_gaku
0
280
Platform開発が先行する Platform Engineeringの違和感
kintotechdev
4
570
エラーとアクセシビリティ
schktjm
1
1.3k
Language Update: Java
skrb
2
300
大「個人開発サービス」時代に僕たちはどう生きるか
sotarok
20
10k
初めてAWSを使うときのセキュリティ覚書〜初心者支部編〜
cmusudakeisuke
1
260
dbt開発 with Claude Codeのためのガードレール設計
10xinc
2
1.2k
Automating Web Accessibility Testing with AI Agents
maminami373
0
1.3k
MCPで変わる Amebaデザインシステム「Spindle」の開発
spindle
PRO
3
3.3k
複数サービスを支えるマルチテナント型Batch MLプラットフォーム
lycorptech_jp
PRO
1
390
250905 大吉祥寺.pm 2025 前夜祭 「プログラミングに出会って20年、『今』が1番楽しい」
msykd
PRO
1
950
Featured
See All Featured
Embracing the Ebb and Flow
colly
87
4.8k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
131
19k
Being A Developer After 40
akosma
90
590k
Raft: Consensus for Rubyists
vanstee
140
7.1k
Java REST API Framework Comparison - PWX 2021
mraible
33
8.8k
Designing for humans not robots
tammielis
253
25k
Building a Scalable Design System with Sketch
lauravandoore
462
33k
How to train your dragon (web standard)
notwaldorf
96
6.2k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.6k
Git: the NoSQL Database
bkeepers
PRO
431
66k
Building Better People: How to give real-time feedback that sticks.
wjessup
368
19k
We Have a Design System, Now What?
morganepeng
53
7.8k
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操作処理まで引き回す必要がある ◦ 各サービスで修正する必要がある
• 各イベントの時間帯ごとの発生頻度を出す方法は調査中