はい、こんばんは、
本日のタイトル、「本番環境でしか確かめらない」
よく聞きますよね~。
つまるところ結局不具合が出なきゃいいんですが
懸念していて、その後忘れていて、
お客様から、
と報告を受けて、
てなってしまうパターンが最悪です。
本当に、できることはないんでしょうか???
私が味わった、この「本番環境でしか確かめれない」呪縛へのメッセージをご覧ください。
これは私が犯した不具合でもかなり軽率だったなーと思えるミスでした。
なーんて生意気なことを言いました。
まぁ、そういう合意を得る相手なんて、システムの経験が深い人ではありません。
私の立場もそこそこなので、すぐに承認を得ることができました。
何が、本番環境でしか、確かめれないかって、
海外からのアクセスを許可するという修正でした。
今までは、アクセスを日本からしか許可していなったのですが、
韓国からのIPの許可を追加するように変更する修正でした。
修正自体は簡単なのですが、韓国IPから接続するってのができなかったので
こりゃ無理だ。テストできない。
と判断してしまいました。
今から思えば、ネットワークエンジニアに無理を言えば、IPをごまかして、テストとかなんぼでもできたんじゃないかと思うのですが、
ここで言いたいのはそんなことではありません。
まぁ、そんな経緯で、私が改修を行い、全くテストもせずに、
コードレビューだけしてもらって、OKをもらい、本番環境にアップしました。
本番アップ後、10分程して、お客様から
と営業が受け答えしている。
どう考えても、私の改修を行ったことが原因であることは明白!!
私の全細胞がそう感じてました。
営業が電話している間に、何か怪しいことはないか??
いや、私が改修をしたところに決まっている!!
改修のプログラムを何回も見直しました。
if ((日本のIPでない) OR (韓国のIPでない)) {
エラー
}
うーん。
うーん。
あれ、これって、
日本でも、韓国のIPでもない時は
エラーになる。
うんこれは正しい。
日本のIPの時は、韓国のIPではない
エラーになるね。
韓国のIPの時は、日本のIPでない
エラーになる。
あ、
どのIPでもエラーになるやん!!!!!!
すぐに
if ((日本のIPでない) AND (韓国のIPでない)) {
エラー
}
に変更しました。
ここ動かないと、その時の会社のすべての利益が出ないことになる
根本の仕組みの部分でした。
もう、焦って焦って、コードレビューもクソもなく、速攻で本番にアップしてもらいました。
焦ってはいましたが、現状が最悪の状態なので、本番に無謀にアップすることへの躊躇はありませんでした。ある意味冷静だったと思います。
アップ後、すぐに正常に動くことを確かめ、なんとか不具合が発生していた時間は15分程にとどまりました。
これ、何がいけなかったんでしょう??
後で反省会を開きました。
そこで私は閃きました。
不具合の後の修正後にした行為こそが、まさに、不具合を防ぐ方法なんだと!!
何だと思いますか??
「本番環境でしか確かめれない」なーんて言ってましたが、ちゃんと確かめてましたよね。
そう、
改修後に、もともと動いていた機能を確かめているんです。
今回で言えば、日本のIPから動作するってことは、確かめれてたんですよ。
窮地に追い詰められると、何も考えずにやっていたんですが、
本番にアップする前はやっていなかかったんですよ。
この、少なくとも
改修した機能は確かめることはできなくても、
もともと動いていた機能を確かめることはできます。
何でこんな基本的なことを怠っていたんダーーーーー。
まぁ、不具合が起こった後は何とでも言えます。
この時から、この会社では、本番アップ前に、機能改修に関連する機能で
改修前の機能で、確かめれることは、ちゃんと確かめることが義務付けられれました。
言い出せばキリがないのですが、超ド級で、重要な機能は確かめるに越したことはありません。
また、他の対策もあります。
今回のケースでは韓国IPからのアクセスは難しいですが、
お客様に本番アップ後に、確かめてもらうこともできるかもしれません。
また、本番しか確かめれないなら、そのことをお客様や、関係部署にあらかじめ
その旨を伝えておくことは、何の損にもならないので、やっておいたほうがいいでしょう。
ある機能をアップしたら、「ログインできなくなっちゃった」ってありますよね。
これなんかも、何もテストせずにアップした証拠です。
少なくとも何もテストできないなんてことは絶対ないんです。
はい・・本日の教訓
ひとーつ:本番環境でしか確かめれない時は、少なくとも、既存機能が正しく動くかどうかは確かめましょう!!
マジで、マジで、これは大事なことです。
その後、この教訓はかなり自身やその時の会社にいい影響を及ぼしたと思います。
「本番環境でしか確かめれない時」
本当にそうなの?何かテストできることはないの?
深く、ふかぁ~く考えてみましょう。
できることは何かあるはずです。
そして何度も言いますが、
既存機能が正しく動いていることはちゃんと確かめましょう。