关于 legacy-modernizer
Legacy Modernizer 是用于规划并推进遗留系统渐进式现代化的技能。它强调记录依赖与风险、先建立特征测试,再通过功能标志逐步迁移,并在移除旧代码前进行监控和回滚验证。
主要功能
- 01梳理依赖关系与风险
- 02制定分阶段迁移及回滚方案
- 03改动前建立特征测试
- 04通过功能标志逐步发布
- 05用测试和监控验证行为
适用场景
- 01渐进式替换遗留服务
- 02规划数据库或 API 迁移
- 03重构期间保持现有行为
- 04制定回滚与监控计划
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ jeffallan/ claude-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 版本控制、数据库重构、微服务提取、技术债务削减、零停机部署
由 @jeffallan 维护,他是 Synergetic Solutions 的首席顾问
评论
支持 Markdown