今天,我们聊一聊平台工程。

01 什么是平台工程

2022年,Scott Carey 发表了一篇调查文章,喊出了一些开发者的心声:“扯淡的DevOps,我们开发者根本不想做运维”[1]。除此之外,软件工程师兼 DevOps 评论员 Sid Palas 也在推特上写道,“DevOps 已死,平台工程才是未来”[2]。自此,平台工程的讨论不绝于耳。

image.png

(图片来自[3])

其实,平台工程这一概念由来已久,Thoughtworks 于2017年在「技术雷达」中首次讨论平台工程的产品化和相关团队,并于2021年开始将其标注为Adopt(采纳)[4]。Gartner 近两年发布的十大战略技术趋势中都包含平台工程,并给出以下定义:一套用来构建和运营支持软件交付和生命周期管理的自助式内部开发者平台的机制和架构。平台工程的目标是:优化开发者体验并加快产品团队为客户创造价值的速度。Gartner预测,到2026年,80%的软件工程组织将建立平台团队,其中75%将包含开发者自助服务门户。2024年Gartner 报告中对平台工程的描述如下[5]:image.png

image.png

02 平台工程的核心主张

平台工程是软件工程中最大的趋势之一。PlatformCon 2022 ——有史以来的第一个平台工程大会就吸引了超过 6000 名参会者,而当地的聚会小组也有数千名会员,很显然,这一趋势将持续下去。那么它的核心主张到底有哪些呢?

我们可以参考下面一张图,包括:平台工程战略、平台工程团队和平台工程作为一个产品供开发者使用 [3]。

image.png

平台工程战略

平台工程追求业务价值目标,通过实现更快更好的软件交付,帮助组织实现其业务目标。平台工程能够培养开发人员和平台工程师之间的协作、创新和学习文化,并帮助组织以可靠、高成本效益和安全的方式进行扩展。平台工程的最终实现形式是搭建一个具有通用能力、可复用的平台,以供技术团队使用。平台工程的演进一般需要经过以下三个阶段:

image.png

平台工程团队

平台工程需要打造专门的平台工程团队,负责构建、维护和改进支持开发人员的平台,平台工程师充当促进者和协调者。同时,平台工程师可以利用云原生技术(如容器、Kubernetes、微服务和无服务)创建可扩展、弹性、可移植和成本效益良好的平台。团队成员负责以下工作:

1、知识沉淀:包括业务知识、研发交付实践、技术等。

2、打造平台工程产品:面向内部开发者的产品可以屏蔽复杂的基础设施技术细节,提供卓越的平台和工具使用体验。同时平台开发者要注重组件复用,使用平台编排工具、自动化可实现跨不同环境的平台的配置、部署和管理。平台编排工具还提供对平台及其使用情况的可见性、监控和治理。平台编排工具帮助平台工程师为开发人员提供一致、可靠和安全的平台。

3、赋能开发人员:开发人员不愿与复杂的基础设施打交道,平台工程产品正是解放开发人员的「黄金路径」。

平台工程产品

平台工程的用户是内部开发者,如何受开发者欢迎的一大原因是平台工程注重「开发者体验」。所以,即使平台工程是内部使用,也需要像设计产品一样去构建平台工程。软件系统日益庞大,云原生等基础设施也日益复杂,开发者更需要一个易用、灵活的产品去更好地实施软件交付。

03 平台工程与DevOps

如果你了解DevOps(不了解的同学可以读下笔者之前的系列文章),可能就会发现平台工程与DevOps是两个维度的事情:

1、平台工程是一套机制和架构,服务于开发者,促进需求快速交付,注重开发者体验,能助力开发者幸福感和企业软件交付能力。

2、DevOps是一套方法论,或者说是一场文化运动,目标是不只是提升软件交付效能,更重要的是组织效能,关注员工幸福感。DevOps兼顾文化和工具。

因此,我认为平台工程可以说是DevOps工具层面的优秀实践

那么为什么会出现抵制DevOps的声音呢?我认为主要有以下原因:

1、DevOps的定义过于模糊,以至于不同人对DevOps的理解千差万别。本次平台工程的提出者批评DevOps,也是针对「谁构建,谁运行」这一观点的,这多少对DevOps有所误解。「谁构建,谁运行」给了开发者太大的压力,负责开发,还要负责测试、部署发布和运维。这可能是DevOps实践过程中部分组织采用的方式,但是DevOps的核心可能不在于此,而是在于DevOps三步工作法、CALMS 核心理念等

2、DevOps过于复杂,难以实施和管理。DevOps的落地绝不容易,业界DevOps专家推荐DevOps的实施路径大多是从价值流开始,价值流本身就会涉及多个部门、多个角色,识别问题后,改变流程、建设平台和工具都不是可以一蹴而就、短期见效的,这就给DevOps实践落地带来更大的阻力。

平台工程相对就比较清晰,就是要打造一个企业级的统一的自助式的、灵活的、注重「开发者体验」的内部一站式平台。开发者不用再关注复杂的网络环境、云原生基础设施、部署发布操作、监控配置等等,更易受到广大开发者的追捧。平台工程可以赋能开发人员、提高交付质量和速度,改善业务结果[7]。

04 总结

平台工程在 2021年 Thoughtworks技术雷达上被标记为「采纳」,在近两年 Gartner 战略技术趋势报告中都榜上有名,足以证实了平台工程是值得深入研究并应用的技术趋势。

平台工程的定义是:一套用来构建和运营支持软件交付和生命周期管理的自助式内部开发者平台的机制和架构。包括自助式、注重「开发者体验」等特征,需要组建专门的平台工程团队来负责。

笔者认为,平台工程是DevOps工具层面的优秀实践,值得广大开发者深入研究、探索和应用。

参考:

[1] https://mp.weixin.qq.com/s/ZLIdcZOAAKHRl2KvRsxkGA

[2] https://www.infoq.cn/article/7porVp7qVF03BVc2tDd6

[3] https://insights.thoughtworks.cn/beyond-devops/

[4] https://www.thoughtworks.com/zh-cn/radar/techniques/platform-engineering-product-teams

[5] https://www.gartner.com/en/information-technology/insights/top-technology-trends

[6] https://platformcon.com/

[7] https://www.seal.io/zh/resource/blog/devops-to-platformengineering

[8] https://www.infoq.cn/article/tbxs2my9foil1gmphjkd

[9] https://www.infoq.cn/article/5JuuFYFFNH0WT2aDJgA3