本番で php artisan migrate:rollback を実行するのが危険なのはなぜですか。
カラムを消す down() はデータごと消えるからです。事故対応で使える代物ではありません。本番で問題が出たときは rollback ではなく、打ち消す内容の新しいマイグレーションを流します。
面接官が見ているのは「書いてあるが使えない」ことに気づいているかの補強。
これは「本番環境でマイグレーションを実行するとき、開発環境と違う点として正しいのはどれですか。」への追撃質問です。
よくある答えと、面談でどう見られるか
- カラムを消す down はデータごと消えるため、事故対応の手段にならない
その通りです。本番で問題が出たら rollback ではなく、打ち消す内容の新しいマイグレーションを前に進める方が安全です。 - rollback コマンドは本番環境では動作しないため
動作します。動作してしまうから危険です。 - 実行に時間がかかりダウンタイムが発生するため
時間も問題になり得ますが、本質はデータが失われることです。 - マイグレーションの履歴が消えて再実行できなくなるため
履歴は正しく巻き戻ります。問題は履歴ではなくデータです。
面接官は何を見ているか
- down() を書いていたかを正直に答えられた
- 本番の rollback はデータ消失リスクがあると認識していた
- 実際は切り戻しより「打ち消すマイグレーションを前に進める」ことに触れた
模範解答
down() は書きますが、本番で rollback を実行することはほぼありません。カラムを消す down はデータごと消えるので、事故対応で使える代物ではないからです。本番で問題が出た場合は、rollback ではなく「打ち消す内容の新しいマイグレーションを前に進める」方が安全です。down() は主にローカル開発でのやり直し用と割り切っています。