编者按:本文源自阿里云云效团队出品的《阿里巴巴DevOps实践指南》,扫描上方二维码或前往:https://developer.aliyun.com/topic/devops,下载完整版电子书,了解阿里十年DevOps实践经验。
数字化转型是对互联网公司和产业内公司的共同挑战。产业公司要应用数字化能力,提升用户体验和运作效率;互联网公司要将数字化能力与具体的产业结合,带来更广更深的创新。共同点是,它们都需要升级 IT 的交付和运行模式,都离不开 DevOps 的能力。
DevOps 实施的定位和目标
下图展示阿里巴巴对 DevOps 实施的理解。
对 DevOps 的理解和价值主张
DevOps 的实施构建在云原生的基础设施之上,并以一站式的 DevOps 工具平台为支撑。通过 DevOps实施,构建以下两个能力:
第一,持续地顺畅高质量交付有效价值。持续优化协作模式和工程体系,消除业务需求交付过程中的一切阻碍和等待,让交付节奏跟上业务发展的需要,同时保障交付的质量和交付效能的可持续性。
第二,极致弹性和韧性的系统运行。IT 系统必须满足业务运营的要求,具备极致的弹性和韧性。弹性是指它随业务负载自动、实时的扩缩容,以精准的弹性和合理地成本满足业务;韧性指的是确保系统安全、合规和稳定的运行,实现系统运行的连续可用性和安全稳定。
为了建设这两个能力,我们明确提出了 DevOps 实施的价值主张。它们分别是:1)业务驱动的协作模式;2)产品导向的交付模式;3)特性为核心的持续交付;4)应用为核心的运维。接下来将分别作一概述。
阿里巴巴 DevOps 实施的价值主张
业务驱动的协作模式
IT 系统的交付是一个协作过程,涉及交付链路上的不同职能,如:业务、产品、开发、测试和运维等;涉及不同功能团队,如前端、后端、中台的不同产品、基础技术组件等。
如何让协作更高效,从而更快地响应和交付业务需求?我们实施 DevOps 的第一个价值主张就是,业务驱动的协作模式。它要求:1)通过业务需求拉通端到端的交付过程,包括:业务、产品、开发、测试、运维等职能的工作;2)通过业务需求对齐各个功能开发的工作,如:前端,后端,中台的交付节奏等。
业务驱动的协作模式寻求系统优化,确保各个局部的工作转化为业务可见的交付效能。我们将在第二部分介绍业务驱动的协作模式相关的实践。
产品导向的交付模式
业务需求的满足最终必须落地到产品上才能够交付。产品的交付有两种模式,分别是产品导向的和项目导向的。项目关注短期的交付,而产品关注的是长期的价值。我们主张产品导向的交付模式,是为了长期的效率和业务的价值。
产品导向的交付模式把技术交付团队看成利润中心(而非成本中心),面向产品和业务建设跨功能和相对稳定的产品交付团队,以业务价值和业务响应来衡量和激励产品交付团队。团队面向业务价值,持续地迭代和学习,并积累软件资产、工程和技术资产,提升自己的响应和交付能力。
产品导向的交付模式实践也会在第二部分介绍。
特性为核心的持续交付
“业务驱动的协作模式”以及“产品导向的交付模式”,这两者都离不开工程能力的支持,尤其是持续交付工程能力。
我们将持续交付分解为持续部署和持续发布这两个能力。其中,部署(deployment)是技术概念,指的是将软件安装到一个特定的环境;发布(release)是业务概念,指让一个或一组需求对用户可用。
建设持续交付能力,首先要做到两个解耦。1)需求之间的解耦,让各个需求的开发和发布能够独立进行;2)部署和发布之间的解耦,让部署的动作更加灵活,发布能够随需进行。
单应用部署、单需求发布是持续交付的最理想状态
这两个解耦要达成的是:单应用持续变更和单需求持续发布的能力。这是响应业务最敏捷的方式,也是我们对持续交付能力的追求。上图反映了这一状态,一个业务需求经过拆解,对应多个应用的变更,每个应用独立开发、测试和部署,当该需求涉及的所有变更部署完成,这个需求就可以自动发布,或通过特性开关按业务需要发布。
为了做到单应用的持续部署和单需求的按需发布,需要一系列机制、能力和工具体系的支持,如:环境的管理,持续交付流水线的构建、开发联调的手段、质量的保障体系。
我们将在第三部分介绍持续交付的实践。
应用为核心的运维体系
运维的目标是在快速响应业务的同时,保障业务系统运行的弹性和韧性。弹性指的是随业务的规模自动和精准伸缩的能力,韧性指的是系统运行的稳定、安全,并保障业务的连续性。
应用视角是连接系统和业务的必然选择,也是连接开发和运维的必然选择。以电商系统为例,购物车、商品详情,下单系统都是独立应用。众多应用构成了淘宝、天猫、支付宝等业务系统。阿里巴巴 DevOps 的开发、交付、运维工作都是围绕应用展开的。每个应用有独立的负责人,对应独立的代码库,有自己独立的资源集、预算,故障定责都是以应用为维度展开的。
阿里巴巴运维体系是构建在应用这个基础单元之上的。基于应用,我们可以进行各种精细化管理,推动完成技术升级,资源成本优化,以及各种稳定性治理工作,实现监、管、控一体化的运维。
我们将在第四部分介绍应用运维的实践。
一站式的 DevOps 工具体系和 DevOps 能力提升模型
DevOps 的实施离不开工具的支持。好的工具能够沉淀原则和方法,贯彻正确的价值主张,让 DevOps的实施事半功倍。
在研发协作和交付过程,以及 DevOps 的实施过程中,我们面临诸多挑战,如:1)工作流程自动化、标准化问题,如何让业务、产品、技术三种角色高效和有效地协同;2)资产管理问题。如何有效的管理代码、文档、应用、资源等关键资产;3)透明化与数字化问题。如何通过全局的信息透明促进协同,并通过数据洞察为团队改进指明方向。
为了应对这些挑战,阿里逐渐形成了自己特色的 DevOps 实践,并将这些实践落地到一套完整的 DevOps工具体系中,以适应业务研发的诉求。它有如下特点:
- 一站搞定需求、开发、测试、部署、运维的所有诉求。
- 松管控、强卡点,在工具设计上弱化人为管控,把操作权限下放到一线研发,同时,又提供了全局和特定范围内的卡点能力(如安全检测),保证发布的质量符合要求。
- 可定制、可复用,可扩展,允许开发者根据应用特征和开发习惯定制自己的使用方式以及扩展组件,同时又能方便地复用他人的优秀成果。
我们将在第五部分介绍阿里巴巴的 DevOps 工具体系。
为了给组织 DevOps 实施指明方向,并协助规划清晰的路径,我们设计了 DevOps 能力提升模型,它分为 4 个方面 10 个能力。基于它组织可以评估当前的状态和不足,并规划 DevOps 实施和提升路径。
我们将在最后部分提供 DevOps 的能力提升模型。
免费下载《阿里巴巴DevOps实践指南》
阿里巴巴合伙人和业界多位大佬力荐、何勉、陈鑫等17位阿里资深技术专家联袂出品、阿里十年DevOps经验沉淀总结、阿里巴巴DevOps落地实践一本通。
前往:https://developer.aliyun.com/topic/devops,下载完整版电子书。