CNCF《平台》白皮书


本文旨在支持企业领导者、企业架构师和平台团队负责人倡导、调查和规划云计算内部平台。

我们认为,平台会对企业的实际价值流产生重大影响,但只是间接影响,因此领导层的共识和支持对于平台团队的长期可持续性和成功至关重要。

在本文中,我们将通过讨论平台的价值是什么、如何衡量这种价值以及如何实施平台团队来最大限度地提高这种价值,来实现这种支持。

目录

  • 为什么需要平台?
  • 什么是平台
  • 成功平台的特征
  • 成功平台团队的特征
  • 实施平台时面临的挑战
  • 如何衡量平台的成功
  • 平台的能力

通过投资平台,企业可以

  • 减轻产品团队的认知负担,从而加快产品开发和交付速度
  • 通过派遣专家对平台功能进行配置和管理,提高依赖平台功能的产品的可靠性和弹性
  • 通过在企业的多个团队中重复使用和共享平台工具和知识,加快产品开发和交付速度
  • 通过管理平台功能及其周边的用户、工具和流程,降低产品和服务中的安全、监管和功能问题风险
  • 在保持对用户体验控制的同时,将实施工作委托给公共云和其他托管产品提供商,从而以经济高效的方式使用这些服务

平台定义:

  • 平台更多地将支持功能与特定于应用程序的逻辑分离开来。
  • 云原生计算平台是根据平台用户的需求定义和呈现的功能的集成集合。它是一个横切层,可确保为广泛的应用程序和用例获取和集成典型功能和服务提供一致的体验。
  • 平台团队创建的功能可供众多流对齐保持一致的[产品]团队使用,而开销很少
  • 数字平台是自助服务 API、工具、服务、知识和支持的基础,这些内容被安排为引人注目的内部产品。自主交付团队可以利用该平台以更快的速度交付产品功能,同时减少协调。

企业可能遇到的平台用例可能会通过以下方式进展:

  1. 产品开发人员可以按需提供功能并立即使用它们来运行系统,例如计算、存储、数据库或身份。
  2. 产品开发人员可以按需配置服务空间,并使用它们来运行管道和任务、存储工件和配置和/或收集遥测数据。
  3. 第三方软件的管理员可以按需配置数据库等所需的依赖项,并轻松安装和运行该软件。
  4. 产品开发人员可以从模板提供完整的环境,结合特定场景(例如 Web 开发或 MLOps)所需的运行时和开发时服务。
  5. 产品开发人员和经理可以通过自动仪表和标准仪表板观察已部署服务的功能、性能和成本。

平台属性:

  1. 平台作为产品。平台的存在是为了满足用户的需求,并且应该根据这些需求进行设计和发展,类似于任何其他软件产品。平台应提供必要的功能来支持产品团队中最常见的用例,并将这些功能优先于仅由单个团队使用的更具体的功能,以最大化交付的价值。
  2. 用户体验。平台应通过一致的界面提供其功能并关注用户体验。平台应尽力满足用户的需求,这可能意味着 GUI、API、命令行工具、IDE 和门户的组合。例如,平台通常提供部署应用程序的功能。开发人员可能通过 IDE 使用此类功能,测试人员可能使用命令行工具,而产品所有者可能使用基于 GUI 的 Web 门户。
  3. 文档和入职培训。文档是成功软件产品的一个关键方面。为了能够使用平台的产品,用户需要文档和示例。平台应提供适当的文档来满足用户的需求。它还应该提供加速新项目启动的工具,帮助用户快速、简单地使用必要的平台服务。例如,该平台可以提供可重用的供应链工作流程,用于在 Kubernetes 上构建、扫描、测试、部署和观察 Web 应用程序。这样的工作流程可以通过初始项目模板和文档来提供,这些捆绑包通常被描述为黄金路径。
  4. 自助服务。平台应该是自助服务的。用户必须能够自主、自动地请求和接收功能。此属性对于允许平台团队启用多个产品团队并根据需要进行扩展至关重要。平台功能应按需提供,并且通过上述接口进行最少的手动干预。例如,用户应该可以通过运行命令行工具或在门户网站上填写表格来请求数据库并接收其定位器和凭据。
  5. 减少用户的认知负担。平台的一个基本目标是减少产品团队的认知负担。平台应该封装实现细节并隐藏其架构可能产生的任何复杂性。例如,平台可能会将某些服务委托给云提供商,但用户不应该接触到此类详细信息。同时,平台应允许用户根据需要配置和观察某些服务。用户不得对平台提供的服务的运营负责。例如,用户可能经常需要数据库,但他们不必管理数据库服务器。
  6. 可选且可组合。平台旨在提高产品开发效率,因此它们不能成为障碍。平台应该是可组合的,并且使产品团队能够仅使用其产品的一部分。它还应该使产品团队能够在必要时提供和管理平台产品之外的自己的功能。例如,如果一个平台不提供图数据库,而产品需要它,那么产品团队应该可以自己配置和操作图数据库。
  7. 默认情况下安全。平台默认情况下应该是安全的,并提供确保基于组织定义的规则和标准的合规性和验证的功能。


以下是平台团队应负责的工作:

  1. 研究平台用户需求并规划功能路线图
  2. 营销、宣传和倡导平台提出的价值观
  3. 管理和开发用于使用和观察功能和服务的界面,包括门户、API、文档和模板以及 CLI 工具

虽然平台承诺了很多价值,但它们也带来了实施者应牢记的以下挑战。

  1. 平台团队必须像产品一样对待平台,与用户一起开发
  2. 平台团队必须谨慎选择优先级和初始合作伙伴应用团队
  3. 平台团队必须寻求企业领导层的支持并展现对价值流的影响

如何衡量平台的成功:

  • 用户满意度和生产力
  • 组织效率
  • 产品和功能交付 

平台能力:

  1. 用于观察和配置产品和功能的门户网站
  2. 用于自动配置产品和功能的API (和 CLI)
  3. “黄金路径”模板和文档可实现产品功能的最佳利用
  4. 构建和测试服务和产品的自动化
  5. 交付和验证服务和产品的自动化
  6. 开发环境,例如托管 IDE 和远程连接工具
  7. 使用仪器和仪表板的服务和产品的可观察性,包括功能、性能和成本的观察
  8. 基础设施服务,包括计算运行时、可编程网络以及块和卷存储
  9. 数据服务,包括数据库、缓存和对象存储
  10. 消息传递和事件服务,包括代理、队列和事件结构
  11. 身份和秘密管理服务,例如服务和用户身份和授权、证书和密钥颁发以及静态秘密存储
  12. 安全服务,包括代码和工件的静态分析、运行时分析和策略实施
  13. 工件存储,包括容器映像和特定语言包、自定义二进制文件和库以及源代码的存储