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
240
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
熱々🔥のUDN🍜を喰らえ❗マルチテナントもVM統合も思いのまま❗新機能で切り拓くk8sネットワークの未来
tsukaman
0
150
テスト設計、逆から読むとおもしろい──仕様にない“望ましさ”の逆設計
mhlyc
0
210
ITベンダーから見る内製化支援の本質/in-house-dev
slsops
1
190
Software Architecture in an AI-Driven World
atty303
64
27k
Platform Engineering for Private Cloud
cote
PRO
1
160
Software Delivery Observability CI・CD , DORA metrics も Datadog で可視化しよう / datadog-ci-cd-observability
parupappa2929
0
200
勘違いから始まったProxmox on ProxmoxでGPUパススルー【JPmoxs勉強会#7】/JPmoxs7_GPU_Passthrough_on_Proxmox_on_Proxmox-A_Journey_That_Started_with_a_Misunderstanding
tsukimi_site
0
120
VueUseから学ぶ実践TypeScript #TSKaigi #TSKaigi2025
bengo4com
1
310
トップエンジニアが語るDX最前線 / 20250517 Kazutoshi Ono & Ken Yamazaki
shift_evolve
0
180
テスト設計チュートリアル ちびこん編 ’25
omn
0
160
正解のない未知(インボイス制度対応)をフルサイクル開発で乗り越える方法 / How to overcome the unknown invoice system with full cycle development
carta_engineering
0
170
水耕栽培に全部賭けろ
mutsumix
0
170
Featured
See All Featured
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
52
2.7k
Art, The Web, and Tiny UX
lynnandtonic
298
21k
Six Lessons from altMBA
skipperchong
28
3.8k
Designing for Performance
lara
608
69k
Documentation Writing (for coders)
carmenintech
71
4.8k
YesSQL, Process and Tooling at Scale
rocio
172
14k
How to Think Like a Performance Engineer
csswizardry
23
1.6k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.5k
Git: the NoSQL Database
bkeepers
PRO
430
65k
Embracing the Ebb and Flow
colly
85
4.7k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
5
590
Adopting Sorbet at Scale
ufuk
76
9.4k
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操作処理まで引き回す必要がある ◦ 各サービスで修正する必要がある
• 各イベントの時間帯ごとの発生頻度を出す方法は調査中