ステージ 4: 運用
「ステージ 3: 評価とテスト」が完了したら、アプリケーションを本番環境にデプロイする準備が整います。「運用」ステージでは、アプリケーションを本番環境にデプロイし、カスタマーエクスペリエンスを管理します。 アプリケーションの設計と実装によって耐障害性の成果の多くが決まりますが、このステージでは、システムが耐障害性を維持および改善するために使用する運用プラクティスに焦点を当てます。オペレーショナルエクセレンスの文化を構築すると、これらのプラクティスに標準と一貫性が生まれます。
オブザーバビリティ
カスタマーエクスペリエンスを理解する上で最も重要なのは、モニタリングとアラームを行うことです。アプリケーションの状態を理解するにはアプリケーションを計測する必要があり、多様な視点が必要となります。つまり、サーバー側とクライアント側の両方から、通常は Canary を使用して測定を行う必要があります。メトリクスには、アプリケーションの依存関係と障害分離境界に沿ったディメンションによる操作に関するデータが含まれている必要があります。また、アプリケーションによって実行されるすべての作業単位に関して追加の詳細を提供するログも作成する必要があります。Amazon CloudWatch の埋め込みメトリクス形式などのソリューションを使用して、メトリクスとログを組み合わせることを検討できます。常にオブザーバビリティを高める必要があることがわかるため、必要なレベルの計測を実装するために必要なコスト、労力、複雑さのトレードオフを検討してください。
以下のリンク先では、アプリケーションを計測し、アラームを作成するためのベストプラクティスについて提供しています。
-
Monitoring production services at Amazon
(AWS re:Invent 2020 プレゼンテーション) -
Amazon Builders' Library: Operational Excellence at Amazon
(AWS re:Invent 2021 プレゼンテーション) -
Observability best practices at Amazon
(AWS re:Invent 2022 プレゼンテーション) -
運用の可視性を高めるために分散システムを装備する
(Amazon Builders' Library 記事) -
運用を可視化するためのダッシュボードの構築
(Amazon Builders' Library 記事)
イベント管理
アラーム (またはさらに悪いケースでは顧客) が何か問題があることを知らせたときは、障害を処理するイベント管理プロセスを用意する必要があります。このプロセスには、オンコールオペレーターの関与、問題のエスカレーション、人為的ミスの排除に役立つトラブルシューティングへの一貫したアプローチのためのランブックの確立を含める必要があります。ただし、障害は通常、単独では発生しません。単一のアプリケーションが、それに依存する他の複数のアプリケーションに影響を与える可能性があります。影響を受けるすべてのアプリケーションについて理解し、複数のチームのオペレーターを 1 回の電話会議で招集することで、問題に迅速に対処できます。ただし、組織の規模と構造によっては、このプロセスに一元的な運用チームが必要になる場合があります。
イベント管理プロセスの設定に加えて、ダッシュボードを通じたメトリクスの定期的なレビューが必要になります。定期的なレビューは、アプリケーションのパフォーマンスにおけるカスタマーエクスペリエンスと長期的な傾向を理解するのに役立ちます。これにより問題やボトルネックを、それらが本番環境に重大な影響を与える前に特定できるようになります。一貫性のある標準化された方法でメトリクスをレビューすることには大きな利点がありますが、トップダウンの賛同と時間の投資が必要です。
以下のリンク先では、ダッシュボードの構築と運用メトリクスのレビューに関するベストプラクティスを示しています。
-
運用を可視化するためのダッシュボードの構築
(Amazon Builders' Library 記事) -
Amazon's approach to failing successfully
(AWS re:Invent 2019 プレゼンテーション)
継続的な耐障害性
「ステージ 2: 設計と実装」、「ステージ 3: 評価とテスト」では、アプリケーションを本番環境にデプロイする前にレビューとテストアクティビティを開始しました。「運用」ステージでは、本番環境でこれらのアクティビティを継続的に実行する必要があります。AWS Well-Architected フレームワークのレビュー
また、本番前環境でゲームデー
アプリケーションを運用し、運用イベントが発生し、メトリクスをレビューし、アプリケーションをテストすることで、さまざまな対応と学習の機会が得られます。