Expand-Contract マイグレーションとは?
expand-contract マイグレーションは、parallel change とも呼ばれ、schema の変更を、古いコードと新しいコードが共存して動作し続ける各フェーズに分割します。expand フェーズでは何も削除せずに新しいカラムやテーブルを追加し、アプリケーションコードをそれらを使うよう更新し、データを backfill し、それが済んで初めて contract フェーズで古い構造を削除します。各フェーズは独立して deploy 可能かつ可逆です。
なぜ重要か
schema とそれを使うコードを一度の deploy で変更すると、リスクの高い lockstep なリリースを強いられます。先に expand することで古いコードと新しいコードが共存でき、各ステップで deploy と rollback が安全に保たれます。
関連ガイド
What Is a Zero-Downtime Schema Change?A zero-downtime schema change alters a live database without interrupting service, using non-blocking operati…
What Is a Blue-Green Database Migration?A blue-green database migration keeps two database states in sync so traffic can cut over to the new schema a…
What Is the Plan and Apply Cycle?The plan and apply cycle is the infrastructure-as-code workflow of computing a proposed change set, reviewing…