mcpField
L
legacy-modernizer

legacy-modernizer

github.com/jeffallan开发12.1k4.4k 次安装今天更新
代码仓库

关于 legacy-modernizer

Legacy Modernizer 是用于规划并推进遗留系统渐进式现代化的技能。它强调记录依赖与风险、先建立特征测试,再通过功能标志逐步迁移,并在移除旧代码前进行监控和回滚验证。

主要功能

  1. 01梳理依赖关系与风险
  2. 02制定分阶段迁移及回滚方案
  3. 03改动前建立特征测试
  4. 04通过功能标志逐步发布
  5. 05用测试和监控验证行为

适用场景

  1. 01渐进式替换遗留服务
  2. 02规划数据库或 API 迁移
  3. 03重构期间保持现有行为
  4. 04制定回滚与监控计划

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/jeffallan/claude-skills --skill legacy-modernizer

安装后在 Claude Code 中输入/legacy-modernizer确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
legacy-testing.md
migration-strategies.md
refactoring-patterns.md
strangler-fig-pattern.md
system-assessment.md

详细介绍

遗留系统现代化

核心工作流

  1. 评估系统 — 分析代码库、依赖项、风险和业务约束。在继续之前,生成依赖关系图和风险登记表。

    • 验证检查点: 确认已记录所有外部集成和数据契约,然后再进入步骤 2。
  2. 规划迁移 — 设计渐进式路线图,并为每个阶段制定明确的回滚策略。参考 references/system-assessment.md 中的代码分析模板。

    • 验证检查点: 确认每个阶段都定义了回滚触发条件和负责人。
  3. 构建安全网 — 在修改生产代码之前,创建特征测试并设置监控。目标是覆盖现有行为的 80% 以上。

    • 验证检查点: 运行特征测试套件,并确认它在未修改的遗留系统上全部通过,然后再继续。
  4. 渐进式迁移 — 使用功能标志应用绞杀者模式。通过门面路由流量,并逐步转移负载。

    • 验证检查点: 每次增加流量后,确认错误率和延迟指标均保持在基线阈值内(例如,5% → 25% → 50% → 100%)。
  5. 验证并迭代 — 运行完整测试套件、检查监控仪表板,并在淘汰遗留代码之前确认业务行为得到保留。

    • 验证检查点: 新代码必须在 100% 流量下稳定运行至少一个发布周期,之后才能移除遗留路径。

参考指南

根据上下文加载详细指南:

主题参考资料加载时机
绞杀者模式references/strangler-fig-pattern.md渐进式替换、门面层、路由
重构references/refactoring-patterns.md提取服务、按抽象分支、适配器
迁移references/migration-strategies.md数据库、UI、API、框架迁移
测试references/legacy-testing.md特征测试、黄金主测试、审批
评估references/system-assessment.md代码分析、依赖映射、风险评估

代码示例

绞杀者门面(Python)
# facade.py — routes requests to legacy or new service based on a feature flag
import os
from legacy_service import LegacyOrderService
from new_service import NewOrderService

class OrderServiceFacade:
    def __init__(self):
        self._legacy = LegacyOrderService()
        self._new = NewOrderService()

    def get_order(self, order_id: str):
        if os.getenv("USE_NEW_ORDER_SERVICE", "false").lower() == "true":
            return self._new.fetch(order_id)
        return self._legacy.get(order_id)
功能标志包装器
# feature_flags.py — thin wrapper around an environment or config-based flag store
import os

def flag_enabled(flag_name: str, default: bool = False) -> bool:
    """Check whether a migration feature flag is active."""
    return os.getenv(flag_name, str(default)).lower() == "true"

# Usage
if flag_enabled("USE_NEW_PAYMENT_GATEWAY"):
    result = new_gateway.charge(order)
else:
    result = legacy_gateway.charge(order)
特征测试模板(pytest)
# test_characterization_orders.py
# Captures existing legacy behavior as a golden-master safety net.
import pytest
from legacy_service import LegacyOrderService

service = LegacyOrderService()

@pytest.mark.parametrize("order_id,expected_status", [
    ("ORD-001", "SHIPPED"),
    ("ORD-002", "PENDING"),
    ("ORD-003", "CANCELLED"),
])
def test_order_status_golden_master(order_id, expected_status):
    """Fail loudly if legacy behavior changes unexpectedly."""
    result = service.get(order_id)
    assert result["status"] == expected_status, (
        f"Characterization broken for {order_id}: "
        f"expected {expected_status}, got {result['status']}"
    )

约束

必须做到
  • 在所有迁移期间确保生产环境零中断
  • 在重构前创建全面的测试覆盖(目标为 80% 以上)
  • 所有渐进式发布都使用功能标志
  • 实施监控和回滚流程
  • 记录所有迁移决策及其理由
  • 保留现有业务逻辑和行为
  • 透明地沟通进展和风险
不得
  • 进行大爆炸式重写或替换
  • 在变更前跳过对遗留行为的测试
  • 在没有回滚能力的情况下部署
  • 破坏现有集成或 API
  • 忽视新代码中的技术债务
  • 在未充分验证的情况下仓促迁移
  • 在新代码得到验证之前移除遗留代码

输出模板

实施现代化时,请提供:

  1. 评估摘要(风险、依赖项、方案)
  2. 迁移计划(阶段、回滚策略、指标)
  3. 实现代码(门面、适配器、新服务)
  4. 测试覆盖(特征测试、集成测试、端到端测试)
  5. 监控设置(指标、警报、仪表板)

知识参考

绞杀者模式、按抽象分支、特征测试、渐进式迁移、功能标志、金丝雀部署、API 版本控制、数据库重构、微服务提取、技术债务削减、零停机部署

由 @jeffallan 维护,他是 Synergetic Solutions 的首席顾问

文档

评论

支持 Markdown