OPS04-BP04 依存関係のテレメトリーを実装する
依存関係のテレメトリーは、ワークロードが依存する外部サービスやコンポーネントのヘルスとパフォーマンスをモニタリングするうえで不可欠です。依存関係のテレメトリーにより、DNS、データベース、サードパーティ API などの依存関係に関連する到達可能性、タイムアウト、その他の重要なイベントに関する貴重なインサイトが得られます。このような依存関係に関するメトリクス、ログ、トレースを出力するようにアプリケーションをインストルメント化することで、ワークロードに影響を及ぼす可能性のある潜在的なボトルネック、パフォーマンスの問題、または障害をより明確に把握できます。
期待される成果: ワークロードを支える依存関係が期待どおりに機能することを保証し、積極的に問題に対処して、最適なワークロードパフォーマンスを確保できます。
一般的なアンチパターン:
-
外部の依存関係の見落し: 内部アプリケーションメトリクスのみを重視し、外部の依存関係に関連するメトリクスはおろそかにしています。
-
積極的なモニタリングの不履行: 依存関係のヘルスとパフォーマンスを継続的にモニタリングするのではなく、問題が発生するまで待機しています。
-
サイロ化したモニタリング: 複数の異なるモニタリングツールを使用することにより、依存関係のヘルスについての断片的かつ一貫性のないビューの生成につながっている場合があります。
このベストプラクティスを活用するメリット:
-
ワークロードの信頼性の向上: 外部依存を常に利用可能にして最適なパフォーマンスを発揮できるようにすることで実現できます。
-
問題の検出と解決の迅速化: ワークロードに影響が及ぶ前に、依存関係に関連する問題を事前に特定して対処できます。
-
包括的なビュー: ワークロードのヘルスに影響を及ぼす内部コンポーネントと外部コンポーネントの両方を全体的に把握できます。
-
ワークロードのスケーラビリティ強化: 外部依存のスケーラビリティの限界とパフォーマンス特性を把握することにより実現できます。
このベストプラクティスが確立されていない場合のリスクレベル: 高
実装のガイダンス
ワークロードが依存しているサービス、インフラストラクチャ、プロセスを特定することから始めて、依存関係のテレメトリーを実装します。これらの依存関係が期待どおりに機能している場合の良好な状態を定量化して、測定するためにどのようなデータが必要かを判断します。その情報を使用して、依存関係のヘルスに関するインサイトを運用チームに提供するダッシュボードとアラートを作成できます。AWS ツールを使用して、依存関係が必要となるとおり機能しない場合の影響を検出して定量化します。優先事項、目標、取得したインサイトの変化に応じて、戦略を継続的に見直します。
実装手順
依存関係のテレメトリーを効果的に実装する方法:
-
外部依存関係の特定: ステークホルダーと協力して、ワークロードが依存している外部依存関係を特定します。外部依存関係には、外部データベース、サードパーティ API、その他の環境へのネットワーク接続ルート、DNS サービスなどのサービスが含まれます。効果的な依存関係のテレメトリーを得る第一歩は、依存関係を包括的に把握することです。
-
モニタリング戦略の策定: 外部依存を明確に把握した後、それに応じたモニタリング戦略を構築します。これには、各依存関係の重要度、予想される動作、関連するサービスレベルアグリーメントまたは目標 (SLA または SLT)を把握することなどがあります。ステータスの変化やパフォーマンスの逸脱を通知する積極的なアラートを設定します。
-
ネットワークモニタリングの使用: インターネットモニターおよびネットワークモニターを使用して、グローバルインターネットとネットワークの状態に関する包括的なインサイトを取得します。これらのツールは、外部の依存関係に影響を与える機能停止、中断、またはパフォーマンスの低下を把握し、それに対応するために役立ちます。
-
AWS Health Dashboard
を使用した情報の取得: AWS でサービスに影響を及ぼす可能性のあるイベントが発生した場合にアラートと修正ガイダンスを提供します。 -
Amazon EventBridge ルールを使用して AWS Health イベントをモニタリングしたり、プログラムで AWS Health API と統合して AWS Health イベントを受信したときのアクションを自動化したりできます。これらのアクションには、計画されたすべてのライフサイクルイベントメッセージをチャットインターフェイスに送信するなどの一般的なアクションや、IT サービス管理ツールでのワークフローの開始などの特定のアクションがあります。
-
AWS Organizations を使用する場合は、アカウント全体で AWS Health イベントを集約します。
-
-
AWS X-Ray
を使用したアプリケーションのインストルメント化: AWS X-Ray を使用すると、アプリケーションとアプリケーションの基盤となる依存関係のパフォーマンスに関するインサイトが得られます。リクエストを開始から終了までトレースすることにより、アプリケーションが依存している外部サービスや外部コンポーネントのボトルネックや障害を特定できます。 -
Amazon DevOps Guru
の使用: この機械学習ベースのサービスは、運用上の問題を特定し、重大な問題が発生する可能性のあるタイミングを予測して、実行すべき具体的な対応措置を推奨します。依存関係のインサイトを得て、その関係性が運用上の問題の原因ではないことを突き止めるために、非常に有益です。 -
継続的なモニタリング: 外部依存に関するメトリクスとログを継続的にモニタリングします。予期しない動作やパフォーマンスの低下についてのアラートを設定します。
-
変更後の検証: 外部依存のいずれかが更新されたり変更されたりした場合は、そのパフォーマンスを検証して、アプリケーションの要件との整合性を確認します。
実装計画に必要な工数レベル: 中
リソース
関連するベストプラクティス:
関連するドキュメント:
関連動画:
関連する例: