どんなに堅固なシステムでも、障害が起こる可能性は決してゼロにはできません。ですから、システム障害時に的確な対応がとれるよう、日頃から準備しておくことが大切です。また、障害対応をアウトソーシングすれば、情報システム部の通常業務を維持しつつ高い復旧能力を手に入れることができます。
ここでは、障害対応を事前準備する方法や、障害発生時にするべき作業の流れ、復旧作業の手段などについてご紹介します。
障害対応は事前の準備から
システムやネットワークの障害は、さまざまな原因があります。中でも、アクセスが集中して回線やサーバーがハングアップするのは、典型的な事例です。このような状況では、一分一秒でも早く復旧しなくてはなりませんが、冷静かつ確実に復旧作業を進めていくためには、事前の準備が大切です。
システムの構成図を作っておく
障害はいつ発生するかわかりませんので、情報システム部は「障害は発生するもの」という前提でいます。そこで、どのようなトラブルが起こりうるかを予測し、被害を最小限に抑える事前準備が重要となるのです。
まず必要なのは、管理対象となるシステムの構成図です。ネットワーク図、設定情報のほか、グループポリシーやライセンス情報なども必要でしょう。トラブルが起こったときに症状から原因を突きとめ、修復を図るためには、不可欠な情報です。
障害レベルと、それに合った対応を決めておく
発生した障害がどの程度のレベルなのか、どのような対応をすべきかを、マニュアル化しておきます。
修復後にユーザーに情報を通知しておく程度で良い軽微な障害なのか、あるいは一時的にサービスを停止する必要があるほど重篤な障害なのか。障害レベルに応じて必要な対応は異なりますし、それによって現場のユーザーに与える影響は大きく変わります。そこで、想定される障害をいくつかのレベルに分け、それぞれにとるべき対応を設定しておきましょう。レベル分けはあまり細かくするとかえってわかりにくくなりますので、4~5段階程度にまとめておくのが無難です。
これをユーザー全員に周知しておき、障害が起こった際には障害レベルとともに必要な追加情報を発信するようにします。また、ユーザーへの対応のほか、障害発生および復旧の報告先と連絡手段なども決めておきましょう。
障害発生時の作業の流れ
障害が起こったら、事前に設定しておいたマニュアルに沿って対応していきます。ここでは、一般的な障害発生時の作業の流れについて紹介しましょう。
1. 影響範囲を確認して各部署に連絡する
障害の多くは、単独の原因で発生することは少なく、いくつかの要因が絡み合って起こるものです。そのため、障害が発生している部分だけでなく、関連するほかの部分にも不具合が起こっている可能性もありますので、周辺状況を含めて確認しましょう。
また、データベースやウェブサーバーへのアクセスに障害が起こっている場合には、社内はもちろん、外部へのサービス提供が滞っていないかも確認しておきます。
障害範囲が確認できたら、必要に応じて各部署へ障害発生をアナウンスします。障害レベルによっては不要である場合もありますが、サービスへの悪影響が少しでも懸念されるなら、関連部署と障害情報を共有すべきでしょう。その際は、事前に策定しておいた障害レベル設定に合わせた対応をとります。
2. 監視システムによる自動復旧を試みる
監視システムが稼働していれば、監視対象部分に不具合が起こったり、特定の障害パターンがログに現れたりした場合、監視システムが自動的に再起動を行い、復旧を試みます。これは、障害復旧の最初のプロセスです。
自動復旧の対象となるのは、事前に設定しておいた部分のみですが、スクリプトを組んでおけば、それ以外の部分への自動復旧も可能です。
この段階で改善されない場合、あるいは自動復旧の対象外である場合には、エンジニアによる復旧対応へと移行します。
3. エンジニアによる原因の切り分けを行う
何らかの障害が起こったとき、それが自然発生的に起こったものなのか、あるいはユーザーによる操作ミスなどが要因なのか、見極めることが重要です。これが、エンジニアの行う切り分けの第一歩です。
オペレーションエラーによって起こった障害ならば、障害発生の前後にどのような操作が行われたのか、できるだけ正確かつ詳細に把握しておきます。
障害発生の前後でどんな操作をしたのか、それをユーザから聞き出すのは決して簡単ではありません。よく覚えていないということもありますし、「自分がトラブルの引き金となってしまった」という意識があれば、的確な答えができなくなるかもしれません。そんな状況でも、さまざまな角度から詳細にヒアリングをするには、相手の立場に立ったコミュニケーションが必要でしょう。こうして情報を収集し、原因を特定していきます。
復旧作業は二段階で行う
障害確認と切り分けによって原因を特定したら、具体的な復旧作業にかかります。短い時間で問題解決ができればいいのですが、この段階では恒久的な修復ができないことも多々あります。
その場合には、まず当座をしのぐ応急処置を施し、その後、根本的な修復を時間をかけて行う、二段構えの方法をとります。
応急処置で、現場を動かすことを優先する
障害の復旧・修復にあたっては、同じトラブルが再発しないよう、完治させるのが理想的です。しかし、差し当たり障害を放置したまま作業するわけにもいきません。そこで、まずユーザーが手を止めずに済むよう、必要最小限の機能を回復させるか、あるいは障害された機能の代替手段を用意します。
その上で、ユーザに状況をアナウンスし、復旧の目処やそれまでの代替手段の使い方などを通知します。
なお、ユーザへのアナウンスについては、一般的で平易な言葉を心掛け、システム関連の専門用語や略語を使わないようにしましょう。ユーザーに「してほしいこと」「しないでほしいこと」を明瞭かつ簡潔に列挙して、それを守ってもらうように伝えるべきです。
再発防止策と恒久対策を施す
応急処置でとりあえずの修復・復旧ができたら、十分な時間をとって恒久的な対策を施します。このプロセスを踏まないと、同様の障害が再発するリスクが解決されません。二度と同じトラブルが起こらないよう、根本的な原因を取り除きます。
なお、恒久対策は、「どこまで対策するか」によってコストに影響を及ぼします。ですから、必要な対策内容を見極めることも、恒久対策では重要です。
障害対応こそアウトソーシングが効率的
障害対策では、エンジニアには技術的スキルに加え、ヒアリングやアナウンスにおける、ユーザーとのコミュニケーション能力も必要です。
しかし、いつ起こるかわからない障害に対してこうした人員を確保しておくことは、多くの企業にとって簡単なことではないでしょう。そこで活用したいのが、障害対応のアウトソーシングです。
コストパフォーマンスに優れた障害対応が可能に
障害対応を外注することで、必要なときに必要なスキルを持ったエンジニアが即応する体制を用意できます。特に障害対応は、さまざまな事例を経験しているエンジニアの知見は欠かせません。
システムによる監視・自動復旧からエンジニアによるハイエンドなサポートまで、業務区分を区切っての依頼も可能です。「原因の切り分けまでを外注し、その結果を受けて作業は自社内で行う」という作業分担も可能ですから、自社のヒューマンリソースに応じた対応をとることができます。
平時から万一への備えを怠りなく
システム障害は、いつどのような規模で起こるか予測がつきません。万全を期していても必ず起きるものと考え、何が起こっても的確に対処できるよう準備しておきましょう。
また、早期解決を望むのであれば、障害対応の経験が豊富なエンジニアをそろえている会社に、アウトソースしておくのもひとつの手です。平時から怠りなく準備を整え、万一のときに備えておきましょう。