システム障害と障害対応を考える
最近、日本電子計算株式会社にてシステム障害が発生し、多くの自治体や行政機関に影響が出ました。他社の事例を参考にシステム障害についてもう一度考えたいと思いました。
以下の記事を前提に進めて行きます。
1. システム障害で誰に影響が出たのか
2019年12月4日の午前にシステムが停止し、47の自治体と66の広域事務組合や図書館にて業務に影響を及ぼしました。
これらの自治体では税務処理や戸籍管理なのどの業務が行えなくなったとのことです。また練馬区では終業式に関わらず、通知表を配布することができないなど幅広く影響を及ぼしています。
また、データバックアップが正常に行えず、15%のシステムでは日本電子計算単独でのデータの復旧ができていないようです。今後さらに影響が広がっていく事が想定されます( 2019/12/17 時点)。
2. システム障害の原因
障害の原因はシステム上のデータを記憶している部分に対して制御を行っているプログラムが不具合を起こし、その結果システム全体が停止してしまったというものです。
プログラムの変更に関する情報はベンダー依存であった事が記載されています。
53自治体でシステム障害、7割復旧も全面復旧の見通し立たず――日本電子計算が謝罪より画像転記
3. なぜ大規模障害になったのか
障害のない完璧なシステムは存在しません。また、現代では環境変化が加速していく中でシステムを安定稼働させる必要があります。
このような環境下で求められるのは、システム障害を防ぐ設計も当然ですが、システム障害が発生する事を前提とした設計並びに検証だと思います。
今回の事例の場合、ファームウェアを検証する環境が存在しなかった事、並びにバックアップ処理に失敗している事から障害時の検証が十分でなかった事が影響を大きくしてしまった理由だと思います。
障害に強い、つまり想定外や変化に強いシステムにする為にはどのようにすれば良いのでしょうか。
4.変化と物事の関係
障害に強いシステムを考える前に、変化と物事の関係について1つの考え方を記載したいと思います。
変化と物事の影響についてナシームニコラスタレブさんがAntifragile(反脆弱性)という概念を提唱しています。
元々は社会学の概念ですが、ソフトウェアディベロップメントの領域でも影響を与えています。
From Fragile to Antifragile Softwareより画像転記
この考えでは、物事の変化への振る舞いを4つの分類に分け考えます。
・FRAGILE (フラジャイル)
変化に対して脆弱であり、変化が発生した際に大きな損失を受ける状態
・ROBUST (ロバスト)
予測された変化に強く、対応することができる状態
・RESILIENT (レジリエント)
変化に対して適合可能な状態
・ANTIFRAGILE (アンチフラジャイル)
変化から利益を得ることができる状態
変化に強いとはつまりAntifragileな状態になる事を意味します。
一方、今回の事例では1つの原因で多大な影響を及ぼしました。
つまり、システムは変化に弱くフラジャイルな状態と考える事ができます。
その為、まずはRobustなシステムとなる為の対応が必要だと思います。
5.Robustなシステムになるには
ロバストなシステムになるには障害(変化)を予測し、障害への対応策を作り、対応策の定期的な検証が必要だと思います。
具体的には以下のような対応が考えらます。
・障害時の対応方法の策定
(過去障害の洗い出し、一次対応方法の策定)
・障害対応フローの見直し
(障害フローチャートの整理)
・本番環境と同一の検証環境を準備し、システムを利用した障害訓練を定期
的に実施
(監視システム、バックアップ機能、クラスタ機能の動作確認等)
特に、実際にシステムの動作を確認する事が最も重要だと思います。
障害時のシステムの動きを擬似的に確認する事で、幸運にも事前に不具合を見つける事ができる可能性もあり、障害対応迅速化にも繋がると思います。
つまり、常に障害が発生する前提で準備をする事が重要だと思います。
今後はResilientやAntifragileについても書いていけたらと思います。
興味のある方は以下をご覧になっていただけると参考になるかと思います。
ご覧くださりありがとうございました。