一站式交付体验:云效+Kubernetes

背景

云效依托于阿里巴巴研发效能多年规模化持续交付,赋能云上开发者专为云端用户提供的一站式研发协作平台。Kubernetes,由Google开源的容器集群管理平台,面向运维侧提供自动化的集群和应用管理解决方案。

核心能力

通过结合云效与Kubernetes可以有效打通从研发协作,持续交付以及自动化运维的整个软件交付生命周期。

  • 研发管理:通过看板持续管理和跟踪团队需求,缺陷。并通过持续度量发现研发中的瓶颈并作出改进。

  • 持续交付:通过流水线管理代码的持续集成,测试,部署以及发布行为,通过自动化的方式定义软件的整个交付过程。

  • Kubernetes: 屏蔽云端基础设施差异,提供多云的一致性基础设施和应用管理体验。

全功能团队协作

在一个典型的全功能团队中,一般会包含以下角色:

  • 开发人员:持续提交代码并且通过持续集成运行单元测试,构建等任务,快速获取反馈。在完成持续集成后,能够自动部署代码到开发测试环境,以便在需要的时候能够对新开发的功能进行快速验证。

  • 测试人员:相对于开发来说,测试希望有一个相对较稳定的验收测试环境,并且能按需部署代码到测试环境(一般是开发人员自测完成后)。

  • 运维人员:唯一拥有将版本部署到生产环境改的权限,能一键完成生产环境部署,但对权限和安全发布有更高的要求。

持续交付流水线

持续交付流水线专注于从代码到发布的端到端自动化过程。基于云效提供的流水线编排能力,如上所示,基于云效持续交付流水线,我们可以快速编排一个持续交付流水线来承载全功能团队协作的需求。

说明

立即体验:云效流水线Flow

持续交付流水线

基于流水线的团队协作

在流水线中我们分别创建:CI(持续集成),Dev(开发环境部署),Test(测试环境部署),Prod(生产环境部署)4个阶段。同时为了实现不同角色之间的协作与工作流转。我们将CI,Dev阶段设置为自动执行,Test,Prod为手动执行,并且增加了相应的人工卡点以确保只有相应角色的人员能够确认开始执行部署动作。

如下所示,每次开发人员提交代码后都能够触发并自动完成CI以及Dev环境的部署,如果CI流程有任务的异常都能够通过钉钉以及其他方式快速获取到反馈。

基于流水线的团队协作1

由于Test阶段定义为手动执行,因此当需要部署测试环境时,测试人员可以手动触发该阶段的部署,为了确保测试环境不被其它角色进行误操作,在执行部署动作前需要具有测试owner角色的人员来手动验证,以开始测试环境部署。

基于流水线的团队协作2

当Dev以及Prod阶段均成功以后,运维人员就可以按需对生产环境进行部署。

基于流水线的团队协作3

上述我们定义了一个最简单的支持开发,测试,运维进行协同工作的持续交付流水线。

更多扩展玩法

基于流水线的流程编排能力,我们可以在上述流水线基础上按需扩展更多的玩法。

例如:在生产发布之前,我们可以添加一个Beta测试环境增加更多的环境来确保生产环境的安全部署。

拓展玩法1

或者在Beta以及Prod阶段再增加一个只包含人工卡点的阶段,在这种场景中我们可以由专门角色的人员负责正式部署前Beta环境的验证,并且只有在验证通过之后才能进行Prod环境的发布:

拓展玩法2