Gartner 将平台工程列为 2024 顶级战略技术趋势之一。
说起平台工程(Platform Engineering) ,经常听到有人说是:新瓶装(平台工程)旧酒(DevOps)。
今天根据过去自服务平台的实践经验,聊聊我所理解的平台工程。
说到平台工程,不可不免地要聊聊云原生,不过这里不会针对是否转向云原生进行讨论。
云原生的三驾马车:微服务、Kubernetes、DevOps。根据过往的实践经验,我认为云原生技术平台的核心能力(包括但并不限于)可概括为:
对于风靡多年的云原生(近来也有降温的趋势?),业界的褒贬不一:提升了研发效率和资源的利用率,;浪费资源、部署维护困难、可观测性变差等等。
云原生技术所面临的众多负面反馈,很大程度上源于其本身的复杂性。云原生平台向开发人员展现了过多的复杂性。
云原生技术,尽管带来了许多优势,比如灵活性、可扩展性和高效的资源利用,但同时也引入了一定的复杂性:
这些复杂性给开发人员带来了显著的摩擦和认知负担,从而降低了他们的开发体验。在专注于业务开发的开发人员与底层基础设施之间,形成了一个模糊的交界区域。平台工程正是专注于这个模糊地带,旨在缩小这一差距并简化开发流程。
平台工程是一个胶水层。
平台工程是一门在云原生时代为软件工程组织设计和构建工具链及工作流程的学科,旨在提供自助服务能力。平台工程师提供的综合产品通常被称为“内部开发者平台”,涵盖了应用程序整个生命周期的运营需求。
Platform engineering is the discipline of designing and building toolchains and workflows that enable self-service capabilities for software engineering organizations in the cloud-native era. Platform engineers provide an integrated product most often referred to as an “Internal Developer Platform” covering the operational necessities of the entire lifecycle of an application.
- 来自 平台工程社区的介绍
平台工程致力于构建和维护一个桥梁,这座桥梁把复杂的基础设施转化为简化的抽象,使得开发人员能够专注于业务逻辑的开发,无需深入钻研底层技术细节。同时,他们也努力将业务逻辑层的通用功能整合并下沉,进一步简化开发流程。
此处,我更倾向于将“工程”理解为一个动词,即对平台进行工程化。
软件开发的过程标准化、系统化和规范化是为了提高软件开发效率、质量和可维护性。这三个方面通常包括以下内容:过程标准化、系统化、规范化。
随着平台工程化水平的提升,开发人员得以享受到更高水平的自服务能力。这样的自服务平台的实施,进一步缩短了开发人员与基础设施平台之间的距离,使得开发人员能够更便捷地使用平台资源,而无需深入了解底层技术细节。
自服务平台正是工程化的产物,或者是平台工程的具象化。
自服务平台使开发人员能够直接管理和操作资源,让他们亲自参与到软件的整个生命周期中,同时无需关注幕后的基础设施和实现细节,并减少了平台团队成员的直接介入。这种平台遵循着“You build it, You run it”的理念,但不强求开发人员深入理解底层技术(“Know-how”)。
从我的角度看,自服务平台更像是流程和工具的结合体。在工具层面,无论是开源还是商业软件,都提供了对通用能力的抽象。然而,在流程方面,由于每个企业都有自己特定的管理需求和对支撑部门的依赖,流程设计上会有所不同。虽然工具可能实现标准化,但流程很难做到这一点。
我认为,将平台工程简单比喻为‘新瓶装旧酒’是不够全面的。实际上,平台工程代表的是对传统方法(例如 DevOps)的进一步沉淀和提升,为其赋予了新的表现形式和能力。