2015/01/24

ミッションクリティカルなシステムの思い出

大昔の話だけど、公共関係のミッションクリティカルなシステムの構築に関わっていたことがあった。止まっても人が死んだりとかはしないけど、それなりの時間止まったりしたら各方面にいろいろ面倒なことになるようなシステムだった。

しかし、そこに導入しようとしていた機器は結構新しいもので、わりと不安定だった。二重化されていたと思うんだけど、頻繁に片方がハングしてしまうというような問題があった。その状態でもう片方もハングすると完全にシステムがダウンしてしまうので、これはなんとかしなければいけないということになった。

そこで誰かが、シリアルポートがついていて、それ経由でコマンドを送ると電源の差込口ごとに電源のオン・オフができる電源タップというのをみつけてきて、それを間に噛ませようという話になった。マシンの状態を監視しておいて、おかしくなったら自動でコンセント抜き差し的なことをして復帰させようというのだ。そしてそれが実際に導入された。監視して電源タップにコマンドを送るスクリプトは僕がbashか何かでちょろっと書いた。1番目の口の電源を入れ直すのに echo 'off 1' > /dev/ttyS0; sleep 5; echo 'on 1' > /dev/ttyS0; とする(電源オフにして数秒待ってオンにする)、みたいな非常に素朴な感じだったと思う。

空調のバリバリに効いたデータセンタに置かれたミッションクリティカルなシステムの電源が全部なんだかよくわからないタコ足経由になっているというのはシュールな光景だった。電源タップの見かけは本当に普通の電源タップだった。これはすごいなと思ったのだけど、特にそれについて意見したりしなかったので、あるいは僕しかそう思わなかったのかもしれない。こういう現場の工夫みたいなものが事故を引き起こすというような工学上の話はよくある。しかしその電源タップは黙って使っているぶんには特に問題を引き起こすことはなかった。

僕のスクリプトがバグっていたりしたら両方のマシンを同時に再起動してシステム停止というのも容易に起こり得たけど、そういうことも起こらなかった。

それどころか僕はその電源タップ用のWebインターフェイスまで書いた気がする。そのページにいくとマシン一覧みたいなのがあり、そこからボタンをクリックして任意の機器を再起動できるのだ。こんな気軽なものになっちゃってよいのだろうかという気はしたけど、簡単に使えてお客さんからの評価は大変高かった。アドホックさを一番恐れていたのは僕で、それ以外の人たちは、お客さん含め全員仕組みを知っていつつ、それでもそれに満足しているみたいだった。世の中よくわからないものだなと思ったのだった。