主动的“Strangler Fig”策略的崛起
I’m happy to translate the article for you, but I’ll need the text you’d like translated. Could you please paste the content (or the portion you want translated) here? I’ll keep the source link at the top and preserve all formatting as requested.
Overview
停止尝试从头重写你那 15 年历史的单体系统。那行不通。相反,使用 Model Context Protocol (MCP) 将你的遗留系统包装在 AI 代理中——这是一种“Strangler Fig”模式的强化版。🚀
“Big Bang” 重写是一种安慰性的神话。你盯着分布式单体,想象暂停功能开发 18 个月,全部改写成 Rust/Go/Next.js,并期待完美。剧透:这根本不可能实现。
问题:代码‑到‑上下文的鸿沟
您的遗留系统承载了数十年的隐式业务知识——边缘案例、合规性技巧以及奇特的 bug 修复,这些仅存在于代码中,而不在 Jira 或 Confluence 中。重新从头编写会丢失这些上下文。
代理式绞杀树策略
经典的 Martin Fowler Strangler Fig(绞杀树)模式会包裹旧系统,拦截调用,并逐步将其路由到新的微服务。它安全,但传统上较慢,因为构建外观层、映射依赖关系以及编写胶水代码都是手工且令人沮丧的工作。
新视角: 部署配备 MCP 工具的 AI 代理,创建一个动态、智能的绞杀树,以 AI 速度运行。
1. 通用适配器 (MCP) 🔌
MCP 解决了 N × M 连接问题。你不必为每个遗留数据库和服务构建定制的 API 包装器,而是创建一个单一的 MCP 服务器。与无状态的 REST API 不同,MCP 接口 保持上下文,使得 AI 代理能够在整个会话中理解“User X”,并且能够在同一次交互中查询 1980 年代的主机系统和 2024 年的云 SQL 数据库。
2. 代理即动态外观层 🎭
一个启用了 MCP 的代理会收到高级意图,例如:
“为 User X 处理退款。”
代理会:
- 检查其可用工具。
- 看到
legacy_inventory_update(单体)和refund_service_v2(新微服务)。 - 动态地将它们串联起来。
无需手动配置路由。明天部署一个新微服务,代理会自动发现并开始使用它。
实现步骤
第 1 步:面向意图的设计(反模式警报! 🚨)
不要将传统 API 1:1 映射到 MCP 工具。传统 API 充斥着冗余参数和奇怪的认证流程,会让 LLM 感到困惑。
错误 – 1:1 映射
{
"name": "get_customer_data",
"description": "Calls GET /api/v1/cust",
"parameters": {
"id": "string",
"include_orders": "boolean",
"sort": "string",
"legacy_flag_23": "boolean"
}
}
正确 – 基于意图
@mcp.tool()
def get_customer_dashboard(email: str) -> str:
"""
Retrieves a holistic view of the customer, aggregating
data from the legacy CRM and the new Order Service.
"""
# The complexity is hidden here!
legacy_data = legacy_crm.lookup(email)
new_data = order_service.get_latest(email)
return format_dashboard(legacy_data, new_data)
将复杂性封装在 MCP 服务器内部,向代理暴露高层次的“业务意图”工具。
第 2 步:通过代理实现端口隔离 🛡️
代理位于代理人与基础设施之间,负责动态端口分配。代理人通过干净且一致的 stdio 接口进行交互。
第 3 步:“影子写入”模式 👻
-
代理收到 “创建订单” 请求。
-
写入新微服务数据库。
-
同时,通过 MCP 包装器写入传统单体系统。
-
比较结果:
- 匹配: ✅ 继续。
- 不匹配: ❌ 将差异记录下来,供工程师排查。
此方式在不危及数据完整性的前提下,使用真实生产流量验证新系统。
实际案例
- 保险: 像 Sure 这样的公司报告称报价到绑定的时间提升了 95 %。他们的代理不仅仅是聊天;他们使用 MCP 工具在传统后端自主提交理赔。
- 供应链: Boomi 统一了碎片化的 WMS 和 ERP 系统。代理充当粘合剂,检查分散系统中的库存并触发补货工作流,而单个传统应用无法单独处理这些工作流。
好处
- Decouple Technical Debt from Business Value: 传统迁移需要先偿还债务才能交付价值。MCP 代理让您先交付价值——包装单体,扼杀遗留系统,立即发布现代功能。
- Automatic Discovery: 新的微服务可以立即被现有代理使用。
- Reduced Rewrite Risk: 在逐步现代化的同时,保留数十年的隐藏业务逻辑。
进一步阅读
- 将遗留服务迁移到现代开发者门户:Backstage 集成技术指南
- 为什么 MCP 不应一对一包装 API
- 使用 Aspire 扩展 AI 代理:并行开发缺失的隔离层
- 行动协议
有单体恐怖故事吗?在评论区留下吧。让我们一起感同身受。 👇