Skip to content

迁移现有项目到 SOLO 模式

1. 概述

将一个正在运行的成熟项目迁移到新的开发模式是一项复杂的任务,需要周密的计划和分阶段的执行。本指南旨在为希望采用 SOLO 工作模式的现有项目提供一个高阶的迁移策略和路线图。

迁移的核心目标是:在不中断现有业务的前提下,逐步引入 API-First 和 TDD 的实践,最终使项目完全融入 SOLO 的四阶段工作流。

2. 迁移策略

我们推荐采用增量式、渐进式的迁移策略,而不是“一刀切”的革命式重构。

  • 从新功能开始: 所有新的功能和 API 都严格按照 SOLO 模式进行开发。
  • 逐步改造旧模块: 对于现有的模块,选择业务核心、变动频繁或问题较多的部分,在进行功能迭代或重构时,将其迁移到 SOLO 模式。
  • 以 API 为切入点: 迁移的起点是为现有 API 补充或创建 OpenAPI 规范。

3. 迁移步骤

第 1 步:逆向工程:创建 OpenAPI 契约

对于一个没有 OpenAPI 规范的现有项目,首要任务是为已有的 API “补票”,创建 openapi.yaml 文件。

  • 工具辅助: 使用 Swagger Inspector, Postman 等工具,通过实际调用现有 API 来自动生成初步的 OpenAPI 规范。
  • 手动完善: 结合代码和现有文档,手动完善自动生成的规范,补充缺失的描述、约束和示例。
  • 评审和确认: 将这份逆向工程得来的规范作为基线,进行团队评审,并将其纳入版本控制。

第 2 步:引入契约测试

一旦有了 OpenAPI 契约,就可以立即引入契约测试。

  • 配置 CI: 在 CI/CD 流程中加入契约测试步骤(使用 Dredd, Schemathesis 等工具)。
  • 建立基线: 运行契约测试,可能会发现大量现有实现与新创建的契约不符的地方。
  • 逐步修复: 将这些不一致的地方记录下来,作为技术债,在后续的迭代中逐步修复。这个过程本身就在提升 API 的质量和一致性。

第 3 步:为新功能应用完整的 SOLO 流程

这是最关键的一步。对于任何新的业务需求

  1. PRODUCT: 编写清晰的需求文档。
  2. ARCHITECT: 在现有的 openapi.yaml 文件中设计新的 API 端点,而不是先写代码。
  3. ENGINEER:
    • 使用 OpenAPI Generator 为新端点生成接口和 DTO。
    • 严格按照 TDD 流程 来实现新的业务逻辑。
  4. QA:
    • 编写功能测试。
    • 确保新的端点通过契约测试。

通过这种方式,新代码将 100% 符合 SOLO 模式,而旧代码则保持原样。

第 4 步:重构现有模块

在对旧模块进行维护或功能增强时,是进行迁移的最佳时机。

  • 选择目标: 选择一个要重构的模块或一组相关的 API。
  • 补充单元/集成测试: 在重构之前,为现有代码尽可能多地补充测试,以确保重构不会破坏现有功能。这是迁移过程中最耗时但也是最有价值的一步。
  • 重构实现: 在测试的保护下,按照 TDD 的方式重构代码,使其实现与 openapi.yaml 契约保持一致。
  • 清理技术债: 修复在第 2 步中发现的契约不一致问题。

4. 潜在挑战与建议

  • 时间投入: 补充测试和 OpenAPI 规范需要大量的前期时间投入。需要获得管理层的支持,并将其视为提升项目长期健康度的投资。
  • 团队培训: 团队成员需要时间来学习和适应 TDD 和 API-First 的思维方式。建议组织内部培训和代码审查(Code Review)来统一实践。
  • 工具链集成: 将新的测试和验证工具集成到现有的 CI/CD 流程中可能会遇到技术挑战。建议从小处着手,先在一个项目中试点。

通过以上步骤,一个庞大的遗留系统可以像“给飞行中的飞机换引擎”一样,平滑、安全地迁移到现代化的 SOLO 开发模式。

SOLO Development Guide