mcpField
L
legacy-modernizer

legacy-modernizer

github.com/farmage开发224289 次安装5 周前更新
代码仓库

关于 legacy-modernizer

legacy-modernizer 面向需要在保留现有行为的同时演进旧系统的团队,指导通过系统评估、特征测试、功能标志、监控和回滚来分阶段迁移。

主要功能

  1. 01依赖与风险评估
  2. 02分阶段迁移和回滚规划
  3. 03旧系统行为特征测试
  4. 04基于功能标志的渐进发布
  5. 05监控与迁移验证

适用场景

  1. 01规划旧系统迁移
  2. 02逐步替换服务
  3. 03重构时保护现有行为
  4. 04跟踪发布风险与稳定性

安装

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

$npx skills add https://github.com/farmage/opencode-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 版本控制、数据库重构、微服务提取、技术债务削减、零停机部署

文档

评论

支持 Markdown