编者按:今年以来平台工程成为研发效能领域的热词,有文章讲DevOps已死,平台工程才是未来,也有文章讲平台工程是DevOps的下一阶段。那么什么是平台工程,怎么在企业内落地平台工程,云效负责人陈鑫在2023云栖大会上,结合云效过去在阿里内部十多年的经验和在各大企业的实践,给出了非常详细的解答。
以下是他演讲的文字版。由于文章比较长,我们将内容分为了上下2篇。本文为第一篇。
云原生时代开发者面临的挑战
从过去几年的技术发展历程来看,容器化以及云原生确实带来了DevOps的空前繁荣。在传统应用时代,开发只关注应用层的代码编写以及测试,而生产环境的软件部署、维护、故障应急等都由运维负责。当然这样会带来两个角色的壁垒。
随着敏捷研发和DevOps文化发展,以及以k8s为代表的云原生技术的发展,将运维的复杂性逐步简化,开发者的职责也扩大到应用的全生命周期。
尽管云平台软件大幅降低了运维复杂性,但对于开发者来说,他们的职责边界真真实实被扩大了。这就带来了4个切实的挑战:
1、云原生新概念带来的认知复杂度。过去几年k8s、mesh、serverless技术迭代非常快,大量的新知识让开发者应接不暇,尤其是对于初入职场的新人,而这些知识对于业务开发来说并没有太多收益。
2、各种云平台、开源工具、企业自建平台纷繁林立,需要大量学习成本,每次升级都需要重新适应。
3、众多平台概念不统一,界面不统一,操作习惯不统一,完成一次软件交付需要多个平台之间切换,严重影响开发者的心流。稍有不慎还容易操作错误,带来故障。
4、企业各团队都在按照自身习惯建立工具与平台体系,造成团队之间协作困难,无形中建立了新的部门墙。
因此很多企业在落地DevOps后发现不但对研发的能力要求变高,工作效率以及线上稳定性并没有显著提升,极端的甚至出现了倒退。开发认为工作量变大无法专心于业务交付,而管理者不得不花费更多的成本去招聘和培养员工,陷入尴尬的局面。
平台工程解决的核心问题
平台工程概念的提出正是建立在这样的背景之下。平台工程社区的发起人这样定义平台工程,他认为“平台工程是一门设计和构建工具链与工作流的学科。这些工具链和工作流可以为云原生时代的软件工程组织提供自助服务功能。平台工程师提供集成化产品,通常称为“内部开发平台”,可以涵盖应用程序整个生命周期的所有操作需求。”
Gartner 在去年把平台工程列为了 2023 年度 10 大战略技术趋势之一,并且预测到 2026 年,80% 的软件工程组织将建立平台团队,其中 75% 将包含开发者自助服务门户。
业界则针对DevOps和云原生带来的一系列挑战给出了4方面的解法:
1、通过简化的工作流、标准化的工具和服务,降低开发者在云原生技术栈下的认知负担,从而改进体验。这句话需要重点关注“简化”、“标准化”和“认知负担”这三个词。从开发者的角度来讲,最好的体验就是简单、清晰以及自动化,开发者体验被提到了新的高度。
2、提供开发者自助化服务,降低软件开发交付过程中各阶段延迟,从而提升效率。开发者自助服务平台是解决问题的关键,也是承载第一点标准化工具服务的地方。重点在于自助服务,这点类似于ITIL方法中提出的服务目录概念,本质在于使用者和平台构建者的关注点分离策略。
3、企业内各团队使用统一的工具和服务组合,打破部门墙,提升协同效率。
4、要想企业内统一,一定需要平台拥有可复用、可组合、可配置的能力,来满足各类研发场景和团队习惯的要求。
平台工程与DevOps的关系
我们再进一步讨论下平台工程与DevOps的关系是什么。这里,我们从背景、目标、行动三个方面来看两者的异同。
从背景来看,从2001年敏捷运动开始再到2009年DevOps正式被提出,DevOps已经发展了快15年时间,其方法实践以及文化可以说是深入人心。而平台工程是因为云原生技术叠加DevOps发展出现停滞等因素诞生的。两者可以说是敏捷开发背景下的各角色协同问题发展到不同阶段而产生的不同的解题思路,并不存在根本上的矛盾,而是具有一定延续性。
从目标来看,DevOps是为了促进dev和ops团队之间的协同,从而提升软件的交付速度与质量,而平台工程是解决开发者认知负担问题、协同成本问题,同样是以提升软件的交付速度与质量为目标,两者高度一致。
从行动上来看,DevOps通过谁开发、谁运维的文化主张,打破了dev和ops两个角色部门墙。但给dev角色带来了一系列新的问题。而平台工程继续延续着DevOps的文化方向,期望用新的平台工具体系彻底解决dev的效能问题。因此在工具平台层面是一次全新的升级。
总结下来,平台工程是DevOps方法和实践在新的技术背景下的延续,其内核是高度一致的。平台工程期望以新的解题思路,彻底解决企业落地DevOps的困难,最终进一步释放开发者生产力。
企业建设平台工程的目标与价值
我们可以从生产力和生产关系两个维度来归纳企业建设平台工程的价值。在生产力维度,建设企业内部统一、标准、体验优异的自助化服务工具平台,可以有效降低开发者认知负担,提升开发者生产力。这是企业建设平台工程的及格线,也是第一目标。
在生产关系维度,平台工程具备可复用、可组合、可配置、集中化能力,可以满足企业各团队个性化诉求,降低团队间协同成本,加速企业向客户交付价值的速度。这是对平台工程更高的要求,当然落地起来有会更困难。
阿里平台工程实践
首先,我们来看看阿里内部平台平台的发展历程。我们将它分为四个阶段。第一二阶段平台的目标是适配核心电商服务化改造带来的应用数量爆炸式增长问题。在这个阶段平台能力以构建、部署、测试的自动化流水线建设为主。过程中逐步形成了阿里特色的一些工程实践,比如Aone-flow分支管理模式、应用管理模式、项目环境管理模式等等。
第三四阶段平台的发展是在容器化和云原生技术背景下发生的。容器化技术的诞生让DevOps加速落地,核心是不可变基础设施的理念大幅简化了应用运行环境定义、搭建、运维的成本。也就是在这个阶段,阿里内部建立了从项目需求管理、代码管理、到软件交付、测试、运维端到端的平台体系。也是目前集团内数万工程师日常最高频使用的平台。
从阿里平台工程的发展路线可以进一步印证本文对平台工程与DevOps发展的分析。在这个发展过程中,业务需要是前提,技术发展是第一推动力,而平台工程正是在解决对开发者所产生的挑战。最终通过生产力提升以及组织生产关系优化达到业务预期的目标。
上面这张图展示的是阿里平台工程体系的概况。其中研发域、运维域、运行时、技术风险与安全、计量计费五大部分是阿里开发者日常最重要的平台,贯穿着应用开发交付的完整生命周期。而链接各域的最重要的就是企业的应用元数据,它承担了各域数据连接、能力连接、体验连接的使命。
在阿里平台工程的发展过程中,产生了一系列的实践经验。对于阿里来说,最重要的平台工程实践就是以应用为核心串联研发运维全链路工具、资产和流程。通过应用向上将开发过程中所涉及到的代码、资源、环境、策略、配置等核心资产进行归集,向左通过变更和发布的时标对象与需求和项目进行关联,打通需求协作与开发运维两大领域。向下将所有的工具和流程进行聚合,核心是软件全生命周期的研发流程。
这一套概念框架是阿里平台工程的核心,通过应用将开发者日常所涉及到的几十种庞杂的工作归拢串联,建立了开发领域知识体系、工具体系的索引,大幅降低了开发者认知负担。在阿里找到了应用就找到了一切,让各角色围绕应用来进行交流和工作,不再需要额外概念转化,从根本上提升了体验和效率。
有了应用这个核心概念以后,很自然的可以围绕应用建立开发者的统一工作平台入口,例如应用的代码开发入口,涉及到代码上传、评审、CI、检测等能力。应用流程入口涉及到新建变更、拉取分支、构建、部署、测试、提测、审核、发版等软件交付能力。应用环境入口可以针对资源维度进行创建、扩缩、监控、变更等一系列运维操作。
这些对开发者来说最核心的能力入口均长在平台上,概念的一致、流程的一致、体验的一致可以让开发者不再在千奇百怪工具中迷失,始终保持开发心流,同时也能大幅降低误操作导致的各种事故。
在统一概念和统一平台的基础上,还需要大量工程实践落地平台,才能彻底释放开发者生产力,达成平台工程的建设目标。
这里我们给出了六个最主要的解决方案,分别是研发流程自动化方案、架构管理规范化方案、研发运维一体化方案、资源管理集约化方案、安全生产管理线上化方案、全链路智能化方案。
对于研发流程自动化,最重要的是实现可复用、可组装、可配置的流水线能力,并且实现any language、any platform,这是建立企业平台工程的核心,因为这个涉及到开发者日常最高频的工作。
架构管理方面涉及到代码规范、应用交付规范、流程规范、安全生产规范等等,是架构团队最关心的内容。一方面可以加强企业内软件研发过程标准化,另一方面可以大幅降低开发者认知负担,对于开发来讲只要照做即可,不容易犯错,更聚焦于业务价值产出。
研发运维一体化的目标是将日常90%的运维操作统一到平台之上并且自动化掉,最大限度的屏蔽PaaS、IaaS细节,这部分复杂度是开发者最不愿意接触的。
资源管理集约化目标是解决掉线下环境资源使用效率问题,可以通过iac技术以及流量隔离技术,实现各种复杂的环境管理方案,而这些管理方案的复杂度同样需要对开发者进行屏蔽。
安全生产管理线上化通过变更、故障管理平台的建立,以及与钉钉等IM工具进行集成,可以比较好的将安全生产流程规范自动化起来。
最后是面向AI时代的全链路智能化,也是继云原生之后下一个提升开发者效率的技术方向。
下面,我们将分享这些实践如何在企业中去落地。
下篇内容见:企业构建平台工程的路径与方案
更多推荐:看完这3场直播,为明年的效能提升来点思路!
云效,产研数字化同行者
云效是阿里云企业级一站式研发协同平台,源于阿里巴巴多年先进的管理理念和工程实践,提供从“需求->开发->测试->发布->运维”端到端的协同服务和研发工具,支持公共云、专有云、混合云多种部署形态。连续2次获IDC产品能力第一评估,获信通院BizDevOps、DevOps平台双重认证,服务金融、制造、电商、零售、汽车、物流、互联网等行业数十万客户,上百万开发者。通过BizDevOps、持续交付等不同解决方案,助力企业实现研发敏捷和组织敏捷。