在阿里,我们如何管理测试环境( 十 )

具体来说 , 在阿里的交付流程上 , 包含两种特殊类型的测试环境:“公共基础环境”和“特性环境” , 它们形成了具有阿里特色的测试环境使用方法 。 公共基础环境是一个全套的服务运行环境 , 它通常运行一个相对稳定的服务版本 , 也有些团队将始终部署各服务的最新版本的低级别环境(称为“日常环境”)作为公共基础环境 。

特性环境是这套方法中最有意思的地方 , 它是虚拟的环境 。 从表面上看 , 每个特性环境都是一套独立完整的测试环境 , 由一系列服务组成集群 , 而实际上 , 除了个别当前使用者想要测试的服务 , 其余服务都是通过路由系统和消息中间件虚拟出来的 , 指向公共基础环境的相应服务 。 由于在阿里通常的开发流程中 , 开发任务需要经过特性分支、发布分支和诸多相关环节最后发布上线 , 大多数环境都从发布分支部署 , 唯独这种开发者自用的虚拟环境部署来自代码特性分支的版本 , 故可称为“特性环境”(阿里内部叫“项目环境”) 。

举个具体例子 , 某交易系统的完整部署需要由鉴权服务、交易服务、订单服务、结算服务等十几种小系统以及相应的数据库、缓存池、消息中间件等组成 , 那么它的公共基础环境就是这样一套具备所有服务和周边组件的完整环境 。 假设此时有两套特性环境在运行 , 一套只启动了交易服务 , 另一套启动了交易服务、订单服务和结算服务 。 对于第一套特性环境的使用者而言 , 虽然除交易服务外的所有服务实际上都由公共基础环境代理 , 但在使用时就像是自己独占一整套完整环境:可以随意部署和更新环境中交易服务的版本 , 并对它进行调试 , 不用担心会影响其他用户 。 对于第二套特性环境的使用者 , 则可以对部署在该环境中的三个服务进行联调和验证 , 倘若在场景中使用到了鉴权服务 , 则由公共基础环境的鉴权服务来响应 。

推荐阅读