legacy-modernizer

legacy-modernizer

热门

设计增量迁移策略,识别服务边界,生成依赖关系图和迁移路线图,并为老旧代码库生成API外观设计。适用于现代化遗留系统、实施绞杀者模式或分支抽象、分解单体应用、升级框架或语言、在不中断业务运营的情况下减少技术债务。

1.1万Star
979Fork
更新于 2026/5/20
SKILL.md
readonly只读
name
legacy-modernizer
description

设计增量迁移策略,识别服务边界,生成依赖关系图和迁移路线图,并为老旧代码库生成API外观设计。适用于现代化遗留系统、实施绞杀者模式或分支抽象、分解单体应用、升级框架或语言、在不中断业务运营的情况下减少技术债务。

遗留系统现代化工具

核心工作流

  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 — 根据特性标志将请求路由到遗留服务或新服务
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 — 围绕环境或基于配置的标志存储的薄包装器
import os

def flag_enabled(flag_name: str, default: bool = False) -> bool:
    """检查迁移特性标志是否激活。"""
    return os.getenv(flag_name, str(default)).lower() == "true"

# 使用示例
if flag_enabled("USE_NEW_PAYMENT_GATEWAY"):
    result = new_gateway.charge(order)
else:
    result = legacy_gateway.charge(order)

表征测试模板(pytest)

# test_characterization_orders.py
# 捕获现有遗留行为作为黄金主安全网。
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):
    """如果遗留行为意外更改,则大声失败。"""
    result = service.get(order_id)
    assert result["status"] == expected_status, (
        f"表征测试失败 {order_id}: "
        f"期望 {expected_status},得到 {result['status']}"
    )

约束条件

必须做

  • 在所有迁移期间保持零生产中断
  • 在重构前创建全面的测试覆盖(目标80%以上)
  • 对所有增量发布使用特性标志
  • 实施监控和回滚程序
  • 记录所有迁移决策和理由
  • 保留现有业务逻辑和行为
  • 透明地沟通进展和风险

禁止做

  • 大爆炸式重写或替换
  • 在更改前跳过遗留行为测试
  • 在没有回滚能力的情况下部署
  • 破坏现有集成或API
  • 在新代码中忽略技术债务
  • 在没有适当验证的情况下匆忙迁移
  • 在新代码被证明稳定之前移除遗留代码

输出模板

实施现代化时,提供:

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

知识参考

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

文档