情報システムが稼働開始して運用に入ってからの話です。
通常に使用するソフトウェアやデータなどは、いわゆる「本番環境」と呼ぶエリアにセットします。
それとは別に、本番そっくりの「検証環境」をもうひとつ用意することがあります。
エラー発生時の再現テストとか、プログラム修正した際の最終テストなどに使うためです。
この「検証環境」ですが、時としてわりと注意が必要なことがあります。
「本番環境そっくりではあるが、全く同じにはなり得ない」
という点です。
例えば、「本番環境で発生するエラーが、検証環境では全く発生しない」ということ、よくあります。
「同じ出力させてみても、本番環境と検証環境では、レスポンスが全く違う」ということも、とてもよくあります。
プログラムのバージョンや、「論理的な」位置は一緒でも、「物理配置」が違ったり、基本ソフトやミドルウェアの一部でバージョンの微妙な違いが発生していたりするのですね。
特にデータベースシステムだと、「データの格納場所」が全然違いますので、同じクエリ流しても結果セットの並び順が変わったりします。(並び順指定しない場合)
その上、「ある時点の本番環境のクローンを検証環境に再現する」という手順が割と時間と手間が掛かり、その作業の途中で何らかの別問題を混入させてしまうこともあります。
苦労して検証環境作成したものの、前述の理由などにより問題事象が全く再現しなかった、となったら、徒労感に打ちひしがれること必須です。
「検証環境が不要」と言うつもりは毛頭ありません。
しかし「検証」を行う際に、必ずしも「検証環境」を作成することが絶対に必要とは言えないケースもある、ということを認識しても良いのでは、ということです。参照系など、特に。
長年稼働している「こなれた」情報システムでは、その管理者や操作者が、本番環境下で「安全なテストデータの投入方法」や「事故を起こさないような、一部プログラムの安全な入れ替え手順」を確立させていることがよくあります。
そのような状況下だと、検証作業、すぐ終わります。