SKILL.md
readonly只读
name
legacy-modernizer
description
设计增量迁移策略,识别服务边界,生成依赖关系图和迁移路线图,并为老旧代码库生成API外观设计。适用于现代化遗留系统、实施绞杀者模式或分支抽象、分解单体应用、升级框架或语言、在不中断业务运营的情况下减少技术债务。
遗留系统现代化工具
核心工作流
-
评估系统 — 分析代码库、依赖关系、风险和业务约束。在继续之前生成依赖关系图和风险登记表。
- 验证检查点: 在进入步骤2之前,确认所有外部集成和数据契约都已记录。
-
规划迁移 — 设计增量路线图,每个阶段都有明确的回滚策略。参考
references/system-assessment.md获取代码分析模板。- 验证检查点: 确认每个阶段都有定义的回滚触发器和负责人。
-
构建安全网 — 在接触生产代码之前创建表征测试和监控。目标覆盖现有行为的80%以上。
- 验证检查点: 运行表征测试套件,确认在未修改的遗留系统上通过,然后再继续。
-
增量迁移 — 应用绞杀者模式,使用特性标志。通过外观层路由流量;逐步转移负载。
- 验证检查点: 每次流量增量后(例如5% → 25% → 50% → 100%),验证错误率和延迟指标保持在基线阈值内。
-
验证与迭代 — 运行完整测试套件,审查监控仪表板,确认业务行为保持不变,然后淘汰遗留代码。
- 验证检查点: 新代码必须在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
- 在新代码中忽略技术债务
- 在没有适当验证的情况下匆忙迁移
- 在新代码被证明稳定之前移除遗留代码
输出模板
实施现代化时,提供:
- 评估摘要(风险、依赖关系、方法)
- 迁移计划(阶段、回滚策略、指标)
- 实现代码(外观、适配器、新服务)
- 测试覆盖(表征、集成、端到端)
- 监控设置(指标、告警、仪表板)
知识参考
绞杀者模式、分支抽象、表征测试、增量迁移、特性标志、金丝雀部署、API版本控制、数据库重构、微服务提取、技术债务减少、零停机部署






