障害対応 Week

3日月曜に今担当しているPJの本番リリースがあった。
夕方に作業が終わるはずが、あれこれ長引いて気がついたら終電を無くしてた。
21時に起動するはずのバッチを止めて午前0時半まで引っ張って、
そんで起動したら異常終了。そこで解散。タクシーで帰る。
基本的に僕は他の会社の作業の「待ち」で、
このバッチの起動のためだけに残っていたようなものだった。
下の人に押し付けて「あとよろしく」ってするわけにもいかないので
1人ずつ帰していって結局うちの会社では僕だけが残った。


翌朝火曜から障害対応に入る。それが木曜の夜までずっと続いた・・・


仮にAシステム待機用の1号機というサーバと
Bシステム稼動用の2号機というサーバがあったとする。
Bシステムの NFS マウントされたディレクトリに配置していたシェルを
Aシステム1号機上の JP1 から NFS ごしに起動して、
そのシェルが同じく Perl を起動して、・・・という仕組。
開発環境でできていたから、それをそのまま本番環境に持ってきたつもりだった。
NFS も JP1 もそっくりそのまま同じように作ってある。
システムテストはその開発環境で行なった。
先々週からB2号機に一部ダミーのshを配置してA1号機の JP1 から
JOBフローを空回しさせるということもしていた。
なのに、本番環境に持ってくると動かない。


ファイルを取り込んで TBL にインサートするというありふれた処理。
そもそもデータがおかしいのではないか、
アスキーで上げるべきファイルをバイナリで上げていたとかそんな初歩的なミスではないか、
火曜1日かけてあれこれ1つずつつぶしていくが、どれもこれもシロ。
水曜の午前になってようやく、Perl正規表現で()を使っている箇所の直後から
挙動がおかしくなることを突き止めるものの、なぜそうなるのか原因は全然検討がつかず。
A1号機とB2号機との間でどこか細かな部分で環境の差異があるのではないか?
PerlのライブラリがA1号機では足りなかったりするのではないか?
しかしライブラリは NFS ディレクトリにあるので同じものを参照しているはず。
Perl そのものは NFS ディレクトリではなく Local にインストールされているが、
インフラチームに調べてもらったところモジュール構成に差異はなし。
有識者ソースコードをレビューしてもらってもこれといって気になる箇所は見つからず。
お手上げとなる。


ムードとして、A1号機とB2号機の差は NFS だけなんじゃないの?となる。
NFS とどっかのライブラリの相性が悪いんじゃないの?
だけどそれはあくまでムードであって、理論的な帰結ではない。誰もその筋道を立てられない。
開発環境で再現しないからあれこれ込み入ったことを試せず、
何をするにも憶測でしかモノを語れない。


水曜の夜、頭を抱えた顧客から解決策を求められて苦し紛れに
NFSマウントを解除して、LOCALのディレクトリにバッチの稼働環境を構築しましょう」と提案する。
根拠なし。でもそれ以外に考えられない。
というか試してみるに値することが他に見つからない。
顧客のPMに無理を言って木曜の朝、別会社のインフラチームに緊急対処してもらう。


・・・結果、バッチが動くようになった。
どうして動くようになったのか根本的な理由は不明。
とにかく、動くようになったのならそれでよしとなる。


これでようやくカットオーバー。
一か八かに掛けるってシステム・エンジニアとして
ほんとはやっちゃいけないことなんだけど、他にどうしようもなかった。
顧客から提示された期限は刻一刻と迫る一方で。
NFSマウントの解除でダメだったら、まじで切腹ものだった。


疲れきった僕は木曜の夜、21時のバッチ起動までを待つ。
何にもする気になれない。ゆりかもめに乗ってお台場に行く。
お台場小香港で麻婆豆腐を食べる。HMV で CD を眺める。
オフィスに戻ってきて、ぐったりする。


今週・来週と本当は旧システムとの並行運用期間で、
2週間平穏無事だったら正式にシステム切替、サービスイン。
それが結局1週間近くずれこんで、って状態。
果てさてここから先もどうなることやら・・・


とりあえずこれで年末年始返上ってのはなさそうだ。


今回の件ではいろんな人に時間を割いて手伝ってもらった。
もともと IT 技術全般に弱いのに環境周りとなるとさっぱりダメ。
それを率いることになり、心の中では弱音を吐きまくった。
とりあえずなんとかなって、関わってくれた人みんなに感謝したい。


動いたときにはガッツポーズだったよ。
この僕にしては珍しく。
動いて嬉しかったの、ほんと何年ぶりだろう?