2011年3月15日、みずほ銀行で大規模なシステムダウンが起こりました。この事例は図らずも、システムダウンの恐ろしさを改めて世の中に示しました。システムダウンを防ぐために、システム開発や運用保守に携わる技術者は、どんな基本知識を身に付けておく必要があるのかについて、考えてみたいと思います。

 みずほ銀行のシステムダウンは、義援金の振り込みが特定の口座に集中したことがきっかけでした。これにより、振り込みデータの件数が、「バッチ処理」で一度に処理できる件数の上限値を上回ってしまいました。バッチ処理とは、大量のデータ処理を一括して進める処理方式のことです。その結果、バッチ処理が異常終了しました。

 ここで、システム担当者は処理の遅れを取り戻そうと、バッチ処理で一度に処理できる件数の上限値を増やしました。上限値を表す「パラメーター」の設定値を変更したわけです。それでも、バッチ処理は正常終了しませんでした。異常終了した一度目のバッチ処理の際に、一部の処理データが欠落してしまったからです。欠落データを復元する作業が難航し、結局翌朝までにバッチ処理を終わらせることができませんでした。

 緊急の事態が発生したことから、みずほ銀行はシステム運用を自動実行から手動に切り替えざるを得ませんでした。ここで、複数の「人的ミス」が発生し、未処理のデータがどんどんたまっていきました。

正体は4種類の「異常」の連鎖

 世の中に存在するシステムのほとんどは、一つの異常が発生したぐらいでは止まりません。例えば、システムの処理能力を上回る振り込みデータが集まったときには、一定量を超えるアクセスを受け付けないようにするなどの対処をします。ところが、みずほ銀行のケースでは、パラメーター設定の誤りをカバーする作業の過程で複数の人的ミスが起こったことで、こうした対処の仕組みがうまく機能しなかったと考えられます。

 このように、ある異常がまた別の異常を引き起こすといった具合に、異常の連鎖が生まれると、それがシステムダウンにつながってしまいます。言い換えると、システムダウンの正体は、小さな異常の連鎖であるとみなせます。

 システムを取り巻く異常は千差万別ですが、大きく4種類に分けることができます。前述した人的ミス(設定・操作ミス)と、ソフトウエアの不具合、性能・容量不足、不慮の事故です。どんなシステムダウンも、これら4種類の異常に分解することができます。

 人的ミスは、IT技術者あるいはオペレーターなどが、何らかの設定や操作をうっかり間違えることを指します。システムのパラメーターの設定ミス、ミドルウエアやアプリケーションのパラメーターの設定ミス、運用コマンドの投入ミスなどが該当します。

 ソフトの不具合は、OSやミドルウエア、アプリケーションソフトに潜むプログラムがバグをきっかけに想定外の動作を引き起こすことを指します。

 性能・容量不足は、大量の要求データが集まることで、システム資源が足りなくなる事象です。システム資源には、CPUやメモリー、ネットワークといったハードウエア資源のほか、データベースコネクションなどのソフト資源があります。

 不慮の事故はハードの故障や停電などです。東日本大震災によってサーバールームが浸水した、といったケースがこれに当てはまります。