【まいぐれーしょん】

マイグレーション とは?

最終更新:
💡 システムやデータを、新しい環境・状態へ移す

システムやデータを別の環境・状態へ移す作業。クラウド移行、データの移行、DBのスキーマ変更の違いと、方式選定・検証・切り替えを解説します。

📌 このページのポイント
マイグレーション:場所や構造を移す環境・データの移行移行元移行先別の環境・保存先へDBのスキーマ変更変更前id / name列の構造変更後id / name+ email列方式・互換性・検証・切り替えを計画構造を戻すことと、削除データの復元は別
上は環境や保存先を移す例、下は列を追加する別の用例です。バックアップと戻す条件も計画し、費用減や停止時間なしが一律に保証されるわけではありません。
ひよこ ひよこ
マイグレーションは、ITのお引っ越し?
ペンギン先生 ペンギン先生
環境を移す意味ではそう考えると分かりやすいよ。たとえば自社のサーバーからクラウドへ移す作業。ただしDBのテーブルに列を加える等、新しい構造へ変更する作業もそう呼ばれる。場所の移動だけとは限らないんだ。
ひよこ ひよこ
データベースなら、全部同じ移行?
ペンギン先生 ペンギン先生
データを別のDBへ移すことと、今のDBの構造を変更することを区別しよう。AWS DMSのようなデータ移行では、同じ種類のDB間でも違う種類のDB間でも内容を移す場合がある。開発のマイグレーションでは、列やテーブル等の変更を順番に管理することが多いよ。
ひよこ ひよこ
クラウドへは、どう移す?
ペンギン先生 ペンギン先生
代表例は、構成を大きく変えず移すリホスト、サービスを一部変えるリプラットフォーム、設計も見直すリファクター等だよ。方法が二つだけというわけではない。目的、互換性、費用、期間、運用する人の体制に合う方式を選ぶんだ。
ひよこ ひよこ
DBの変更を順番に管理するって?
ペンギン先生 ペンギン先生
Railsでは、列やテーブルを変更するマイグレーションファイルを作り、どれを適用したか記録するよ。別の開発環境でも同じ変更を順に適用しやすくなる。ただしアプリのコードとDBの構造が合うよう、公開する順番も考える必要があるんだ。
ひよこ ひよこ
失敗したら、戻せば大丈夫?
ペンギン先生 ペンギン先生
戻す処理を用意できる場合もあるけれど、削除したデータが必ず戻るわけではないよ。変更の影響、バックアップと復元、検証方法、切り替え・中止の条件を先に計画しよう。移行だけで必ず費用が減ったり、停止時間がなくなったりするわけでもないんだ。
もっと詳しく知りたい人へ

スキーマを戻せれば、削除したデータも戻る?

構造の変更を逆に実行できることと、以前の値を復元できることは別です。削除した列を作り直しても、その列にあった値が自動で復活するとは限りません。Railsにも不可逆な変更の扱いがあり、データの保存・復元を別に計画します。

適用済みのマイグレーションを、書き換えて再実行する?

Railsは適用した変更の版を記録するため、ファイルを書き換えただけでは同じ変更を再適用しません。共有・本番適用済みの変更は、新しいマイグレーションで修正するのが基本です。使用するツールの履歴管理と対象環境を確認します。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「マイグレーション」って出てきたら「システムやデータを、新しい環境・状態へ移す作業」と思えばだいたいOK!
📖 おまけ:英語の意味
「Migration」 = 移行・移住
💬 ITではシステムの環境移行、データの移行、DBの構造変更等に使われます。「何を、どこへ、どの状態へ移すか」を確認すると意味をつかめます。

参考資料

← 用語集にもどる