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