目次

AWS移行戦略ガイド

周辺資料: 学習インデックス · AWSサービス一覧(2026) · アーキテクチャパターン集 · アンチパターン集


オンプレミス・他クラウドからAWSへの移行を 6R 戦略と AWS Migration Hub を軸に体系化した実践ガイド。


1. 移行戦略 6R

6R の概要と選択基準

戦略 概要 いつ選ぶか 工期 TCO 改善
Rehost(リホスト) そのまま EC2 へ移行 期限優先・まず移行
Replatform(リプラットフォーム) 最小限の改修でクラウド最適化 効果と速度のバランス重視
Refactor(リファクタリング) クラウドネイティブ設計に再構築 長期的な競争優位を狙う
Repurchase(再購入) SaaS / PaaS への切替 独自開発の価値が低い場合 短〜中
Retire(廃棄) 不要なアプリを削除 使われていない・重複機能
Retain(保留) 移行しない 移行リスク/コストが高い

6R の選定フロー

対象アプリケーションの分析
        │
        ├── 使用率が低い・重複機能がある → Retire
        │
        ├── ライセンス・規制・技術的負債で移行困難 → Retain(一時的)
        │
        ├── パッケージソフトで SaaS 代替あり → Repurchase
        │       例: オンプレ Exchange → Microsoft 365
        │           オンプレ CRM → Salesforce
        │
        ├── DB を RDS にするだけ / OS 変更不要 → Replatform
        │       例: Oracle → Aurora / Java EE → ECS Fargate
        │
        ├── コアビジネスロジック・競争優位の機能 → Refactor
        │       例: マイクロサービス化 / Lambda + API GW への再設計
        │
        └── それ以外(まず動かす必要がある場合) → Rehost
              例: Application Migration Service (MGN) で自動リホスト

2. 移行フェーズと主要タスク

Phase 1: アセスメント(評価)

[目標]
  移行対象を把握し、優先順位付けと波次計画を作成

[主要タスク]
  1. アプリケーションポートフォリオの棚卸し
     □ アプリ数・サーバー数・DB 数を把握
     □ 依存関係マップを作成(Application Discovery Service 活用)
     □ 技術スタック・ライセンス情報を収集

  2. 現状コストの把握
     □ オンプレのサーバー・ライセンス・運用コストを算出
     □ AWS Migration Evaluator でクラウド移行後のコスト試算

  3. 移行難易度の評価
     難易度低: ステートレスな Web/API サーバー
     難易度中: DB を持つモノリシックアプリ
     難易度高: オンプレ固有ミドルウェア / レガシーOS / ライセンス複雑

  4. 波次計画の策定
     Wave 1: パイロット(低難易度・低ビジネスインパクト)
     Wave 2: 主要アプリ(中難易度)
     Wave 3: 複雑なアプリ / DB 集約

Phase 2: 準備(Landing Zone 構築)

[目標]
  移行先となる AWS 環境の基盤を整備

[主要タスク]
  1. AWS Organizations 構成
     □ 管理アカウント / Log アカウント / Security アカウント
     □ Workloads OU(Prod/Staging/Dev)
     □ SCP でガードレール設定

  2. ネットワーク構成
     □ Direct Connect または Site-to-Site VPN の接続
     □ Transit Gateway でオンプレ ↔ AWS 間の共有ネットワーク
     □ IP アドレス設計(オンプレと重複しない CIDR)

  3. セキュリティ・ガバナンス
     □ CloudTrail 有効化(全アカウント・全リージョン)
     □ GuardDuty 有効化
     □ タグ戦略・命名規則の統一
     □ IAM Identity Center(SSO)の設定

  4. 移行ツールの準備
     □ AWS Application Migration Service(MGN)のレプリケーターインストール
     □ AWS DMS のレプリケーションインスタンス起動
     □ Migration Hub でトラッキング設定

[AWS Control Tower の活用]
  Landing Zone 構築を自動化する AWS サービス
  推奨: 新規 AWS 環境構築には Control Tower を使用
  → Organizations / CloudTrail / Config / SSO を自動設定

Phase 3: 移行実行

[サーバー移行(Application Migration Service)]

  1. ソースサーバーに MGN レプリケーションエージェントをインストール
  2. 継続的なデータレプリケーション(TLS 暗号化)
  3. テスト起動(本番トラフィックを切り替えない)
     → 機能確認 / 性能テスト
  4. カットオーバー
     → ソース停止 → ターゲット起動 → DNS 切替
  5. 移行後の確認期間(2週間)

[DB 移行(AWS DMS)]

  フルロード移行(ダウンタイムあり):
    小規模 / 移行ウィンドウが取れる場合
    DMS フルロード → 停止 → 切替

  CDC(継続的変更データキャプチャ)移行(最小ダウンタイム):
    本番稼働中にフルロード後、差分を継続同期
    同期が追いついたタイミングでカットオーバー
    ダウンタイム: 数分〜30分

[DMS がサポートする主な移行パターン]
  Oracle → Aurora PostgreSQL(Schema Conversion Tool 併用)
  SQL Server → Aurora MySQL
  MySQL → Aurora MySQL(ほぼそのまま)
  MongoDB → DocumentDB(互換性確認必要)
  オンプレ DB → RDS(同一エンジン、最も簡単)

Phase 4: 最適化・モダナイゼーション

[移行後の最適化ロードマップ]

  Month 1-3(安定化):
    監視設定の強化(CloudWatch / X-Ray)
    コスト確認と Savings Plans 購入
    セキュリティ設定の最終化

  Month 4-6(リプラットフォーム):
    EC2 → ECS Fargate 移行(コンテナ化)
    RDS パラメータチューニング
    ElastiCache 導入でレイテンシ改善

  Month 7-12(モダナイゼーション):
    モノリスの段階的マイクロサービス化
    CI/CD パイプラインの整備
    サーバーレス化(Lambda / API Gateway)

3. 主要移行サービスの使い方

Application Migration Service(MGN)

[特徴]
  サーバーを AWS に自動でリホストするサービス
  エージェントをインストールするだけで継続レプリケーション開始

[対応ソース]
  物理サーバー / VMware vSphere / Microsoft Hyper-V
  オンプレ Linux/Windows / 他クラウド(Azure / GCP)

[移行手順]
  1. ソースサーバーにエージェントインストール
     curl -O https://aws-application-migration-service-ap-northeast-1.s3...
     sudo python3 install.py --region ap-northeast-1

  2. MGN コンソールでサーバーを確認
     → 「初期同期中」から「準備完了」になるまで待機

  3. ローンチ設定
     ターゲットインスタンスタイプ / ネットワーク / ストレージを設定

  4. テスト起動(Test Launch)
     本番には影響なし / 動作確認を実施

  5. カットオーバー(Cutover Launch)
     ソース停止 → ターゲット起動 → DNS を新 IP に変更

AWS DMS(Database Migration Service)

[主要コンポーネント]
  レプリケーションインスタンス: 移行処理を実行する EC2(サイズ選定が重要)
  ソースエンドポイント: 移行元 DB の接続情報
  ターゲットエンドポイント: 移行先 DB の接続情報
  レプリケーションタスク: フルロード / CDC の設定

[レプリケーションインスタンスのサイズ目安]
  テーブル数 < 100 / データ < 100GB: dms.t3.medium
  テーブル数 100〜1000 / データ 100GB〜1TB: dms.r5.xlarge
  大規模 / 高スループット: dms.r5.4xlarge

[Schema Conversion Tool(SCT)の活用]
  異種 DB 間の移行(Oracle → Aurora など)は SCT でスキーマを変換
  自動変換率: 60〜80%(残り 20〜40% は手動修正が必要)
  変換できないもの: ストアドプロシージャの一部 / DB固有関数

[よくあるつまずきポイント]
  LOB(大容量オブジェクト)カラムの移行は時間がかかる
  → DMS タスク設定で LOB の扱い(Full LOB mode)を指定

  CDC に必要な設定:
    Oracle: Archive Log, Supplemental Logging を有効化
    MySQL: Binary Log (binlog_format=ROW) を有効化
    PostgreSQL: Replication Slot を作成

Migration Hub と Migration Evaluator

[Migration Hub]
  全移行プロジェクトの進捗を一元管理
  MGN / DMS / Server Migration Service の移行状況を集約表示
  
  使い方:
    1. Migration Hub でホームリージョンを設定
    2. アプリケーションを定義(複数サーバーをグルーピング)
    3. 各移行ツールからの進捗が自動集約
    4. 移行ステータス(未開始/進行中/完了)を追跡

[Migration Evaluator]
  オンプレのコストと AWS 移行後コストの比較レポートを生成
  
  コレクターをオンプレにインストール → 2週間データ収集
  → AWS の TCO 比較レポート(移行前後のコスト試算)
  → Savings Plans / RI を適用した場合の節約額も算出

4. DB 移行パターン別ガイド

Oracle → Aurora PostgreSQL(ヘテロジニアス移行)

[課題]
  Oracle 固有の機能: ROWNUM / CONNECT BY / DB Link / Package
  Oracle ライセンスが高額 → コスト削減が主な動機

[移行手順]
  1. SCT でスキーマ変換(Oracle DDL → PostgreSQL DDL)
  2. 変換レポートで手動修正箇所を確認(ストアドプロシージャなど)
  3. DMS フルロードで初期データ移行
  4. アプリの接続文字列・SQL を PostgreSQL 対応に修正
  5. テスト(性能・機能)
  6. CDC で差分同期しながらカットオーバー準備
  7. メンテナンスウィンドウでカットオーバー

[注意点]
  Aurora PostgreSQL の max_connections:
    db.r5.large: 1700 接続
    db.r5.xlarge: 3400 接続
  Oracle と比較してデフォルト接続数が多いのでプール設定を確認

[コスト削減効果の試算例]
  Oracle EE ライセンス: 約$30,000/CPU/年
  Aurora PostgreSQL: 約$3,600/年(db.r5.large、On-Demand)
  → 4 CPU サーバーなら年間$116,400の節約(ライセンスのみ)

SQL Server → Aurora MySQL / PostgreSQL

[移行の難所]
  T-SQL 構文(SQL Server 固有)の変換
  Stored Procedure / Trigger / View の変換
  SQL Server Agent ジョブ → EventBridge Scheduler + Lambda

[SCT 変換率の目安]
  単純なテーブル: 95%以上自動変換
  複雑なストアドプロシージャ: 50〜70%(残りは手動)

[Babelfish for Aurora PostgreSQL]
  SQL Server の T-SQL を Aurora PostgreSQL がそのまま解釈
  → コード変更なしで移行できる場合もある(互換性確認が必要)

MySQL → Aurora MySQL(ホモジニアス移行)

[最も簡単な移行パターン]

  方法A: RDS DMS(シンプル)
    DMS フルロード + CDC でオンラインマイグレーション

  方法B: mysqldump + リストア(小規模)
    mysqldump --single-transaction db_name | mysql -h aurora-endpoint db_name

  方法C: Percona XtraBackup(大規模・ダウンタイム短縮)
    バイナリバックアップを S3 に転送 → Aurora にリストア
    差分レプリケーションで追いついたらカットオーバー

[注意点]
  Aurora MySQL はデフォルトで read_committed ではなく REPEATABLE_READ
  MyISAM テーブルは事前に InnoDB に変換
  文字コード: latin1 → utf8mb4 への変換が必要な場合がある

5. カットオーバー計画

カットオーバー手順テンプレート

[事前チェック(カットオーバー1週間前)]
  □ 本番同等データでの性能テスト完了
  □ アプリチームの動作確認完了
  □ 監視アラーム設定完了
  □ ロールバック手順の確認・演習
  □ 関係者への通知(ユーザー向けメンテナンスアナウンス)

[カットオーバー当日の手順]
  T-4h  メンテナンスモード開始・ユーザーへの通知
  T-3h  最終データ同期(DMS CDC が追いついていることを確認)
  T-2h  ソースシステムへの書き込みを停止(メンテナンスページ表示)
  T-1h  最終差分データ移行・整合性チェック
  T-0   DNS を AWS エンドポイントに切替(TTL を事前に短縮しておく)
  T+30m アプリの動作確認・主要機能の疎通確認
  T+1h  監視異常なければメンテナンスモード解除
  T+2h  ユーザーへの完了通知

[ロールバック判断基準]
  カットオーバー後 2時間以内:
    エラー率が移行前の 3倍以上 → 即時ロールバック
    主要機能の 5XX 継続 → 即時ロールバック
  
  ロールバック手順:
    DNS を旧システムに戻す(事前に旧エンドポイントを保存)
    ソースシステムの書き込み禁止を解除
    DMS CDC を再開(AWS → オンプレの逆同期)

6. 移行失敗パターンと対策

失敗パターン 問題 対策
依存関係の見落とし 移行後に連携先が壊れる Application Discovery Service で依存マップを作成
性能テスト不足 移行後にパフォーマンス劣化 本番同等データ・トラフィックでテスト
DNS TTL が長い カットオーバー後も旧環境にアクセス 1週間前に TTL を 300秒以下に変更
ロールバック手順未整備 問題発生時に元に戻せない カットオーバー計画と同時にロールバック手順を作成
移行後の監視不足 問題の検知が遅れる 移行後 2週間はアラート閾値を厳しめに設定
ライセンス確認不足 移行後にライセンス違反 DB / ミドルウェアのライセンスを移行前に確認
移行スコープのクリープ 予定より長くなる Wave あたりの対象を明確に限定する

7. 移行プロジェクト チェックリスト

[アセスメントフェーズ]
□ アプリケーションポートフォリオを棚卸しした
□ 依存関係マップを作成した
□ 移行難易度と優先順位を評価した
□ 波次計画(Wave Plan)を承認した
□ AWS Migration Evaluator で TCO 試算を実施した

[準備フェーズ]
□ Landing Zone(Organizations / Control Tower)を構築した
□ Direct Connect または Site-to-Site VPN を接続した
□ ネットワーク設計(CIDR / トランジットゲートウェイ)を完成した
□ CloudTrail / GuardDuty / SecurityHub を有効化した
□ 移行ツール(MGN / DMS)の準備が完了した

[移行実行フェーズ]
□ パイロット Wave で手順を確認した
□ 本番同等データでの性能テストを実施した
□ カットオーバー手順とロールバック手順を作成した
□ DNS TTL を事前に短縮した(300秒以下)
□ 関係者・ユーザーへの通知を完了した

[移行後フェーズ]
□ 監視設定を強化した(移行直後2週間は厳しめのアラート)
□ コスト確認と Savings Plans 購入計画を作成した
□ ポストモーテム(移行レビュー)を実施した
□ モダナイゼーションロードマップを策定した