一人前エンジニア道場

インフラ・運用 / 約25分

本番変更の安全設計

なぜこれを学ぶか

「他人が利用する本番環境を安全に変更する」はエンジニアの信頼の土台です。一度の障害で失われる信頼は、積み上げに何倍もの時間がかかります。

安全な変更の原則は 小さく、可逆的に、観測可能に です。大きな変更は分割し、いつでも元に戻せる状態を保ち、変更後はメトリクスを監視します。

デプロイ戦略: ローリング(順次入替)、Blue-Green(環境を2つ用意して切替)、カナリア(1%のユーザーにだけ新バージョンを出す)。リスクに応じて選びます。

DBのスキーマ変更は特に危険です。カラム削除は「コードがまだ参照している」事故の元。安全な手順: ①新カラム追加 → ②両方に書くコードをデプロイ → ③移行 → ④旧カラム参照を削除 → ⑤旧カラム削除。これを expand & contract と呼びます。

ロールバック計画はデプロイ前に 書きましょう。「戻せる」自信がない変更は、そもそもデプロイしてはいけません。

重要ポイント

  • 変更は小さく・可逆的に・観測可能に
  • DBスキーマ変更はexpand & contract
  • ロールバック計画はデプロイ前に作る

理解度チェック

選ぶと即座に解説が表示されます。

本番DBのカラム名を変更したい。最も安全な手順は?

ヒントを見る

「新旧どちらのコードが動いていても壊れない状態」を各ステップで維持できる手順を選びましょう。expand & contract(拡張してから縮小する)パターンがキーワードです。

コーディング演習実際に書く

expand & contract の移行手順をコードで表現します。現在のステップ名を受け取り、次のステップ名を返す関数を書いてください。順序: 'start' → 'add-column' → 'dual-write' → 'backfill' → 'switch-read' → 'drop-column' → 'done'。'done' の次は 'done' を返してください。

function nextMigrationStep(current)

スキルセルフチェック

このレッスンの内容をどの程度理解できましたか?