什么是内部开发平台 (IDP)?

软件工程的主要目标之一是解决问题并创造价值,但现代开发中的日常摩擦可能会让人们忘记这一目标。内部开发者平台 (IDP) 旨在减轻开发者的负担,让他们能够专注于软件开发。IDP 的主要目标不仅是更快地发布软件,还要通过创建安全、高效且支持良好的模板和自动化流程(通常称为“黄金路径”)来构建和部署应用,从而减轻开发者的精神压力。

在 Google Kubernetes Engine Enterprise 上构建内部开发者平台

内部开发者平台 (IDP) 的定义

内部开发者平台集成了由专门的平台团队构建和维护的一系列精选技术和工具。此堆栈通常包括容器编排解决方案、基础设施即代码 (IaC) 工具,以及由开源项目提供支持的 CI/CD 流水线。

内部开发者平台 (IDP) 应被视为一种产品,开发者是其用户。关键在于覆盖他们的使用场景、收集反馈,并通过迭代持续打磨平台。IDP 是连接这些工具的层,它将这些工具的复杂性抽象化,让开发者可以通过简单的自助服务模型执行任务。目标是让正确之道更易达成,使开发者能够自信且自主地构建并发布。

H2:什么是认知负荷?

认知负荷指个体在工作记忆中被占用的心智资源总量。可将其视为开发者的心智带宽。当带宽被非编码任务占用时,他们专注于解决复杂问题的能力就会下降。

开发者经常需要在数十种不同的工具、信息中心和配置文件之间切换,才能部署简单的更改。每次切换情境都会迫使大脑加载一组新信息,这会消耗大量脑力。不断地在工具和流程之间切换会增加认知负担,导致倦怠、错误增多和创新速度减缓。

平台工程的作用

平台工程是一门设计、构建与维护内部开发者平台的学科。可以这样理解:如果 IDP 是产品,那么平台工程团队就是负责其生命周期的产品团队。他们的客户是组织内的开发者。

这种方法意味着应将平台像其他软件产品一样对待。平台工程团队负责了解开发者的需求、定义路线图,并提供一套可靠、安全且易于使用的工具。

内部开发者平台与内部开发者门户

经常有人询问平台与门户之间的区别。虽然这两个术语有时可以互换使用,但它们代表了开发者体验的不同层面。内部开发者平台 (IDP) 就像整个引擎,包含为开发生命周期提供支持的所有工具、工作流和基础设施。

而内部开发者门户则是该引擎的信息中心。它是图形用户界面 (GUI),为开发者提供一个单一、集中的入口以访问平台功能。开发者门户可以帮助开发者发现和使用工具、查看文档、搭建新服务,以及检查其构建的状态,而无需了解底层运行的复杂机制。虽然完整的 IDP 往往包含开发者门户,以提升易用性与可发现性,但平台本身是由底层技术与自动化流程构成的完整集合体。

IDP 的关键组成部分

虽然每家公司的需求各不相同,但大多数 IDP 都是由几个协同工作的核心组件构建而成。这些组件专注于创建从开发到生产的精简、安全和高效路径。

开发者体验是核心界面,可抽象出基础架构的底层复杂性。它通常是开发者门户或命令行界面 (CLI),让开发者能够自助访问所需的工具、文档和资源。例如,IDE 插件(如 Cloud Code)可帮助开发者在熟悉的工具内直接编写与调试代码,而基于 Backstage on Google Cloud 等方案构建的门户则提供其整个软件生态的统一视图。

应用模板(也称“黄金路径”)为开发者提供预定义且符合最佳实践的结构,用于构建新应用。这些模板可包含样板代码、已配置的 CI/CD 流水线、基础设施即代码文件以及监控信息中心。诸如应用设计中心等资源可帮助团队创建并管理这些模板的目录,确保最佳实践易于发现与可重复使用。这种方法可以加快开发者的入门速度,并确保所有服务的一致性。

此组件可将安全性直接集成到开发工作流中。它可自动执行安全政策,例如 Identity and Access Management (IAM)、基于角色的访问控制 (RBAC)、网络政策、漏洞扫描以及基础设施加固。通过将安全功能嵌入到平台的基础架构中,团队可以“将安全控制措施提前”,在开发生命周期的早期解决潜在问题。这样可以防止安全问题在生产之前成为瓶颈。

以应用为中心的基础架构可在底层基础设施之上创建标准化的抽象层。它为关键运营问题提供了一个统一的模型,提供了一种适用于所有环境的网络、安全和可观测性方法。这种一致性简化了管理,并减轻了开发者的认知负担,开发者无需担心每个部署目标的独特细节,例如特定的 Google Kubernetes Engine (GKE) 集群配置

IDP 管理代码执行的应用运行时。这些运行时可以是 GKE 等容器编排平台、Cloud Run 等无服务器平台,也可以是其他计算环境。IDP 可自动完成这些运行时的预配、配置和维护。这使开发者能够快速可靠地部署应用,而无需深入了解底层计算服务。

云应用平台是一整套集成的云服务,是整个 IDP 的骨干。它将计算、存储、网络、Cloud API、CI/CD 工具与可观测性整合为一个统一的系统。在 Google Cloud 这样完善的基础上构建 IDP,可借助强大的托管式服务加速开发、提升可靠性,并确保平台可按需扩缩容以满足需求。

IDP 的优势

采用内部开发者平台可以为工程组织带来显著优势。

提升开发者体验

通过减轻认知负担并提供简单的自助服务工作流,IDP 可以帮助提升开发者体验。

加快产品上市速度

自动化和标准化有助于加快构建和部署软件的流程,使团队能够更快地为客户创造价值。

提高可靠性和一致性

IDP 可通过黄金路径落实最佳实践,从而带来更一致、更可靠的应用部署。

增强安全性和合规性

安全政策可直接内置到平台模板和自动化工作流中,确保所有新服务自一开始即满足合规要求。

更大的开发者自主权

将平台管理集中化有助于让开发者腾出精力专注于功能开发,并赋予其自主管理应用生命周期的权力。

IDP 如何连接现有技术栈

为了了解 IDP 在实践中的运作方式,我们来看一个使用 Google Cloud 的常见内部开发者平台示例。假设开发者需要快速启动一个新的微服务,该微服务需要自己的数据库和 CI/CD 流水线。

没有 IDP

开发者需要手动创建 Cloud Source Repository,编写 Terraform 模块来预配 Cloud SQL 数据库,创建并配置 Google Kubernetes Engine (GKE) 部署文件(YAML),在 Cloud Build 中设置新触发器,并为所有组件管理 IAM 权限。这可能需要几天时间,并且涉及多个团队。

借助 IDP

整个过程要简单得多。

从门户发起请求:开发者登录开发者门户,找到一个预构建的“Python 微服务(含 Cloud SQL 数据库)”模板。

输入简单:他们填写一个简短的表单,其中包含服务名称和团队名称。

编排开始:开发者点击“创建”,平台编排器接管。

自动操作:在幕后,编排器使用 Google Cloud API 执行一系列自动化任务:

  • 它会根据模板在 Cloud Source Repositories 中创建一个新代码库
  • 它运行 Terraform 计划来预配新的 Cloud SQL for PostgreSQL 实例
  • 它会创建必要的清单,并将这些清单应用到 Google Kubernetes Engine (GKE) 集群,以创建新的部署环境
  • 它会在 Cloud Build 中配置一个新的 CI/CD 流水线,以自动构建和部署服务

完成:该流程在几分钟内即可完成。开发者会收到一条通知,其中包含指向新代码库、GKE 预演环境中运行中的应用,以及数据库凭证的链接,且无需编写任何一行配置。

利用 Google Cloud 解决业务难题

新客户可获得 $300 赠金,用于抵扣 Google Cloud 的费用。
您想解决什么问题?
What you'll get:
分步指南
参考架构
可用的预构建解决方案
此服务是使用 Vertex AI 构建的。您必须年满 18 周岁才能使用。请勿输入敏感信息、机密信息或个人信息。

其他资源

如需详细了解构成内部开发者平台的概念和技术,请查看以下其他资源:

  • Google Cloud 上的平台工程了解设计与构建支持开发者自助所需工具链与工作流的方法论
  • DevOps深入了解有助于组织高速交付应用和服务的文化、实践和工具

更进一步

获享 $300 赠金以及 20 多种提供“始终免费”用量的产品,开始在 Google Cloud 上构建项目。