阿里巴巴DevOps实践指南(十四)| 测试环境与路由

简介: 在阿里巴巴内部,随着业务规模和技术栈的拓展和更新,业务侧对测试环境的使用也逐步打破原固有模式,快速向多场景、多样化、多职能方向发展,如何能够跟上业务发展速度,及时满足业务侧对测试环境新场景的诉求,基于环境和路由模型的测试环境解决方案是解决问题的关键。

image.png

编者按:本文源自阿里云云效团队出品的《阿里巴巴DevOps实践指南》,扫描上方二维码或前往:https://developer.aliyun.com/topic/devops,下载完整版电子书,了解阿里十年DevOps实践经验。

阿里巴巴内部的测试环境治理方案数年来不断演进,其中也经历过不少试错的过程。早期测试环境治理的迭代过程是比较漫长的,究其原因,是因为测试环境解决方案的更新换代牵扯面比较广。这里面不仅仅涉及全链路微服务的整体策略调整,而且涉及影响路由隔离能力的多种中间件协议(HTTP、RPC、消息等)的整体变更,一次测试环境解决方案的整体规模化更新落地时间需要以年计。

同时随着新技术发展给测试环境拉起带来便利性的红利,业务侧针对测试环境的使用也逐步向多职能、多样性的解决方案快速演化。

为跟上业务测试环境解决方案演进步伐,加快测试环境治理迭代速度同时减少试错成本,有必要进行测试环境流量路由领域抽象,以适配和满足各种使用场景的诉求。

解决方案

需要针对环境使用场景以及路由进行分层抽象,增加路由协议层定义,协议支持路由编排,并与业务场景解耦。数据层面与控制层面面向统一路由协议进行扩展和实现,数据层面提供路由能力的扩展(如 HTTP、RPC、消息、DB 等),控制层面提供环境和路由产品化工具,在用户侧提供面向配管的环境解决方案编排能力,以及提供面向开发者的环境使用能力。

image.png

路由与测试环境

概念

  • 隔离域:提供相同层面服务的集合,服务间调用优先选择在隔离域内进行,隔离域间默认路由隔离,可以从路由层面定义隔离域间的 fallback 降级调用策略。
  • 隔离单元(环境):隔离域内最小辨识单位,为隔离域内的某一应用的资源集合,通常 DevOps 平台面向开发者会使用某应用下环境来承载隔离单元。

路由如何领域建模

流量路由能力是测试场景可以并行的基础,能够为开发、测试等多角色开辟一块私有隔离域,自有服务调试流量在私有隔离域内部调用,隔离域之间流量隔离互不干扰。

接下来我们透过具体的业务使用场景,来看下什么是路由模型。

image.png

路由模型由隔离域、降级策略及降级条件三部分组成:

  • 隔离域定义了隔离域内的隔离单元组成
  • 隔离域降级策略定义了隔离域间的 fallback 机制
  • 降级条件包括多种场景,如有隔离单元无实例、有实例无服务以及无隔离单元等

通过上述三者的组合,即可编排表述出面向具体业务场景的路由定义。

环境如何领域建模

环境分类

分析阿里巴巴以往的测试环境使用场景,环境可以归纳为两大类:静态环境和动态环境。

静态环境

静态环境类型有固定的隔离域,隔离域一经定义不再改变隔离域属性,通常只存在隔离单元的加入和删除,这种隔离域一般规模比较大,提供兜底的服务支撑,对稳定性有比较高的要求,需要开发者维护环境的稳定性,比如基础环境(微服务场景下提供支撑开发联调的兜底服务的环境)等。

静态环境的核心指标为稳定性 SLA,可以通过全链路的持续测试流量、监控、工单及故障机制来保障,其中静态环境的故障对比生产环境影响因子如下:

生产环境故障影响因子 静态环境故障影响因子
用户舆情、资损、下跌比例等 应用重要度(被依赖)、研发舆情、上游研发的活跃度、影响的联调流量等

动态环境

动态环境归属隔离域不稳定,经常会按照联调对象的不同发生聚合或者分裂,这种隔离域一般规模比较小,通常用作临时开发调试及测试使用,秉承“按需申请、用完即弃”的原则。

动态环境的核心指标为一键拉起能力、拉起的成功率和拉起的速度。

如何实现端的一键接入

测试环境拉起多版本、多隔离域的同时,也给开发者的调用接入带来不小的代价,因此必须要让开发者能够从开发机或者端(PC 浏览器、APP 端)一键接入隔离域。

开发机接入测试

开发机通过对云上资源的替换标记,实现一键替换云端资源,将调用流量路由到本地,满足开发者本地联调的需求,联调完毕可以一键将开发机移出,联调流量重新回到云端资源。

image.png

端接入测试

测试环境多隔离域场景下,实现端(浏览器、移动端)无配置化一键接入隔离域,摆脱大量如域名本地绑定 hosts 等配置化工作,提升研发效率。

移动端可以通过扫描目标隔离域二维码的方式标记路由,实现一键接入对应隔离域。PC 端浏览器可以通过打开对应隔离域网页地址的方式标记路由,实现一键接入对应隔离域。

image.png

总结

在阿里巴巴内部,随着业务规模和技术栈的拓展和更新,业务侧对测试环境的使用也逐步打破原固有模式,快速向多场景、多样化、多职能方向发展,如何能够跟上业务发展速度,及时满足业务侧对测试环境新场景的诉求,基于环境和路由模型的测试环境解决方案是解决问题的关键。

免费下载《阿里巴巴DevOps实践指南》

阿里巴巴合伙人和业界多位大佬力荐、何勉、陈鑫等17位阿里资深技术专家联袂出品、阿里十年DevOps经验沉淀总结、阿里巴巴DevOps落地实践一本通。

前往:https://developer.aliyun.com/topic/devops,下载完整版电子书。

image.png

相关文章
|
4月前
|
弹性计算 测试技术 持续交付
阿里云云效产品使用合集之如何进行自动化测试
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
1月前
|
JSON 测试技术 持续交付
自动化测试与脚本编写:Python实践指南
自动化测试与脚本编写:Python实践指南
41 1
|
2月前
|
设计模式 敏捷开发 Java
软件测试中的自动化测试实践指南
本文旨在探讨软件测试领域中的自动化测试。通过详细的案例分析和步骤讲解,帮助读者掌握自动化测试的实施方法与最佳实践。
60 10
|
2月前
|
监控 数据可视化 测试技术
软件测试中的自动化测试实践指南
【10月更文挑战第7天】 在软件开发的生命周期中,测试是确保产品质量的重要环节。随着技术的进步和应用的复杂性增加,自动化测试逐渐成为提升测试效率和覆盖范围的关键手段。本文将深入探讨自动化测试的基本概念、实施步骤及其在不同应用场景中的最佳实践。通过对自动化测试框架的选择、脚本开发、执行及维护的详细解析,帮助读者更好地理解和应用自动化测试技术,从而优化测试流程,提高软件质量。
56 2
|
7月前
|
Ubuntu 安全 Docker
【DevOps】Docker 最佳实践指南(绝对干货)
祝您的 Docker 之旅一切顺利!
224 4
|
2月前
|
中间件 测试技术 持续交付
软件测试中的自动化测试实践指南
【10月更文挑战第4天】 本文探讨了软件测试中自动化测试的重要性,并详细介绍了如何有效实施自动化测试。从选择合适的工具到设计测试用例,再到实际执行与持续集成,我们将一步步引导读者了解自动化测试的全过程。通过具体案例分析,我们展示了自动化测试在提高测试效率、保障软件质量方面的显著优势。无论是初学者还是资深测试工程师,都能从中获得实用的指导和启示。
117 1
|
2月前
|
设计模式 敏捷开发 jenkins
软件测试中的自动化测试实践指南
本文旨在探讨软件测试中自动化测试的实施方法及其重要性,通过具体案例分析自动化测试的步骤、工具选择及最佳实践。我们将从自动化测试的基本概念入手,逐步解析其在实际项目中的应用,并提供一些常见问题的解决方案。
97 4
|
3月前
|
Devops jenkins 测试技术
DevOps实践:持续集成与自动化测试的融合之道
【9月更文挑战第29天】在软件开发的快节奏竞赛中,DevOps如同一位智慧的舵手,引领着船只驶向效率与质量的彼岸。本文将揭开DevOps的神秘面纱,探索其核心理念如何通过持续集成(CI)和自动化测试的实践,实现软件开发流程的优化与加速。我们将一同见证代码从构思到部署的旅程,以及这一过程中的关键技术和工具如何协同工作,确保软件质量和交付速度的双重提升。
|
3月前
|
敏捷开发 Java jenkins
软件测试中的自动化测试实践指南
本篇文章深入探讨了软件测试中自动化测试的重要性、实施步骤以及面临的挑战。我们将从为什么需要自动化测试开始,逐步解析其基本概念、工具选择、脚本开发、执行与维护等关键环节。同时,还将分享一些成功案例和最佳实践,帮助读者更好地理解和应用自动化测试技术。无论您是软件测试新手还是经验丰富的测试工程师,相信本文都能为您提供有价值的参考和启示。
215 7
|
4月前
|
运维 Java Devops
阿里云云效操作报错合集之在流水线增加单元测试报错,是什么导致的
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。