導入
「なぜかこのAPIだけ遅い」——サーバーが1台なら調べるのは簡単ですが、Lambda・API Gateway・DynamoDBと処理が分かれていると、どこで時間がかかっているのか分かりません。
説明
AWS X-Rayは、1つのリクエストがどのサービスをどの順で通り、どこで何ミリ秒かかったかを追跡(トレース)できるサービスです。これを分散トレーシングと呼びます。処理を可視化した図(サービスマップ)で、遅い箇所やエラーが起きた箇所をひと目で特定できます。
運用でシステムの状態を把握する力を可観測性(オブザーバビリティ)と呼び、AWSでは主に3つの柱で支えます。
| 柱 | 見るもの | 担当サービス |
|---|---|---|
| メトリクス | 数値(CPU・レイテンシ・エラー率) | Amazon CloudWatch |
| ログ | アプリやサーバーが出す記録 | CloudWatch Logs |
| トレース | 1リクエストの流れと所要時間 | AWS X-Ray |
flowchart LR
Req["1件のリクエスト"] --> AG["API Gateway 12ms"]
AG --> L["Lambda 240ms"]
L --> DB["DynamoDB 8ms"]
L -.トレースを送信.-> XR["X-Ray(サービスマップ)"]
CloudWatchの関連機能も押さえておきましょう。CloudWatch Logs Insightsはログを検索・集計するためのクエリ機能、CloudWatch Syntheticsは外形監視(利用者の代わりに定期的にサイトへアクセスして正常性を確認する)です。設定値や機能フラグを安全に配布するAWS AppConfigもあわせて覚えておくとよいでしょう。
読んでみよう
「どこで時間がかかったかを追う=X-Ray」。可観測性は「メトリクス(CloudWatch)・ログ(CloudWatch Logs)・トレース(X-Ray)」の3点セットで整理しておきましょう。