关于 legacy-modernizer
legacy-modernizer 面向需要在保留现有行为的同时演进旧系统的团队,指导通过系统评估、特征测试、功能标志、监控和回滚来分阶段迁移。
主要功能
- 01依赖与风险评估
- 02分阶段迁移和回滚规划
- 03旧系统行为特征测试
- 04基于功能标志的渐进发布
- 05监控与迁移验证
适用场景
- 01规划旧系统迁移
- 02逐步替换服务
- 03重构时保护现有行为
- 04跟踪发布风险与稳定性
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ farmage/ opencode-skills --skill legacy-modernizer安装后在 Claude Code 中输入/legacy-modernizer确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/legacy-testing.mdmigration-strategies.mdrefactoring-patterns.mdstrangler-fig-pattern.mdsystem-assessment.md详细介绍
遗留系统现代化
核心工作流
-
评估系统 — 分析代码库、依赖项、风险和业务约束。在继续之前,生成依赖关系图和风险清单。
- 验证检查点: 在进入第 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 — 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
- 忽视新代码中的技术债务
- 在验证不充分的情况下仓促迁移
- 在新代码经过验证之前移除遗留代码
输出模板
实施现代化改造时,请提供:
- 评估摘要(风险、依赖项、方案)
- 迁移计划(阶段、回滚策略、指标)
- 实现代码(门面、适配器、新服务)
- 测试覆盖(特征测试、集成测试、端到端测试)
- 监控配置(指标、警报、仪表板)
知识参考
绞杀者无花果模式、按抽象分支、特征测试、渐进式迁移、功能标志、金丝雀部署、API 版本控制、数据库重构、微服务提取、技术债务削减、零停机部署
评论
支持 Markdown