概述
我们接手那些仍在赚钱、却已无法安全修改的应用。我们不会从推倒重写开始——那是最后的选项,不是第一个。我们先给系统补上测试,并让它能在任何机器上可复现地启动。
旧系统现代化
在现代技术基础上进行完全重写或战略性重构。
RectorPHPStanStrangler FigDocker
应用场景
停留在不受支持的 PHP 版本
仍在使用已不再提供安全补丁的版本的应用。
没有开发环境的应用
只在一台服务器上运行、谁都不敢动的系统。
团队离开后的接手
没有文档,原作者也已不在。
核心优势
业务不停摆
我们逐块推进,新旧并行运行。不存在某一天全部切换的情况。
数周内交付可见成果
我们从最痛的地方开始,而不是从没人看得见的重构开始。
风险靠测量,而不是靠估计
初期评估会说明哪些有测试覆盖、哪些没有,以及哪些依赖已停止维护。
我们的工作方式
- 01
需求梳理
在提出任何方案之前,先厘清现有系统、约束条件和业务目标。
01需求梳理
在提出任何方案之前,先厘清现有系统、约束条件和业务目标。
- 02
架构设计
设计系统结构、数据模型与集成点。决策形成文档,而非临场发挥。
- 03
开发实施
以短迭代交付,代码经过评审,预发布环境随时可查看。
03开发实施
以短迭代交付,代码经过评审,预发布环境随时可查看。
- 04
测试与质量
每次发布前完成自动化测试以及性能与安全检查。
- 05
上线与支持
带回滚方案上线,之后持续监控与迭代。
05上线与支持
带回滚方案上线,之后持续监控与迭代。
技术栈
6 toolsRector
PHPStan
Strangler Fig
Docker
CI/CD
PHPUnit