操作に合わせた設計
運用チームが必要なツールを得られるようにアプリケーションを設計します
クラウドによって、運用チームの役割は大きく変わりました。 アプリケーションをホストするハードウェアやインフラストラクチャの管理は、彼らの担当業務ではなくなったのです。 とは言え、クラウド アプリケーションを効果的に実行するうえで、運用チームは今でも重要な役割を担っています。 運用チームの重要な役割としては、次のことが挙げられます。
- デプロイ
- 監視
- エスカレーション
- インシデント対応
- セキュリティ監査
ログ記録とトレースを安定的に機能させることは、クラウド アプリケーションにおいて非常に重要です。 業務に必要なデータや分析情報をユーザーに提供できるようにするには、運用チームと連携してアプリケーションを設計、計画する必要があります。
Recommendations
すべての要素を観測可能にする。 ソリューションが展開されて実行された後、ログとトレースはシステムに関する主要なインサイトになります。 トレースは、システム内のパスを記録するものです。これは、ボトルネック、パフォーマンス問題、および障害点を特定するのに役立ちます。 ログ記録は、アプリケーション状態の変更、エラー、例外など、個々 のイベントをキャプチャするものです。 運用環境では必ずログを記録しましょう。この記録がないと、必要なインサイトを必要なタイミングで取得できなくなります。
監視機能をインストルメント化する。 監視機能は、アプリケーションがどの程度正常に (または異常に) 実行されているかを、可用性、パフォーマンス、およびシステム正常性の観点から観測し、そのインサイトを提供するものです。 たとえば、監視データでは、SLA が達成されているかどうかなどを確認できます。 監視はシステムの通常運用時に実行されます。 運用スタッフが問題に迅速に対処できるよう、監視はできるだけリアルタイムに実行するようにしましょう。 監視機能を上手く使用すれば、重大なエラーの発生前に問題を回避することができます。 詳細については、「監視と診断」をご覧ください。
根本原因分析をインストルメント化する。 根本原因分析は、障害の根本原因を特定するプロセスです。 これは、既にエラーが発生した後で実行されます。
分散トランザクションを使用する。 コンカレンシー、非同期性、およびクラウド スケールを考慮して設計された分散トレース システムを使用しましょう。 トレースには、サービス境界間のフローを示す相関 ID を含める必要があります。 1 つの操作で複数のアプリケーション サービスへの呼び出しが実行される場合もありますが、 相関 ID があれば、操作が失敗した場合でも、エラーの原因を特定しやすくなります。
ログとメトリックを標準化する。 運用チームでは、ソリューション内のさまざまなサービスからログを集計する必要があります。 すべてのサービスで独自のログ ファイル形式が使用されていると、そこからの有用な情報を取得することが困難 (または不可能) になります。 相関 ID、イベント名、送信者の IP アドレスなどのフィールドを含んだ、共通のスキーマを定義するようにしましょう。 個々 のサービスで、基本スキーマを継承したカスタム スキーマを派生させたり、追加フィールドを格納したりすることは可能です。
管理タスクを自動化する (プロビジョニング、デプロイ、監視など)。 タスクを自動化することで、タスクが反復可能になり、ヒューマン エラーも発生しにくくなります。
構成をコードとして扱う。 構成ファイルをバージョン管理システム内に含めて、変更の追跡やバージョン管理を可能にするとともに、必要に応じてロールバックも実行できるようにしましょう。