1.背景
CBC(Cloud Business Center) 云运营平台,负责华为云的交易平台和运营平台能力。在CBC,我们存在一些“超级微服务”,划分的定义为:拥有100+的接口(API),10W+行的代码的微服务。服务中,有些接口和信息是变化相对比较频繁的有些是十分稳定的,都在同一个服务管理变更节奏不一致;领域模型划分不清晰,存在散弹式修改,修改一个问题,引入新问题等情况;CBC版本火车模式(集成发布部署)所有微服务按照特定节奏交付(1个月2个版本),一起联调一起上线,部分需求TTM被拉长。
2.综述
为提升效率和质量,我们通过领域驱动设计、代码解耦、工程能力提升等多个维度针对Devops全流程进行改造优化,最终服务可自定节奏独立发布部署上线。解决服务可维护性、可扩展性、提升交付效率,降低服务学习、维护、测试成本。
3.工程能力实践之服务解耦及代码重构
按照业务边界进行大尺度的上下文划分,识别多变的和稳定的模块;梳理上下文之间的依赖关系,建立领域模型,为代码架构做输入;引入DDD整洁架构思想,分为入口/出口,业务编排层,领域层;“旧的不变,新的创建;一步切换,旧的再见”的重构手法;引入架构测试,保证架构的稳定;新代码不会冲破已有架构;提升白盒测试的覆盖率,降低白盒测试的编写难度。
4.工程能力实践之静态检查
开发微服务级别的DFX测试能力和流水线插件
5.工程能力实践之单服务调测onebox
全部测试环境借助onebox容器化快速部署和重构,整个测试部署可以在10min内完成,实现每日和每个MR都能构建
6.工程能力实践之基于分支代码的测试用例集
与UADP合作,使得接口不同开发分支的接口设计可独立进行;实现对于接口变更的规范性和兼容性的校验;与CloudTest合作,落地多个变更一起发布并测试的能力;开发接口测试评估服务,作为Fuxi流水线插件挂载到R流水线中。
7.工程能力实践之微服务蓝绿部署及引流
服务当前支持高低版本并存,同时承载流量;CBC实现基于用户名单和用户比例的引流验证能力
8.效果
1)精简接口、明晰架构:引入DDD整洁架构思想,输出领域模型,将330+接口减少到170个以下;建立四层代码架构,重构时以架构测试作为约束,构建新架构的测试防护网;同时在过程中保证安全重构。
2)提升合并效率:将伙伴云对于试点服务的合入效率由原2人天提升到1小时内,原子能力复用率90%。
3)需求TTM降低:一线需求TTM由之前的7-8周减少为1周,大幅提升了需求从接纳到上线的时间。