WRブログ

システム障害の再発防止と品質コスト

システム障害の再発防止と品質コスト

システム開発に携わるすべてのエンジニアにとって、最も聞きたくない言葉。それは「システム障害」ではないでしょうか。

システム障害が発生してしまった場合、復旧作業はもちろん、発生原因の究明から改修対応まで、できるだけ早期にかつ確実に完結させることを求められます。 それだけではなく、事態の経緯や原因を踏まえ、再発防止に向けた取り組みをまとめた報告書の提出を速やかに求められる可能性も高いでしょう。

システム障害時は様々な情報が飛び交う中、時間に追われるつつ対応するため、独特の緊張感と共に作業にあたっているエンジニアたちは疲弊していきます。 また、通常業務よりも優先して対応することが多いため、労働時間削減が叫ばれる中であっても、どうしても長時間労働につながってしまう原因ともなってしまいます。

システム障害が発生しないよう、高品質なシステムを開発するべきなのは当然のこととして、「もしもシステム障害が起きてしまった」ときには、目前のトラブルを解決し、二度と同じシステム障害が発生しないように備えておくことが重要です。

システム障害が発生した際の対応

システム障害が発生した際の対応

1. 発生連絡

システム障害が発生すると、エンドユーザーや担当部署から「システムが使えなくなった」というエスカレーションが上がってくるか、運用監視ツールからシステム障害の発生を知らせるアラートが発報されます。 そして、その情報がエンジニアに共有され、直ちに事象の確認と原因調査が開始されます。

2. 事象確認

エンジニアはまず、事態として何が発生しているのか、影響度合いや範囲はどのくらいなのか、事実確認をしていきます。 ほかにも、システム障害が発生する直前のエンドユーザー(システム利用者)による操作の状況をヒアリングしたり、システムに残るログを確認したり、再現性の確認をしたりと、ありとあらゆるタスクが一斉に動き出し、様々な情報が集まってきます。 そして集まってきた情報から事実を分析・確認していきますが、このプロセスの中で同時に原因追求がなされ、システム障害を引き起こした根本原因が判明する場合もあります。

同時に、発生しているシステム障害の緊急度を確認します。 業務やサービスが停止してしまっている場合は「すぐになんとかして欲しい」というニーズがあるかもしれませんし、システムを使わない業務フローが確立している場合にはそこまで緊急度が高くないかもしれません。

3. 暫定対処(応急処置)

既にシステム障害の原因がわかっている場合や、システムを利用せずに業務フローを回せる(運用対処)場合には、このプロセスを飛ばして、次のプロセスに進みます。

システム障害の原因が不明確かつ緊急度が高い場合は、当座のシステム障害を解消させるために、暫定対処を行う場合があります。

  • 問題が発生している機能を停止して他サービスを再開させる
  • データベースにパッチを適用(データ修正)し、システム障害を一時的に解消する

などが考えられます。二次障害を引き起こしてしまわないよう、暫定対処には細心の注意が必要です。

4. 恒久対処

システム障害の根本原因が判明したら、該当箇所を改修し、テストを経て、改修版をリリースします。

5. 再発防止策の検討と実施

システム障害が起きてしまった経緯や背景を詳細に分析します。ほかにも同じようなシステム障害を引き起こしてしまう箇所がないかチェックし、プログラムの修正を行います。 また関連するドキュメントの修正や、プログラムの修正による影響がほかに影響を与えないか確認するためのテスト作業も合わせて実施します。

システム障害が人為的なもの(人手による作業でのミス)が原因の場合は、作業の自動化や複数名での目視確認等のチェック体制強化を実施します。

再発防止と品質コスト

システム障害発生時に再発防止策を検討して実行することは、「品質コスト」の中でも「予防コスト」に該当する重要なタスクです。

※品質コストについては当ブログでも「システム開発における品質コストとは?」として記事を公開しています。

システム障害の発生そのものが、余分なコストを生み出してしまっている、と見ることができます。ですから、障害対応以上に余計なコストを発生させないためにも、再発防止策の検討と実施は重要と言えるでしょう。