マイグレーションとは?データやシステムを別の環境に移行するITプロジェクトの手順

システム開発・テクノロジー
マイグレーションとは?ざっくりと3行で
  • データ・システム・アプリケーション・インフラを現在の環境から別の環境に移行する作業のこと。ラテン語の「移動する(migrare)」が語源だ
  • オンプレミスからクラウドへの移行(クラウドマイグレーション)・データベースの移行・システムの刷新(リプレイス)などITの現代化(モダナイゼーション)において避けられない作業
  • マイグレーションには「データの損失リスク・ダウンタイムの最小化・移行後の動作検証」という3つの重要な課題があり、移行前の計画と検証プロセスの設計が成功の鍵を握る

【深掘り】これだけ知ってればOK!

マイグレーションの主な種類を整理しよう。クラウドマイグレーション:オンプレミスからAWS・Azure・GCPへの移行(リフト&シフト・リアーキテクト)。DBマイグレーション:RailsやDjangoなどのORMのスキーマ変更を安全に適用する。データマイグレーション:旧システムのデータを新システムへ移し替える。OSマイグレーション:WindowsやLinuxのバージョンアップグレード。ERPマイグレーション:SAP・Salesforceなどのシステム刷新。

クラウドマイグレーションの代表的な6つの戦略(6Rと呼ばれる)を理解しよう。Rehost(リフト&シフト):アプリをそのままクラウドへ移行する。最もシンプルだが最適化は不十分。Replatform:小さな変更を加えてクラウドに最適化する(EC2→コンテナ化など)。Refactor/Re-architect:クラウドネイティブに作り直す。最も効果が高いが工数も多い。Repurchase:SaaSに切り替える(自社開発→Salesforce化など)。Retire:使わないシステムを廃止する。Retain:移行せずに現状維持。

DBマイグレーション(スキーママイグレーション)について理解しよう。Railsの`rails db:migrate`・Djangoの`python manage.py migrate`・FlywayやLiquibaseなどのツールを使ってデータベースのテーブル構造の変更を管理する。マイグレーションファイルは変更履歴をコードとして管理できるため、Gitと組み合わせてチームで安全にDBスキーマを変更できる。本番環境への適用は必ずバックアップを取ってから実施することが原則だ。

マイグレーションの失敗を防ぐための重要なプラクティスを整理しよう。①バックアップを必ず取る(最低限の移行前の状態への戻り先を確保)。②ロールバックプランを用意する(移行が失敗したときに元に戻せる手順を事前に準備)。③ステージング環境でリハーサルする(本番と同じ条件で移行の手順を本番前に必ず試す)。④移行後の動作検証を徹底する(移行直後はデータ整合性・全機能の動作確認を実施)。

ゼロダウンタイムマイグレーション(Blue-Greenデプロイメント)について理解しよう。サービスを止めずにマイグレーションを行う手法として、現在稼働しているBlue環境の横にGreen環境を用意して新バージョンのシステムをGreenで準備・検証してから、ロードバランサーでトラフィックをGreenに切り替えるという方法がある。切り替え後に問題が発生した場合はBlueに戻すことができる。

よくある誤解

マイグレーションは移行するだけだから簡単だと思っている

マイグレーションは計画・バックアップ・ステージング環境でのリハーサル・本番適用・検証・ロールバック計画という多くのステップが必要で、データ損失・ダウンタイム・移行後の不具合という大きなリスクを伴う。事前の準備と計画が成否を大きく左右する。

DBマイグレーションは本番で直接実行しても問題ないと思っている

本番のDBマイグレーションは必ずバックアップを取ってからステージング環境でのテストを経て実施することが原則だ。特にALTER TABLE・DROP COLUMNなどのデータを削除・変更するマイグレーションは元に戻せないため特に慎重に扱う必要がある。

会話での使われ方

ITKAGYO運営者デプロイ太郎のアイコン画像

オンプレミスからAWSへのマイグレーション、まずリフト&シフトで移行コストを抑えて、安定稼働を確認してからコンテナ化を進めましょう。

インフラアーキテクトがクラウドマイグレーション戦略を段階的に進める計画を説明している場面。

ITKAGYO運営者デプロイ太郎のアイコン画像

このDBマイグレーション、本番に適用する前にステージングで必ずリハーサルしてください。ALTER TABLEは元に戻せません。

シニアエンジニアがDBマイグレーションの慎重な実施を指示している場面。

ITKAGYO運営者デプロイ太郎のアイコン画像

Blue-Greenデプロイでゼロダウンタイムのマイグレーションを実現しました。Greenで新バージョンを検証してからトラフィックを切り替えました。

インフラエンジニアがBlue-Greenデプロイによるダウンタイムゼロのマイグレーション完了を報告している場面。

【まとめ】3つのポイント

  • データ・システム・インフラを現在の環境から別の環境に移行する作業の総称:クラウドマイグレーション・DBマイグレーション・データマイグレーションなど多様な種類があり「データ損失リスク・ダウンタイムの最小化・移行後の動作検証」が共通の重要課題だ
  • クラウドマイグレーションの6R(Rehost・Replatform・Refactor・Repurchase・Retire・Retain)で戦略を選ぶ:リフト&シフト(そのまま移行)からリアーキテクト(クラウドネイティブに作り直す)まで6つの戦略から移行コスト・期間・効果のバランスに応じた最適な選択が重要だ
  • バックアップ・ロールバック計画・ステージングリハーサルがマイグレーション成功の前提:移行前のバックアップ取得・失敗時の元に戻す手順の準備・本番と同じ条件でのリハーサルという3つのプラクティスがマイグレーション失敗を防ぐ最重要の事前準備だ

よくある質問

Q
リフト&シフトとリアーキテクトはどちらが良いですか?
A

リフト&シフトは速くてリスクが低い代わりにクラウドの恩恵を十分に受けられません。リアーキテクトはコスト・パフォーマンスが最適化される代わりに時間とコストがかかります。まずリフト&シフトで移行してから段階的に最適化する方法が多くの企業で採用されています。

Q
DBマイグレーションツールにはどんなものがありますか?
A

Rails(ActiveRecord Migrations)・Django(Alembic)・Java(Flyway・Liquibase)・Go(golang-migrate)などフレームワーク・言語に応じたツールがあります。

Q
ゼロダウンタイムマイグレーションはどのように実現しますか?
A

Blue-Greenデプロイメント・カナリアリリース・フィーチャーフラグを使った段階的な切り替えなどの手法があります。特にDBスキーマの変更は後方互換性を保ちながら複数のデプロイに分割するアプローチが有効です。

Q
マイグレーションとリプレイスの違いは何ですか?
A

マイグレーションはデータやシステムを「別の環境」に移す作業全般を指します。リプレイスは古いシステムを新しいシステムで置き換えることを指し、マイグレーションを含む場合がほとんどです。

【出典】参考URL

https://aws.amazon.com/jp/cloud-migration/ :AWSのクラウドマイグレーションガイド
https://flywaydb.org/ :Flyway(DBマイグレーションツール)公式サイト
https://e-words.jp/w/%E3%83%9E%E3%82%A4%E3%82%B0%E3%83%AC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3.html :IT用語辞典「マイグレーション」

コメント

「IT用語、難しすぎて心が折れそう……」という方のための、ハードル低めな用語辞典です。

情報レベルは「基礎中の基礎」。会話を止めないためのエッセンスだけを抽出しています。分かりやすさを追求するあまり、時々例え話が暴走しているかもしれませんが、そこは「ほどよく」聞き流していただけると幸いです。
ほどよくIT用語辞典システム開発・テクノロジー
デプロイ太郎のSNSを見てみる!!
タイトルとURLをコピーしました