每个系统都有自己的旧账。这里写当时卡在哪、怎么判断、后来凭什么说判断是对的。数字只是结果,怎么得出这个数字,才是你能带走的东西。
从零搭一套,和在跑系统上重写
架子从空白起,和在跑的系统上换骨架,两件事难的地方不一样:前者难在几十个人同时往里写,后者难在每一次改动都不能让用它的人察觉。
新系统从 0 到 1 二十多个服务仓、三个团队一起写:约定做成骨架,不靠事后评审
当时新系统真正难的不是选哪个注册中心,是几十个人同时往里写:三个月后同一件事会有五种写法,而写在文档上的约定活不过第三个月。
怎么做服务按两个问题分层:要不要独立看几个域要用、进哪一层看有没有业务规则。六个平台服务不带一条规则,财务这种整仓都是规则的留在业务域;每个仓固定六层、新服务从骨架复制;降级统一返回一个能被认出来的失败;全局事务只放在开单、结算这类跨服务写入口;网关路由放进配置中心,接一个新服务不占发版窗口。
- 20+
- 服务仓
- 3
- 个团队
- 80
- 人协作
这段的完整复盘 在跑系统的重写 六周、484 次提交:只借鉴功能,客户那边一个字都不用改
当时一套跑了几年的系统还在赚钱,但业务规则已经和最初那批人的写法长在一起了。整体替换的风险和双轨维护的成本,同时摆在一张桌子上。
怎么做功能照做、代码全重写:平台层沉进一个约 26 万行、带 3438 个测试方法与覆盖率门禁的底座,业务侧只写业务;对外的 URL、字段名、错误码原样保留,前端和第三方系统零改动;端点数 178 对 178,模块之间没有一处越界引用;每一阶段都留一个能核对的数字。
- 484
- 次提交
- 27
- 个模块
- 178
- 端点对齐
这段的完整复盘 老系统改造的六个环节
一个项目从立项走到验收,这六步各有各的卡点,每一步都给一条能对着自己系统核对的标准。