##背景
・約6年前に運用していた予約登録系システムの話
・予約登録系システムは外向けのサーバーと管理用のサーバーで分かれていた
・そのうち、やらかしたのは管理用のサーバー
・APはColdfusion
・DBはSQL Server
##経緯
予約登録の管理画面には何処にもリンクの張られていない、ある特定の人だけの実績が見れる画面があった。
ある日、実績画面の修正依頼が来たので、確認するために実績画面にアクセスした。
長い待ち時間の後、表示されたのは何も移っていない真っ白な画面だった。
暫くするとサポートに電話がなった。
内容は、管理画面が表示されない・登録した予約が入っていない等の問合せだった。
##原因
自分がアクセスした実績画面だと思ったURLは、実はリリース時に使用した(と思われる)
DBを初期化するプログラムであった。
全てのテーブルがドロップされ、まっさらなテーブルが作成されていた。
##対応
通常であればバックアップから復元すれば良いだけの話であるが、
SQL Serverの復旧レベルが「単純」であったため、発生直後に戻せず定例バックアップが行われる当日の深夜の状態までであった。
外から来た予約については外向けのサーバーにもDBを持っているため、手入力にて復旧を行ったが、
管理画面から登録した予約については諦めざるを負えないため、完全復旧とはならなかった。
##何故惨劇は行われたか
・前任者が退職していたため、プログラムの存在を誰も知らなかった。
・過去にも対応したことがあると高を括り、良く確認もせずにアクセスしてしまった。
・そもそも誰でもアクセスできる場所に設置されていた。
・SQL Serverを使用するシステムを一律で「単純」に設定していた。
##惨劇後の対応
・プログラムの撤去
・SQL Serverの復旧レベルの設定を「完全」にし、障害発生時に戻せるように変更
・チーム内へ注意喚起
##振り返り
今はもう無くなったシステムですが、似たような惨劇を聞くたびに思い出しては震えています。
ヒューマンエラーが重なったことにより起きましたが、慎重にことを進め、後片付けも大事だと改めて気付かされた事件でした。