EXERCISE 60分

ストーリー

佐藤CTO
計画なき移行は必ず失敗する。具体的な移行計画を策定しよう

ミッション概要

ミッションテーマ目安時間
Mission 1移行戦略の選定15分
Mission 2ゼロダウンタイム移行設計15分
Mission 3バリデーション計画15分
Mission 4ロールバック手順設計15分

前提シナリオ

現状: MySQL 5.7(単一DB、3TB)
移行先: PostgreSQL 15(マイクロサービス対応、3DB分割)
要件: 24/7稼働、ゼロダウンタイム

Mission 1: 移行戦略の選定(15分)

解答例

選定: Strangler Fig + CDC

理由説明
ゼロダウンタイムCDCで継続的にデータ同期
リスク低減段階的に移行、問題発生時にロールバック可能
3DB分割対応サービス単位で順次移行可能

移行順序

  1. ユーザーサービスDB(最小、影響小)
  2. 商品サービスDB(中規模)
  3. 注文サービスDB(最大、最後)

Mission 2: ゼロダウンタイム移行設計(15分)

解答例
Phase 1(準備): PostgreSQL環境構築、スキーマ変換
Phase 2(同期): Debezium CDC で MySQL → PostgreSQL リアルタイム同期開始
Phase 3(検証): 整合性検証、パフォーマンステスト
Phase 4(切替): アプリのDB接続先を切替(Feature Flag)
Phase 5(監視): 24時間監視、問題なければ旧DB停止

Mission 3: バリデーション計画(15分)

解答例
チェック方法頻度
レコード数COUNT(*) 比較1時間ごと
データ内容ランダム1000件のハッシュ比較6時間ごと
集計値売上合計、ユーザー数等日次
全数検証全レコードの主要カラム比較切替前

Mission 4: ロールバック手順(15分)

解答例
トリガーアクション所要時間
エラー率 > 5%Feature FlagでMySQL に切り戻し即時
データ不整合検出CDC逆方向同期 + 切り戻し5分
パフォーマンス劣化接続先切り戻し即時

まとめ

ポイント内容
戦略リスクと要件に応じた移行戦略選定
ゼロダウンタイムCDC + Feature Flag で無停止切替
バリデーション多層的な整合性検証
ロールバック明確なトリガーと手順

チェックリスト

  • 移行戦略を選定し根拠を説明できた
  • ゼロダウンタイム移行を設計できた
  • バリデーション計画を策定できた
  • ロールバック手順を設計できた

次のステップへ

次はチェックポイントクイズで理解度を確認します。


推定読了時間: 60分