mcpField
M
migration-architect

migration-architect

github.com/alirezarezvani開発28.9k636 回インストール2 日前に更新
リポジトリ

migration-architect について

migration-architectは、システム、データベース、インフラの移行を計画するチーム向けのスキルです。段階的な計画、互換性チェック、リスク評価、ロールバック手順の作成を支援します。

主な機能

  1. 01検証ゲート付きの段階的な移行計画
  2. 02スキーマとAPIの互換性チェック
  3. 03リスク評価と軽減策の計画
  4. 04ロールバック手順書の生成
  5. 05移行データの検証と照合

活用シーン

  1. 01データベーススキーマ移行の計画
  2. 02デプロイ前のAPI変更チェック
  3. 03移行フェーズごとのロールバック準備

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/alirezarezvani/claude-skills --skill migration-architect

インストール後、Claude Code で/migration-architectを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

README.md
assets/
database_schema_after.json
database_schema_before.json
sample_database_migration.json
sample_service_migration.json
expected_outputs/
rollback_runbook.json
rollback_runbook.txt
sample_database_migration_plan.json
sample_database_migration_plan.txt
sample_service_migration_plan.json
sample_service_migration_plan.txt
schema_compatibility_report.json
schema_compatibility_report.txt
references/
data_reconciliation_strategies.md
migration_patterns_catalog.md
zero_downtime_techniques.md
scripts/
compatibility_checker.py
migration_planner.py
rollback_generator.py

詳細

Migration Architect

ティア: POWERFUL
カテゴリ: エンジニアリング - 移行戦略
目的: ダウンタイムのない移行計画、互換性の検証、ロールバック戦略の生成

概要

Migration Architect スキルは、ビジネスへの影響を最小限に抑えながら、複雑なシステム移行を計画、実行、検証するための包括的なツールと方法論を提供します。このスキルでは、実証済みの移行パターンと自動化された計画ツールを組み合わせ、システム、データベース、インフラストラクチャ間の移行を確実に成功させます。

主な機能

1. 移行戦略の計画
  • 段階的な移行計画: 複雑な移行を、明確な検証ゲートを設けた管理しやすいフェーズに分割します
  • リスク評価: 実行前に、潜在的な障害箇所と緩和策を特定します
  • 期間の見積もり: 移行の複雑さとリソースの制約に基づいて、現実的な期間を算出します
  • 関係者とのコミュニケーション: コミュニケーション用テンプレートと進捗ダッシュボードを作成します
2. 互換性の分析
  • スキーマの進化: データベーススキーマの変更について、後方互換性に関する問題を分析します
  • API のバージョン管理: REST/GraphQL API およびマイクロサービスのインターフェースにおける破壊的変更を検出します
  • データ型の検証: データ形式の不一致と変換要件を特定します
  • 制約の分析: 参照整合性とビジネスルールの変更を検証します
3. ロールバック戦略の生成
  • 自動ロールバック計画: 各移行フェーズに対応する包括的なロールバック手順を生成します
  • データ復旧スクリプト: 特定時点へのデータ復元手順を作成します
  • サービスのロールバック: トラフィック管理を伴うサービスのバージョンロールバックを計画します
  • 検証チェックポイント: 成功基準とロールバックのトリガーを定義します

クイックスタート — 計画 → 互換性の確認 → ロールバックの生成

すべてのパスはこのスキルのフォルダーからの相対パスです。サンプル入力は assets/ に、想定される出力形式は expected_outputs/ にあります。

# 1. Generate the migration plan from a spec (copy assets/sample_database_migration.json)
python3 scripts/migration_planner.py --input migration_spec.json --format json -o migration_plan.json

# 2. Check schema/API compatibility — exits non-zero unless fully compatible (CI gate)
python3 scripts/compatibility_checker.py --before assets/database_schema_before.json --after assets/database_schema_after.json --type database --format json -o compatibility.json

# 3. Generate the rollback runbook from the plan
python3 scripts/rollback_generator.py --input migration_plan.json --format both -o rollback_runbook

出力は次のステップに連携されます。migration_plan.json(phases、risks、estimated_duration_hours)をステップ 3 で使用します。compatibility.json には overall_compatibility と breaking_changes_count / potentially_breaking_count が記録されます。

ゲート: 移行が承認されるのは、(a)compatibility_checker が終了コード 0 で終了し(overall_compatibility: compatible)、またはすべての破壊的変更および破壊的となる可能性のある項目について、担当者が書面で明示的に承認していること、かつ(b)計画内のすべてのフェーズについてロールバック手順書が存在する場合に限られます。スキーマを改訂した後は、両方のチェックを再実行してください。

移行パターン

データベースの移行
スキーマ進化パターン
  1. 拡張・縮小パターン

    • 拡張: 既存のスキーマと並行して、新しい列やテーブルを追加します
    • 二重書き込み: アプリケーションから古いスキーマと新しいスキーマの両方に書き込みます
    • 移行: 過去のデータを新しいスキーマにバックフィルします
    • 縮小: 検証後、古い列やテーブルを削除します
  2. 並行スキーマパターン

    • 既存のスキーマと並行して新しいスキーマを実行します
    • フィーチャーフラグを使い、スキーマ間のトラフィックを振り分けます
    • 並行稼働するシステム間のデータ整合性を検証します
    • 十分な確信が得られたら切り替えます
  3. イベントソーシング移行

    • 移行期間中、すべての変更をイベントとして記録します
    • 整合性を保つため、新しいスキーマにイベントを適用します
    • ロールバックに備えて、イベントの再生機能を有効にします
データ移行戦略
  1. 一括データ移行

    • スナップショット方式: メンテナンス期間中にすべてのデータをコピーします
    • 増分同期: 変更を追跡しながら、データを継続的に同期します
    • ストリーム処理: リアルタイムのデータ変換パイプラインを構築します
  2. 二重書き込みパターン

    • 移行中、ソースシステムとターゲットシステムの両方に書き込みます
    • 書き込みに失敗した場合に備えて、補償パターンを実装します
    • 整合性が重要な場合は、分散トランザクションを使用します
  3. 変更データキャプチャ(CDC)

    • データベースの変更をターゲットシステムにストリーミングします
    • 移行中の結果整合性を維持します
    • 大規模なデータセットでもダウンタイムのない移行を実現します
サービスの移行
Strangler Fig パターン
  1. リクエストのインターセプト: プロキシ/ゲートウェイ経由でトラフィックをルーティングします
  2. 段階的な置き換え: 新しいサービスの機能を段階的に実装します
  3. レガシーの廃止: 新しいコンポーネントの安定性が確認できたら、古いサービスコンポーネントを削除します
  4. モニタリング: 移行期間を通じて、パフォーマンスとエラー率を追跡します
graph TD
    A[Client Requests] --> B[API Gateway]
    B --> C{Route Decision}
    C -->|Legacy Path| D[Legacy Service]
    C -->|New Path| E[New Service]
    D --> F[Legacy Database]
    E --> G[New Database]
並行実行パターン
  1. 二重実行: 古いサービスと新しいサービスを同時に実行します
  2. シャドウトラフィック: 本番環境のトラフィックを両方のシステムにルーティングします
  3. 結果の比較: 出力を比較して正しさを検証します
  4. 段階的な切り替え: 信頼度に応じてトラフィックの割合を変更します
カナリアデプロイパターン
  1. 限定的なロールアウト: 新しいサービスを少数のユーザーにデプロイします
  2. モニタリング: 主要な指標(レイテンシ、エラー、ビジネス KPI)を追跡します
  3. 段階的な拡大: 信頼度の向上に応じてトラフィックの割合を増やします
  4. 全面的なロールアウト: 検証に合格したら移行を完了します
インフラストラクチャの移行
クラウド間の移行
  1. 評価フェーズ

    • 既存のリソースと依存関係を棚卸しします
    • サービスを移行先のクラウドにおける同等のサービスに対応付けます
    • リファクタリングが必要なベンダー固有の機能を特定します
  2. パイロット移行

    • まず重要度の低いワークロードを移行します
    • パフォーマンスとコストモデルを検証します
    • 移行手順を改善します
  3. 本番環境への移行

    • 一貫性を保つため、Infrastructure as Code を使用します
    • 移行中にクラウド間ネットワークを実装します
    • 災害復旧機能を維持します
オンプレミスからクラウドへの移行
  1. リフト&シフト

    • 既存のアプリケーションへの変更を最小限に抑えます
    • まず迅速に移行し、最適化はその後に行います
    • クラウド移行ツールとサービスを使用します
  2. 再アーキテクチャ

    • クラウドネイティブなパターンに合わせてアプリケーションを再設計します
    • マイクロサービス、コンテナ、サーバーレスを採用します
    • クラウドのセキュリティとスケーリングのプラクティスを実装します
  3. ハイブリッドアプローチ

    • 機密データはオンプレミスに保持します
    • コンピューティングのワークロードをクラウドに移行します
    • 環境間のセキュアな接続を実装します

移行のためのフィーチャーフラグ

段階的な機能のロールアウト
# Example feature flag implementation
class MigrationFeatureFlag:
    def __init__(self, flag_name, rollout_percentage=0):
        self.flag_name = flag_name
        self.rollout_percentage = rollout_percentage
    
    def is_enabled_for_user(self, user_id):
        hash_value = hash(f"{self.flag_name}:{user_id}")
        return (hash_value % 100) < self.rollout_percentage
    
    def gradual_rollout(self, target_percentage, step_size=10):
        while self.rollout_percentage < target_percentage:
            self.rollout_percentage = min(
                self.rollout_percentage + step_size,
                target_percentage
            )
            yield self.rollout_percentage
サーキットブレーカーパターン

新しいシステムでパフォーマンスの低下が見られた場合に、レガシーシステムへ自動的にフォールバックするよう実装します。

class MigrationCircuitBreaker:
    def __init__(self, failure_threshold=5, timeout=60):
        self.failure_count = 0
        self.failure_threshold = failure_threshold
        self.timeout = timeout
        self.last_failure_time = None
        self.state = 'CLOSED'  # CLOSED, OPEN, HALF_OPEN
    
    def call_new_service(self, request):
        if self.state == 'OPEN':
            if self.should_attempt_reset():
                self.state = 'HALF_OPEN'
            else:
                return self.fallback_to_legacy(request)
        
        try:
            response = self.new_service.process(request)
            self.on_success()
            return response
        except Exception as e:
            self.on_failure()
            return self.fallback_to_legacy(request)

データの検証と照合

検証戦略
  1. 行数の検証

    • ソースと移行先のレコード数を比較します
    • 論理削除されたレコードやフィルタリングされたレコードを考慮します
    • しきい値に基づくアラートを実装します
  2. チェックサムとハッシュ

    • 重要なデータのサブセットについてチェックサムを生成します
    • ハッシュ値を比較してデータの乖離を検出します
    • 大規模なデータセットにはサンプリングを使用します
  3. ビジネスロジックの検証

    • 両方のシステムで重要なビジネスクエリを実行します
    • 集計結果(合計、件数、平均)を比較します
    • 派生データと計算結果を検証します
照合パターン
  1. 差分の検出

    -- Example delta query for reconciliation
    SELECT 'missing_in_target' as issue_type, source_id
    FROM source_table s
    WHERE NOT EXISTS (
        SELECT 1 FROM target_table t 
        WHERE t.id = s.id
    )
    UNION ALL
    SELECT 'extra_in_target' as issue_type, target_id
    FROM target_table t
    WHERE NOT EXISTS (
        SELECT 1 FROM source_table s 
        WHERE s.id = t.id
    );
    
  2. 自動修正

    • よくある問題に対応するデータ修復スクリプトを実装します
    • 安全に再実行できるよう、冪等な処理を使用します
    • 監査証跡のため、すべての修正アクションをログに記録します

ロールバック戦略

データベースのロールバック
  1. スキーマのロールバック

    • スキーマのバージョン管理を維持します
    • 可能な場合は、後方互換性のあるマイグレーションを使用します
    • 各マイグレーション手順のロールバックスクリプトを保持します
  2. データのロールバック

    • データベースのバックアップを使用した時点復旧
    • 正確なロールバック地点へのトランザクションログの再生
    • 移行のチェックポイントでデータスナップショットを維持します
サービスのロールバック
  1. ブルーグリーンデプロイ

    • 移行中は以前のサービスバージョンを稼働させておきます
    • 問題が発生した場合は、トラフィックをブルー環境に戻します
    • 移行期間中は並行するインフラストラクチャを維持します
  2. 段階的なロールバック

    • トラフィックを徐々に以前のバージョンへ戻します
    • ロールバックの過程でシステムの健全性をモニタリングします
    • 自動ロールバックのトリガーを実装します
インフラストラクチャのロールバック
  1. Infrastructure as Code

    • すべてのインフラストラクチャ定義をバージョン管理します
    • ロールバック用の Terraform/CloudFormation テンプレートを維持します
    • ステージング環境でロールバック手順をテストします
  2. データの永続性

    • 移行中も元の場所にデータを保持します
    • 元のシステムへのデータ同期を実装します
    • 両方の環境でバックアップ戦略を維持します

リスク評価フレームワーク

リスクの分類
  1. 技術的リスク

    • データの損失または破損
    • サービスのダウンタイムまたはパフォーマンスの低下
    • 依存システムとの統合の失敗
    • 本番環境の負荷によるスケーラビリティの問題
  2. ビジネスリスク

    • サービスの中断による収益への影響
    • 顧客体験の低下
    • コンプライアンスおよび規制上の懸念
    • ブランドの評判への影響
  3. 運用上のリスク

    • チームの知識不足
    • テスト範囲の不足
    • モニタリングとアラートの不備
    • コミュニケーションの断絶
リスク軽減策
  1. 技術的な軽減策

    • 包括的なテスト(ユニット、統合、負荷、カオス)
    • 自動ロールバックのトリガーを備えた段階的な展開
    • データ検証および照合プロセス
    • パフォーマンスのモニタリングとアラート
  2. ビジネス上の軽減策

    • ステークホルダーとのコミュニケーション計画
    • 事業継続手順
    • 顧客への通知戦略
    • 収益を保護するための対策
  3. 運用上の軽減策

    • チームのトレーニングとドキュメント
    • ランブックの作成とテスト
    • オンコールローテーションの計画
    • 移行後のレビュー手順

移行ランブック

移行前チェックリスト
  • 移行計画をレビューし、承認する
  • ロールバック手順をテストし、検証する
  • モニタリングとアラートを設定する
  • チームの役割と責任を定義する
  • ステークホルダーとのコミュニケーション計画を開始する
  • バックアップと復旧の手順を検証する
  • テスト環境の検証を完了する
  • パフォーマンスのベンチマークを確立する
  • セキュリティレビューを完了する
  • コンプライアンス要件を確認する
移行中
  • 計画した順序で移行フェーズを実行する
  • 主要業績評価指標を継続的にモニタリングする
  • 各チェックポイントでデータの整合性を検証する
  • ステークホルダーに進捗を伝える
  • 計画からの逸脱を記録する
  • 成功基準を満たさない場合はロールバックを実行する
  • 依存するチームと連携する
  • 詳細な実行ログを維持する
移行後
  • すべての成功基準を満たしていることを検証する
  • 包括的なシステムヘルスチェックを実施する
  • データ照合手順を実行する
  • 72 時間にわたってシステムパフォーマンスをモニタリングする
  • ドキュメントとランブックを更新する
  • レガシーシステムを廃止する(該当する場合)
  • 移行後の振り返りを実施する
  • 移行関連の成果物をアーカイブする
  • 災害復旧手順を更新する

ツールとテクノロジー

移行計画ツール
  • migration_planner.py: 移行計画を自動生成します
  • compatibility_checker.py: スキーマと API の互換性を分析します
  • rollback_generator.py: 包括的なロールバック手順を生成します
検証ツール
  • データベース比較ユーティリティ(スキーマとデータ)
  • API コントラクトテストフレームワーク
  • パフォーマンスベンチマークツール
  • データ品質検証パイプライン
モニタリングとアラート
  • リアルタイムの移行進捗ダッシュボード
  • 自動ロールバックトリガーシステム
  • ビジネス指標のモニタリング
  • ステークホルダー通知システム

ベストプラクティス

計画フェーズ
  1. リスク評価から始める: 計画を立てる前に、考えられるすべての障害モードを特定します
  2. ロールバックを前提に設計する: 移行のすべてのステップに、テスト済みのロールバック手順を用意します
  3. ステージング環境で検証する: 本番環境に近い環境で、移行プロセス全体を実行します
  4. 段階的な展開を計画する: フィーチャーフラグとトラフィックルーティングを使用して、移行を制御します
実行フェーズ
  1. 継続的に監視する: 技術面とビジネス面の両方の指標を継続的に追跡します
  2. 積極的にコミュニケーションを取る: 進捗や問題について、すべての関係者に常に情報を共有します
  3. すべてを記録する: 移行後の分析に備えて、詳細なログを維持します
  4. 柔軟に対応する: 実際のパフォーマンスに応じてスケジュールを調整できるように準備します
検証フェーズ
  1. 検証を自動化する: データの整合性とパフォーマンスの確認に自動化ツールを使用します
  2. ビジネスロジックのテスト: 重要なビジネスプロセスをエンドツーエンドで検証します
  3. 負荷テスト: 想定される本番環境の負荷のもとで、システムのパフォーマンスを確認します
  4. セキュリティ検証: 新しい環境でセキュリティ制御が適切に機能することを確認します

開発ライフサイクルとの統合

CI/CD との統合
# Example migration pipeline stage
migration_validation:
  stage: test
  script:
    - python scripts/compatibility_checker.py --before=old_schema.json --after=new_schema.json
    - python scripts/migration_planner.py --config=migration_config.json --validate
  artifacts:
    reports:
      - compatibility_report.json
      - migration_plan.json
Infrastructure as Code
# Example Terraform for blue-green infrastructure
resource "aws_instance" "blue_environment" {
  count = var.migration_phase == "preparation" ? var.instance_count : 0
  # Blue environment configuration
}

resource "aws_instance" "green_environment" {
  count = var.migration_phase == "execution" ? var.instance_count : 0
  # Green environment configuration
}

この Migration Architect スキルは、ビジネスへの影響と技術的リスクを最小限に抑えながら、複雑なシステム移行を計画、実行、検証するための包括的なフレームワークを提供します。自動化ツール、実証済みのパターン、詳細な手順を組み合わせることで、組織は最も複雑な移行プロジェクトにも自信を持って取り組めます。

コメント