本番 DB の破壊的 DDL を防ぐゲートと expand/migrate/contract
データベース
マイグレーション
CI/CD
障害防止
本番環境で破壊的なスキーマ変更(DROP TABLE/COLUMN 等)が入る際故を防ぐ仕組み。sqldef 系で --enable-drop-table が無条件に走る CI/CD は危険。
ゲート方針:
- dry-run の差分を先に出し、DROP TABLE / DROP COLUMN / ALTER...DROP / 危険な型変更を grep で検出
- 破壊的 DDL がない場合のみ自動実行
- ある場合は専用の Environment approval や手動 workflow でのみ実行可能にする
- PR 時点でも schema 差分に同じチェックを走らせてレビュー前に落とす
運用ルール: 破壊的変更を expand/migrate/contract に分ける。expand(新カラム・新テーブル追加を先に投入)→ migrate(データ移行を別ジョブ)→ contract(不要になったカラム・テーブル削除は次リリース以降に明示承認付きで)。