章 21 · 部 4
Expand-Contract Pattern
A focused chapter on expand-contract pattern, with practical delivery concerns, trade-offs, and the operational questions behind CI/CD work.
21-1 2 分 21-2 2 分 21-3 2 分 21-4 2 分 21-5 2 分 21-6 2 分 21-7 2 分
なぜデータベースのカラムをすぐに削除してはいけないのか
本番環境でデータベーススキーマを削除する際に起こりうる障害と、Expand-Contractパターンを用いた安全な移行手順を解説します。
既存アプリケーションを停止せずに新しいデータベース構造を追加する
Expand-ContractパターンのExpandフェーズを使って、ダウンタイムなしでデータベーススキーマを安全に拡張する方法を解説。新しいカラムやテーブルを追加する際のベストプラクティスと注意点。
2つのアプリバージョンが1つのデータベースを共有する:デュアルライトとデュアルリードの移行
新旧アプリが共存するデータベース移行で必須のデュアルライト・デュアルリードパターンを解説。ダウンタイムなしでスキーマ変更を実現する実践的な手法。
新旧スキーマの狭間で:レガシーレコードのバックフィルと検証
本番稼働3年のテーブルに新カラムを追加した後、数百万行の既存レコードをどう扱うか。バッチ処理による安全なバックフィル手法と、データ整合性を担保する検証プロセスを解説。
データベースマイグレーションの切り替えフェーズ:クリーンな移行を実現する方法
Expand-Contractパターンにおけるカットオーバーフェーズの実践ガイド。段階的切り替えのメリット、隠れた依存関係の発見方法、安全な移行のためのチェックリストを解説します。
古いデータベースカラムを安全に削除できるタイミングとは?Expand-ContractパターンのContractフェーズ
Expand-Contractパターンの最終フェーズであるContract(収縮)フェーズでは、古いスキーマを安全に削除するための依存関係の検出方法、待機期間、実際の削除手順を解説します。
ダウンタイムなしでカラム名変更、テーブル分割、制約変更を実現する方法
本番環境でカラム名変更、テーブル分割、NOT NULL制約追加をダウンタイムなしで行うExpand-Contractパターンの実践ガイド。SQL例と段階的な移行手順を解説。