Mistake #38 : No Staging Environment

ぶっつけ本番
コンサート

「細かい修正だから、直接アップしちゃえ」。
それは、リハーサルなしで満員のドーム公演に挑むようなものです。
イントロが鳴らない。照明が落ちる。衣装が破ける。
観客(ユーザー)はすべてを見ています。

🎤 放送事故診断
  • 「ステージング環境(検証環境)」が存在しない
  • 開発者のローカルPCで動けば、そのまま本番アップロードしている
  • 検証環境はあるが、データの中身が古すぎてテストにならない
  • 「緊急パッチ」と称して、FTPでファイルを直接上書きしたことがある
⚠️ 警告:あなたのサイトは「実験場」です。
ユーザーはモルモットではありません。未検証のコードをリリースすることは犯罪に近い行為です。

01. 「ローカルでは動いた」は言い訳にならない

💦
😰

CAN'T CONNECT TO DB...

開発者のPC(MacBook)と、本番サーバー(Linux)は別世界です。
OSが違う、ライブラリのバージョンが違う、ネットワーク設定が違う。
「ローカルで動いた」は「自宅のお風呂で歌えた」のと同じレベルです。
ドーム(本番環境)で歌える保証はどこにもありません。
本番と寸分違わぬ「リハーサル会場(ステージング環境)」が必要です。

本番で起こるバグは、
すべて「準備不足」の結果だ。

02. 環境の一致率を高める

ステージング環境を作っても、本番と構成が違えば意味がありません。
「本番はAWS RDSだが、ステージングはローカルのMySQL」では、本番特有のバグを見逃します。
ここでもInfrastructure as Code (IaC) が役立ちます。
全く同じ設計図から、本番環境と検証環境を作り出すのです。
さらに、データベースの中身も、本番データを(個人情報をマスクして)コピーしてくるのが理想です。

03. ブルーグリーンデプロイメント

究極のリハーサルは「本番環境の中でやる」ことです。
現在稼働している本番環境(ブルー)の横に、新しい本番環境(グリーン)を作ります。
グリーンで完璧にテストを行ってから、アクセスを切り替えます。
もし問題があれば、瞬時にブルーに戻せます。
これなら、いつだって安心して「開演」できます。

執筆:QA(品質保証)マネージャー

「バグを本番に出さない」最後の砦。
テスト自動化とリリースフローの設計を行い、ソフトウェア品質を担保する。