今年以来平台工程成为研发效能领域的热词,有文章讲DevOps已死,平台工程才是未来,也有文章讲平台工程是DevOps的下一阶段。那么什么是平台工程,怎么在企业内落地平台工程,云效负责人陈鑫在2023云栖大会上,结合云效过去在阿里内部十多年的经验和在各大企业的实践,给出了非常详细的解答。
1. 企业平台工程的构建路径
开发者面临的挑战核心是庞杂的技术与工具带来的认知复杂度,降低认知复杂度是打破DevOps落地瓶颈、提升软件交付效率的首要目标。
因此企业平台工程建设的核心,就是建立开发者友好的抽象层。这个抽象层次是开发者容易理解的概念与对象,并且是一以贯之的,不与下层技术栈强耦合,比如应用、环境、研发流程等等。这些不管是在虚拟机时代还是在云原生时代并没有颠覆性变化。因此基于抽象层次建立的平台可以有效屏蔽下层各种工具平台的概念复杂性。
其次良好的抽象应该具备广泛的适配性,不管是传统稳态复杂系统研发,还是微服务持续交付,不管是传统虚拟机技术,还是云原生技术,不管是私有IDC,还是多云服务商,都可以进行良好的集成。更进一步需要做到关注点分离,运维团队定义下层所需的工具、技术栈和基础设施,而开发者完全不需要理解其中的细节。
建立上图所示的平台工具体系,是平台工程落地的第一步,也是最重要的一步。
其次还需要第二步,产品化思维。什么是产品化思维?它是一种通过用户思维、数据思维,不断发现、分析问题,并且用标准化方法将解决方案产品化的思维模式。其核心是重视用户体验,重视本质思考,重视产品设计。很多企业在建立平台工程时会忽略这一点,糟糕的产品设计与体验,会让开发者苦不堪言,甚至在复杂场景下出现效率的倒退。
当我们用产品化思维构建平台后,自然会考虑产品的模块化,可组装、可配置能力,这种产品化能力可以让平台适配企业各团队不同的场景与习惯。比如A团队喜欢主干研发模式,B团队习惯于分支研发,A团队负责私有化输出软件希望月度版本制模式,而B团队维护在线SaaS服务希望持续交付模式。平台都可以允许用户自由配置。
第三步是解决团队的共同挑战。在企业统一管控原则下,为开发者提供最大的自由度,推动各团队在一个平台下工作,可以有效消除团队间的协同壁垒,让团队人员流动,技术交流,系统集成的复杂度大大降低。
总结下来我建议企业以下面四个步骤去构建平台工程。
第一步:定义适合企业特点的统一概念模型,屏蔽下层复杂概念,让开发者聚焦软件交付过程。
第二步:以产品化思维去定义产品蓝图,规划产品模块,遵守可组合、可配置、集中化原则,打造统一平台。
第三步:在统一概念模型和产品蓝图定义的基础上去整合下层工具能力,打造面向开发者的统一入口。
第四步:持续不断的收集开发者反馈,重视用户体验,不断地改进平台设计,提高效率、可靠性和安全性。
上面这四步讲起来比较简单,但是落地过程却充满着困难和阻塞。
首先最大的挑战是文化问题,不管是敏捷文化、DevOps文化,还是平台工程,基础都是透明、共识、共享、合作。失去了这个前提,就算引入一个现成的优秀平台,也无法改变软件研发效率的现状。当然最近几年,我们欣喜地看到,中国的大部分企业,不管是中小互联网,还是大型国央企,都在积极拥抱这种变化,新一代的企业领导多数将文化变革放在首位。
其次是组织问题,需要逐步建立以产品为导向的组织和对平台工程团队的持续投入,这与我们前面讲的产品化思维是紧密相关的。
后面两个问题的本质是成本问题,企业需要深刻认识到建立优秀平台所需专业人员的投入,以及持续性,不能是一锤子买卖,随着技术的不断迭代,平台不改进就很容易成为开发者效率的最大阻塞。
2. 云效助力企业构建平台工程
云效产品建立的初衷就是希望帮助广大企业快速的建立平台工程能力,并且依靠自身在阿里多年的实践经验和阿里云技术能力,让平台既高效率、低成本、又能够具备长期可持续性。
上图展示的是云效统一的概念模型。去年云效将过去10多年阿里巴巴工程效能方法和实践编制为《必致(BizDevOps)白皮书》,其中完整、准确的定义了平台工程领域具备普适性的标准概念模型。在这个模型上我针对各种企业的软件研发流程现状及个性化实践进行了推演,基本上都可以比较容易的映射上来。
其中最核心的是围绕应用,定义了一系列的数据对象,比如环境、代码、配置、编排等,以及两个重要的时标对象,变更与发布。时标对象是四色建模中的一个概念,可以通俗地理解为业务的核心单据。通过这些单据可以追溯整个业务流程。变更与发布是研发流程中重要的业务单据,代表着一次软件变更内容,并记录着整个变更过程。
拥有统一概念模型后,云效将在阿里多年积累、以及各企业落地DevOps过程中的实践经验,汇总成了以下七大方案,分别是敏态、稳态软件研发流程自动化方案、架构管理方案、资源管理方案、研发运维一体化方案、企业工具集成方案、全链路智能化方案、全链路效能洞察方案等,并基于这些方案构建了完整的平台产品能力。
2.1 研发流程自动化——敏稳双态流程
首先是敏稳双态流程自动化方案,其核心需要解决的是企业中核心系统版本制发布流程与单微服务持续交付流程的统一问题。
在单应用敏态持续交付模式下,通过变更承载软件变化的内容,通常是一个代码分支,并经过一个分阶段的研发流程完成各环境的部署验证工作,最终发布线上。
在系统稳态版本制模式下,用户可以设置多个应用,也就是多个微服务组合成一个系统。使用发布承载版本内容,例如各应用的代码变更、系统编排变化、环境变量变化等等,经过系统各阶段研发流程完成软件上线工作。在这个过程中各应用可以确保在环境上以版本维度同上同下,简化环境上软件管理复杂度。最终在软件上线后生成系统版本,建立软件基线,方便后续软件变更使用。
这种灵活可组合的模式,比较好地解决了复杂软件的交付流程标准化和统一化的问题,为企业建立统一平台打下基础。
2.2 研发流程自动化——多级可扩展
另外为了适配企业软件交付流程的个性化问题,云效也提供研发流程的多级可扩展策略。
在第一层可定义企业中标准的几类应用研发流程,例如标准发布流程、紧急发布流程、二方库发布流程等,这些流程重点承载软件交付阶段定义、各阶段分支、制品晋升规则、阶段准入规则等等。
第二层针对每一个阶段的流水线进行定义。通过触发源、组件、条件、变量等多种元素组合,自由进行流程编排,制定个性化研发流水线。
第三层是组件扩展,通过基于容器化的组件扩展机制,简单几步就可以完成企业内任意工具接入,实现any language、any platform的目标。当然云效原生已经提供了对阿里云PaaS、IaaS产品的全面适配,以及主流语言及开源软件的适配,可以做到开箱即用。
通过这三层扩展机制,较好的实现了平台工程所要求的可复用、可组合、可配置原则。
2.3 架构管理规范化
接下来介绍架构管理规范化方案。架构统一是研发管理者、架构师普遍关注的问题。统一架构可以有效的实现对团队内研发规范的收敛以及持续迭代,避免各自为政,各种不规范导致的系统风险。
云效基于应用模板策略,实现了对应用涉及到的资产和流程的全面管控。通常应用模板包含编排模板、研发流程模板、变量组、环境配置、功能服务配置等。支持初始化模式和继承模式,在继承模式下允许使用可编程语言配合可修改变量来改变部署编排与流程编排,当模板修改时也可以批量更新,确保所有应用统一升级。
2.4 环境与资源管理集约化
环境与资源管理方案需要解决的是测试环境管理相关问题。云效引入临时+主干环境策略,用户可针对不同的发布版本创建临时环境,与主干环境进行组合,完成软件测试。多个发布版本可并行开发,既节约了环境资源,又避免了多套固定环境带来的协调与冲突问题。
环境的全生命周期管理通过自动化流程来实现,无需主动干预,确保测试资源利用率最大化。
2.5 研发运维一体化
研发运维一体化方案目标是实现开发者90%的日常运维操作都由平台承载,无需理解和切换底层复杂PaaS、IaaS平台,从而提升开发者体验。
云效支持从应用自动化部署、应用环境监控、应用日志查看,再到环境集群整体监控四大维度的常见运维变更操作。目前已实现与ACK、ARMS、SLS等系统的集成,方便用户开箱即用。当然也支持按照企业自身基础设施情况进行自定义扩展。
2.6 企业内部工具集成方案
回顾前面章节讲的平台工程构建路径中的第三点,整合企业工具链。云效可以通过标准API、WebHook、自动化规则、流水线插件、应用市场等扩展能力,实现对企业自有工具链的全面集成。
这种集成方式是标准化的,有清晰边界,无侵入性,并且互相解耦的。有利于平台的长期发展演进。在实际落地过程中,云效会在统一登陆、立项、应用主数据、企业OA、安全扫描工具、测管平台、PaaS运维平台等方面做集成,实现开发者统一平台,统一体验的目标。
2.7 DevOps全链路智能化
最后介绍下AI时代必须要完成的DevOps全链路智能化。
云效将围绕通义大模型,全面优化DevOps工具链路。例如需求编写阶段、编码开发阶段、集成测试阶段、发布部署与运维阶段,以及效能管理阶段。
相信在未来,随着AI技术的全面发展,平台工程将迎来飞速发展期,软件研发模式和效率也会迎来颠覆性的变革。
云效,产研数字化同行者
云效是阿里云企业级一站式研发协同平台,源于阿里巴巴多年先进的管理理念和工程实践,提供从“需求->开发->测试->发布->运维”端到端的协同服务和研发工具,支持公共云、专有云、混合云多种部署形态。连续2次获IDC产品能力第一评估,获信通院BizDevOps、DevOps平台双重认证,服务金融、制造、电商、零售、汽车、物流、互联网等行业数十万客户,上百万开发者。通过BizDevOps、持续交付等不同解决方案,助力企业实现研发敏捷和组织敏捷。