オラ98(オラキュッパ):HOME 喪われた時間を取り戻せ! ある男の過ち
Kさんの開発するシステムは2ヶ月後にカットオーバー予定のオンライン・ゲーム・システム。本来ならば開発は既に完了し、テストフェーズに入っていなければならない。
しかし、インフラの選定に時間がかかったために開発が遅れ、「デスマーチ・プロジェクト」に陥りかけている。
それでも不眠不休の日々が続き、カットオーバー間近の2週間前にようやく開発が完了。
突貫でテストを終え、なんとかカットオーバーに間に合わせた。
今回のシステムは、24時間365日止められない。また、納期が短い割に、パフォーマンス、セキュリティ、可用性、拡張性の要件が非常に高い。
周囲の説得に時間はかかったものの、.NETアプリケーションとの親和性が高く、開発者向けにさまざまな機能を実装しているOracle Databaseを選択したお陰で、これらの要件をスリムなソースコードで容易に実現することができた(注1)。
もし、あのデータベースを選択していたら、データベースと同様に肥大化したソースコードになっていたはずだ。
とてもじゃないが開発は間に合わず、完全にデスマーチにはまり込んだだろう。
システムは順調に稼働しているように見えたが、あるユーザーからクレームが発生。「ゲームポイントが0になってしまった。大至急調査してほしい!」
Kさんは急いで原因を調査。ゲームポイント計算ロジックの一部にバグが発覚。
カットオーバー間近になると、納期を優先するあまりテストが不十分になってしまう。
今回のプロジェクトも突貫テストだったため、一部のバグが発見できず、そのままカットオーバーしてしまったのだ。
システムのトラブルというものは今回のようなアプリケーションの不具合や、データの削除、間違った表の削除、誤バッチの実行など人的ミスによるものが多い。
人間というのはミスを犯すものなのである。間違いを犯さない人間はいない。
しかも、今回のような切羽詰まった状況だと、人的ミスが発生する可能性は高くなる。
なんとかアプリケーションコードのバグは修正したが、データ復旧の方が問題であった。
24時間365日止めてはならないシステムなので、バックアップからリストア、リカバリしている暇などない。問題が発生した直前のデータを参照し、正しいアプリケーションコードでポイントを再計算させる必要がある。
「タイムマシーンにのって、問題が発生した直前に戻れれば・・」
そんな非現実的な考えが頭をよぎる。
その時、Kさんは今回のシステムではOracle Databaseを採用していることを思い出した。
「まてよ・・、Oracle Databaseには好きな時に戻れる機能があったような・・」
そう、Oracle Databaseのフラッシュバック機能を使えば、
ビデオの巻き戻しのように、障害発生前の状況に自在に戻ることができる。
Kさんは、フラッシュバック・クエリを利用して、障害前のデータを参照。
無事修正したアプリケーションを利用し正しいデータに復旧することができた。
「助かった・・。迅速に復旧できたらから大事にならなかった。
タイムマシーンのように、いつでも好きな時点に戻れるなんて Oracle Database すごい!」
もし、安いからという理由であのデータベースを利用していたら、
復旧のためにあれもこれもやる必要があり、夜を徹した作業になっていただろう。
安堵の気持ちで今回データ復旧用に作成したワークテーブルを削除。
その時、Kさんの顔が青ざめる。
ワークテーブルと間違えて本番テーブルを消してしまった。
人間、せっぱ詰まった時と気を抜いた時にミスを犯すものである。
「今度こそは終わった・・。Oracle Databaseといえども、こんな致命的なミスは復旧できない・・・・」
観念したKさんは、M部長に障害を報告。
M部長
「急いで、フラッシュバック・ドロップを使え!」
Kさん
「フラッシュバック・ドロップ・・?新しいプロレスの技ですか?」
M部長
「冗談言っている場合じゃないだろ!! 消したテーブルを復活させる機能だよ!!」
そう、なんとフラッシュバック・ドロップを使えば、消したテーブルも復活されられる。
Kさんは、シンプルな操作で実行できる「フラッシュバック・ドロップ」で救われた。
もし安いだけのあのデータベースを採用していたとしたら、復旧のために夜を徹した作業を必要とした可能性があるし、消してしまったデータを完全に復旧することは困難であったことは間違いない。一度の操作ミスでKさんの立場も窮地に追い込まれていたはずだ。
今回の致命的なミスでも難無きを得たKさんは、失敗ばかりの自分の人生を振り返った。
「あの時、つい朝食を食べ過ぎなければ、目標大学の受験中に腹痛をおこさずうまくいったのに…」
「あの時、デートに遅れなければ、Yちゃんとうまくいったのになあ!」
「あの時、・・・」
「あの時、・・・」
後悔ばかりの人生。だが、あの時にはもう戻れないのである。
しかし、Oracle Databaseは、「あの時」に戻れる。
そんな不可能を可能にする機能が、「フラッシュバック」である。
「人生はやり直しがきかない、しかし、Oracle Databaseはやり直しがきく」
人が犯す過ちを、Oracle Databaseはリカバリしてくれる。
そんな人にやさしいデータベースは、Oracle Databaseだけである。
この言葉を胸に刻んで、是非、やり直しのきく Oracle Databaseを選択してほしい。
注1:本当にOracle Databaseを選択すると「ソースコードがスリム」になるのか?徹底検証予定。乞うご期待!