编者按:本文源自阿里云云效团队出品的《阿里巴巴DevOps实践指南》,扫描上方二维码或前往:https://developer.aliyun.com/topic/devops,下载完整版电子书,了解阿里十年DevOps实践经验。
阿里巴巴内部的测试环境治理方案数年来不断演进,其中也经历过不少试错的过程。早期测试环境治理的迭代过程是比较漫长的,究其原因,是因为测试环境解决方案的更新换代牵扯面比较广。这里面不仅仅涉及全链路微服务的整体策略调整,而且涉及影响路由隔离能力的多种中间件协议(HTTP、RPC、消息等)的整体变更,一次测试环境解决方案的整体规模化更新落地时间需要以年计。
同时随着新技术发展给测试环境拉起带来便利性的红利,业务侧针对测试环境的使用也逐步向多职能、多样性的解决方案快速演化。
为跟上业务测试环境解决方案演进步伐,加快测试环境治理迭代速度同时减少试错成本,有必要进行测试环境流量路由领域抽象,以适配和满足各种使用场景的诉求。
解决方案
需要针对环境使用场景以及路由进行分层抽象,增加路由协议层定义,协议支持路由编排,并与业务场景解耦。数据层面与控制层面面向统一路由协议进行扩展和实现,数据层面提供路由能力的扩展(如 HTTP、RPC、消息、DB 等),控制层面提供环境和路由产品化工具,在用户侧提供面向配管的环境解决方案编排能力,以及提供面向开发者的环境使用能力。
路由与测试环境
概念
- 隔离域:提供相同层面服务的集合,服务间调用优先选择在隔离域内进行,隔离域间默认路由隔离,可以从路由层面定义隔离域间的 fallback 降级调用策略。
- 隔离单元(环境):隔离域内最小辨识单位,为隔离域内的某一应用的资源集合,通常 DevOps 平台面向开发者会使用某应用下环境来承载隔离单元。
路由如何领域建模
流量路由能力是测试场景可以并行的基础,能够为开发、测试等多角色开辟一块私有隔离域,自有服务调试流量在私有隔离域内部调用,隔离域之间流量隔离互不干扰。
接下来我们透过具体的业务使用场景,来看下什么是路由模型。
路由模型由隔离域、降级策略及降级条件三部分组成:
- 隔离域定义了隔离域内的隔离单元组成
- 隔离域降级策略定义了隔离域间的 fallback 机制
- 降级条件包括多种场景,如有隔离单元无实例、有实例无服务以及无隔离单元等
通过上述三者的组合,即可编排表述出面向具体业务场景的路由定义。
环境如何领域建模
环境分类
分析阿里巴巴以往的测试环境使用场景,环境可以归纳为两大类:静态环境和动态环境。
静态环境
静态环境类型有固定的隔离域,隔离域一经定义不再改变隔离域属性,通常只存在隔离单元的加入和删除,这种隔离域一般规模比较大,提供兜底的服务支撑,对稳定性有比较高的要求,需要开发者维护环境的稳定性,比如基础环境(微服务场景下提供支撑开发联调的兜底服务的环境)等。
静态环境的核心指标为稳定性 SLA,可以通过全链路的持续测试流量、监控、工单及故障机制来保障,其中静态环境的故障对比生产环境影响因子如下:
生产环境故障影响因子 | 静态环境故障影响因子 |
---|---|
用户舆情、资损、下跌比例等 | 应用重要度(被依赖)、研发舆情、上游研发的活跃度、影响的联调流量等 |
动态环境
动态环境归属隔离域不稳定,经常会按照联调对象的不同发生聚合或者分裂,这种隔离域一般规模比较小,通常用作临时开发调试及测试使用,秉承“按需申请、用完即弃”的原则。
动态环境的核心指标为一键拉起能力、拉起的成功率和拉起的速度。
如何实现端的一键接入
测试环境拉起多版本、多隔离域的同时,也给开发者的调用接入带来不小的代价,因此必须要让开发者能够从开发机或者端(PC 浏览器、APP 端)一键接入隔离域。
开发机接入测试
开发机通过对云上资源的替换标记,实现一键替换云端资源,将调用流量路由到本地,满足开发者本地联调的需求,联调完毕可以一键将开发机移出,联调流量重新回到云端资源。
端接入测试
测试环境多隔离域场景下,实现端(浏览器、移动端)无配置化一键接入隔离域,摆脱大量如域名本地绑定 hosts 等配置化工作,提升研发效率。
移动端可以通过扫描目标隔离域二维码的方式标记路由,实现一键接入对应隔离域。PC 端浏览器可以通过打开对应隔离域网页地址的方式标记路由,实现一键接入对应隔离域。
总结
在阿里巴巴内部,随着业务规模和技术栈的拓展和更新,业务侧对测试环境的使用也逐步打破原固有模式,快速向多场景、多样化、多职能方向发展,如何能够跟上业务发展速度,及时满足业务侧对测试环境新场景的诉求,基于环境和路由模型的测试环境解决方案是解决问题的关键。
免费下载《阿里巴巴DevOps实践指南》
阿里巴巴合伙人和业界多位大佬力荐、何勉、陈鑫等17位阿里资深技术专家联袂出品、阿里十年DevOps经验沉淀总结、阿里巴巴DevOps落地实践一本通。
前往:https://developer.aliyun.com/topic/devops,下载完整版电子书。