ぶっつけ本番
コンサート
「細かい修正だから、直接アップしちゃえ」。
それは、リハーサルなしで満員のドーム公演に挑むようなものです。
イントロが鳴らない。照明が落ちる。衣装が破ける。
観客(ユーザー)はすべてを見ています。
- 「ステージング環境(検証環境)」が存在しない
- 開発者のローカルPCで動けば、そのまま本番アップロードしている
- 検証環境はあるが、データの中身が古すぎてテストにならない
- 「緊急パッチ」と称して、FTPでファイルを直接上書きしたことがある
ユーザーはモルモットではありません。未検証のコードをリリースすることは犯罪に近い行為です。
01. 「ローカルでは動いた」は言い訳にならない
CAN'T CONNECT TO DB...
開発者のPC(MacBook)と、本番サーバー(Linux)は別世界です。
OSが違う、ライブラリのバージョンが違う、ネットワーク設定が違う。
「ローカルで動いた」は「自宅のお風呂で歌えた」のと同じレベルです。
ドーム(本番環境)で歌える保証はどこにもありません。
本番と寸分違わぬ「リハーサル会場(ステージング環境)」が必要です。
すべて「準備不足」の結果だ。
02. 環境の一致率を高める
ステージング環境を作っても、本番と構成が違えば意味がありません。
「本番はAWS RDSだが、ステージングはローカルのMySQL」では、本番特有のバグを見逃します。
ここでもInfrastructure as Code (IaC) が役立ちます。
全く同じ設計図から、本番環境と検証環境を作り出すのです。
さらに、データベースの中身も、本番データを(個人情報をマスクして)コピーしてくるのが理想です。
03. ブルーグリーンデプロイメント
究極のリハーサルは「本番環境の中でやる」ことです。
現在稼働している本番環境(ブルー)の横に、新しい本番環境(グリーン)を作ります。
グリーンで完璧にテストを行ってから、アクセスを切り替えます。
もし問題があれば、瞬時にブルーに戻せます。
これなら、いつだって安心して「開演」できます。