DOPモニタリングとロギング
あるフィンテック企業のサーバーレス決済基盤では、Lambda関数が1秒あたり数千件のトランザクションを処理しています。運用チームは、顧客テナントID・支払い方法・地域といった高カーディナリティのディメンションごとに処理件数とレイテンシーをカスタムメトリクスとして収集したいと考えています。しかし現行実装ではメトリクス発行時のAPIスロットリングと同期呼び出しによる処理遅延が問題となっています。追加のインフラ運用を避けつつ、この課題を解決する最も適切な方法はどれですか。
A各Lambda呼び出しの中でCloudWatchのPutMetricData APIを同期的に呼び出し、顧客テナントIDをディメンションに指定して1リクエストごとにカスタムメトリクスを個別に発行しリトライを実装する
PutMetricDataを1リクエストごとに同期呼び出しする方式は、まさに現行のAPIスロットリングと同期処理による遅延の原因そのものであり、リトライを加えても高スループット環境での根本的な解決にはならない。
B埋め込みメトリクスフォーマット(EMF)で構造化ログをCloudWatch Logsに出力し、CloudWatchが非同期でメトリクスを自動抽出することで高カーディナリティのメトリクスを低オーバーヘッドで発行する
✓ 正解
EMF形式の構造化ログをCloudWatch Logsへ出力すればCloudWatchが非同期でメトリクスを自動抽出するため、同期API呼び出しが不要となりスロットリングと遅延を回避できる。高カーディナリティも扱え追加インフラも不要で最適。
CCloudWatch Logsのメトリクスフィルターをディメンションの組み合わせごとに作成し、ログイベントから件数とレイテンシーのメトリクスを抽出して集計する
メトリクスフィルターは高カーディナリティなディメンションの全組み合わせごとに膨大な数のフィルター定義が必要となり、フィルターの作成上限や管理コストの面で現実的でなく、動的なテナントIDには対応しづらい。
DAWS X-Rayでリクエストをトレースしてアノテーションに各ディメンション値を付与し、サービスマップとトレース分析から件数とレイテンシーを取得する
X-Rayは分散トレースによるボトルネック分析が主目的で、サンプリングされるため全トランザクションの正確な件数集計には不向きであり、継続的なカスタムメトリクス発行の代替手段としては適さない。
解説
CloudWatch 埋め込みメトリクスフォーマット(EMF)は、特定形式の構造化ログを CloudWatch Logs に出力するだけで、CloudWatch が非同期にログを解析してカスタムメトリクスを自動抽出する仕組み。関数側は同期的な PutMetricData 呼び出しが不要になるため API スロットリングと処理遅延を回避でき、高カーディナリティのディメンションも詳細ログとして保持したままメトリクス化できる。追加インフラの運用も不要で要件に最適。
選択肢Aの PutMetricData の同期呼び出しは、まさに現行のスロットリングと遅延の原因であり、リトライを加えても根本解決にならない。
選択肢Cのメトリクスフィルターは高カーディナリティなディメンションの組み合わせごとに大量のフィルターとメトリクスが必要となり、コストと管理性の面で現実的でない。
選択肢Dの X-Ray はトレース分析が主目的で、集約的なカスタムメトリクスの継続発行の代替にはならず、サンプリングにより全件の正確な件数把握にも向かない。
ドメイン別正答率・予想スコアでリアルタイムに実力把握
無限ノックでDOPを徹底対策。全問AI生成のオリジナル問題。
無料で演習を始める →