先日、運用を持っているシステムで立て続けに2件のトラブルがあった。
運用保守の契約は実際に構築した会社がそのまま担当しているのだが、インフラはA社、ネットワークはB社、OSミドル周りはC社、アプリはD社など分かれていて平等の立場である。しかし、なぜかトラブル時は私が支援しているところに連絡が来る。アーキテクトやコンテンツのアイデアを出しているからかもしれないが・・。

そのトラブルのうち2件目のものについて、トラブルの原因追及の方法を例示してみようと思う。

その日、私は1件目のトラブル対応と別件の作業で、朝の10時頃から眠っていた。
電話で起こされたのが15時頃(それまでの電話では起きなかった・・)。11時頃からトラブルになっていたらしい。ただ、大規模なシステム障害とかではない。外部に対しては何も影響がない、内部の話で軽微な部類だ。おそらく1件目のトラブルが影響が大きかったため、このレベルのものでも問題になったのだろう。

関係各所には調査を依頼して「こちらには問題がみつからない」という回答が返ってきていたそうだ。
しかし、経験上、トラブル時は単純なミスでもない限りどこの会社・担当もそういう回答をするのは想定済み。自分たちの範疇しか調査しないので、必然そういう回答になってしまう。
プログラムで言えば「単体テストで問題が無かった」というようなものである。

こういう場合は、まずは原因の切り分けが必要である。そのためアプリ側の会社にもう少し単純な確認を依頼した。ただ、渋られた。過去には上手くいっていたものであるもの。「現状トラブルが出ているので上手くいかないと思う」と。それには「これが確認できれば、貴社側に原因が無いことが確認できるので切り分けのためによろしくお願いします」と、引き受けて頂いた。

依頼内容としては、それが失敗したらインフラ/ネットワーク起因でしかあり得ないレベルのものだった。(だからこそ切り分けなのだが・・)
結果、依頼したものは正常に処理されたそうで、これはどういうことかとアプリ側の会社側で「このケースは」「あのケースは」と突き詰めて、ついに「これでは」というものを見つけて貰えた。

原因は、アプリ側とインフラ側で、許可しているものが違っていることであった。しばらく前に追加したデータが問題で、そのデータは送り出せるのだが、先方で受け付けられないため処理されない、という事象。
例で示すと、アプリ国出国時には問題なく出国手続きができたが、ファイヤウォール国入国時に強制送還された、って感じである。

勘所を簡単に書くと
・原因究明のため 切り分けが必要。何を確認すれば原因を絞り込みやすいか、大きい分岐から確認してゆく。
・最後に上手くいっていた時点以降に変更内容があれば、その前段階の状態で試せるなら試す。
・関係各所に依頼する作業は、その作業により疑いが晴れるなど、メリットを伝える。