100%のシステム安定性を保証する方法は残念ながらありません。ですが、以下のようなガイドラインにしたがって、ネットワークに問題が発生して不定期に緊急呼び出しを受けなくてすむよう、ポリシーと手続きを決めておくことは可能です。
安定性の評価基準
システムの安定性の評価基準として、ここでは、システム全体のパフォーマンス、アクセス可能性、および使用可能性の測定値を考えます。Web サーバーやデータベース・サーバーなどのコンポーネントの稼働時間を保証することも含まれますが、ユーザーの視点からエンドツーエンドの信頼性を維持することも重要です。ユーザー・エクスペリエンスを考慮すると、個々のサーバーについて統計値をとる必要もあるでしょう。アプリケーションが 1日あたり 100万件のリクエストを処理している場合、そのトランザクションのわずかな部分(例えばほんの 1%でも)のパフォーマンスが悪くなったり、アクセスしにくくなったりすると、1万人ものユーザーが影響を受ける可能性があります。
安定したシステムであるためにはどの程度のレベルが必要かを考慮して、パフォーマンス、アクセス可能性、変更管理やサポート性を含む使用可能性を測定するベンチマークを設定します。そこから、システム稼働率を可能な限り 100%に近づけるための戦略に取り組むことができます。
これを踏まえて、システムの安定性を獲得するために考慮すべき 8つのポイントを列挙します。
1. システム安定性の定義
サーバー・メトリクスとユーザー・エクスペリエンスへの影響を含め、安定したシステム環境だと認定できるレベルが何か定義し、目指すべき測定値を設定します。アプリケーションにアクセスできない時間の最大値である目標復旧時間(RTO)、障害で業務中断が発生したとき過去のどの時点までの状態に戻すのかを示す目標復旧時点(RPO)の両方を含めることができます。テクノロジーに焦点を絞ったシステム・メトリクスではなく、全社の全体的なシステム・メトリクスを把握し、問題になりそうなリスク要因を測定します。そうでなかったら、個々のシステム所有者が個々のコンポーネントだけを表示して報告する、サイロ・アプローチになってしまいます。
2. 変更管理ポリシーを作成
詳細に定義された厳格な変更管理プロセスを作成してポリシーとして周知し、何かが変更されたときに障害が発生しないようにします。これには、ハードウェアとネットワークの設定、パッチのインストール手続き、ソフトウェアのバージョンアップ時の処理方法などが含まれます。
3. 厳密なテスト手順を作成し、徹底
稼働時間を向上させる重要なファクターは、ソフトウェアの品質そのものです。ソフトウェアすべてについて、品質を保証するための厳密なテスト手順が確実に実施されるようにしてください。コード変更からシステムの再設定、ネットワーク・インフラストラクチャのアップグレードまで、すべてのコンポーネントと変更に関して1つずつ回帰テストする必要があります。
4. ネットワークをマッピングして監視
通信が遅くなったり、侵害されたりすると、ネットワークを停止させなければならないことが多く、安定性に直接影響します。グローバル・ネットワークで、物理サーバーと仮想サーバー、ネットワーク・インフラストラクチャ、どのポートが開いいているか、重要な通信が行われている場所、弱点がどこにあるのか、などをすべて把握する必要があります。そのための最善の方法は、複雑に入り組んだ状態を、視覚的に一目でわかるようにするツールを使用することです。
5. 適切なサーバー監視
ダウンタイムを避けるためには、問題が発生したらすぐに検知し、問題を迅速に解決するための詳細情報が整っている必要があります。統合された監視ツールを使用してすべてのデバイスと サーバーを検出します。パフォーマンス上の問題があればそれをすばやく解明し、問題解決作業に集中できるようにする必要があります。根本原因分析は、プロセス改善による問題解決の手法であり、個々の要素だけでなくシステム全体をチェックします。継続すればシステム全体の改善につながります。
6. コラボレーション・ツールの実装
システムの安定性を回復するための重要な要因は、特に地理的に分散したチーム間のコミュニケーションです。モバイルデバイスやデスクトップで動作するコラボレーション・ツールは、問題が発生したときの中断時間を最小限に食い止めるために重要です。
7. システム復元手順のテスト
致命的な障害が発生した場合に、信頼できるリポジトリから新しいサーバーを迅速に復元または展開できるよう準備します。ソースコード管理や継続的な統合システムが含まれます。準備した手順を最も必要とする前にテストすることが重要です。
8. ビッグデータ分析を使用して障害を予測
安定性を確保する最善の方法は、中断が発生する前にそれを阻止することです。正常に動作しているときと障害が生じたときの両方に関して、各システムから大量のデータを収集することで、分析ツールを使用して将来の停止を予測するトレンドを発見することができます。究極的には、障害が発生した後に反応するのではなく、障害が発生する兆候が生じた時点で積極的な対策を施し、障害を未然に防ぐ方法を探求すべきでしょう。