可组合平台是一种新的平台思维方式,允许团队集成各种组件并根据其需求进行定制。
译自 Composable Platforms Are Promising, but Not a Silver Bullet,作者 Michel Murabito。
平台工程已成为大规模管理 DevOps 工作流的一种方式。但与每种新技术一样,平台开发的单一方法也存在固有的局限性。
大多数内部开发者平台 (IDP) 都难以应对功能孤岛、繁琐的工具链和不断扩展的基础设施,这些问题暴露了它们缺乏灵活性。
可组合架构 是对过去僵化架构设计的一次重大转变。其固有的模块化特性使其成为现代平台工程中的理想构建模块。Gartner 在 2022 年进行的研究 预测,将可组合性与整体超自动化方法相结合,到 2024 年可以将个人主动成本降低 40%。
向可组合平台过渡(无论是在私有、混合还是多云环境中部署)有望使企业能够利用其现有技术的投资。这为应对传统平台开发的挑战提供了一种另类且创新的方式,并提出了一个关键问题:可组合的自服务平台是否可能是平台工程的灵丹妙药?
让我们深入了解以下内容:
- 可组合性在平台工程中的作用
- 传统平台的局限性
- 可组合平台的承诺
- 可组合性如何推动平台工程
传统平台工程提供了一种一刀切的方法,通过内部开发者平台改善开发者体验,该平台为企业提供了一套预先构建的工具和服务,用于自动化任务和实现自助服务。
然而,这些 IDP 由多个组件组成,其核心是一个开发者门户、一个平台编排器和一个 DevOps 平台。基础设施管理通常也包括在内,有时它是主要组件。当组织从供应商处购买这些预先打包的 IDP 时,他们通常会受限于供应商提供的组件,这些组件有时是不必要的特性——会拖累系统的额外负担。
开发者和工程团队使用这些大型不可组合 IDP 时面临的一些常见限制包括:
- 通用服务:在特定团队的需求和对广泛适用服务的必要性之间取得平衡可能很困难。平台团队通常会创建所有团队在任何组织中都可以采用的通用服务。虽然这种方法促进了更广泛的采用,但它可能会移除一些团队为其特定任务所依赖的专门特性。
- 一处更改,处处更改:由于平台服务的相互关联性,升级需要仔细考虑多个因素,包括依赖关系和配置。
- 规模:大多数平台工具都不是为处理用户流量波动而构建的,因为平台会随着用户需求的增长而增长,而不会影响性能。
- 灾难半径:即使对于平台工具,灾难也是不可避免的。然而,一些 IDP 没有针对最佳灾难控制做出规定。因此,当灾难发生时,它可能会影响在该平台上运行的所有服务。
- 扩展到区域:对于一些平台解决方案来说,扩展到新区域可能缓慢且复杂。在部署之前,通常需要花费大量时间和精力来安装、集成和管理各种组件。这通常会导致创建新的区域集群或环境时出现延迟。
- 有限的实验:集成新工具(尤其是像安全扫描器或服务网格这样的侵入性工具)可能具有挑战性,而不会中断现有系统。
可组合平台是一种新的平台思维方式,允许团队集成各种组件并根据其需求进行定制。平台团队可以为大多数组件创建可安装的软件包,而不是将所有内容作为预运行服务提供。这些构建模块就像可以组合在一起以创建定制解决方案的微型平台。例如,您可以从构建基础设施平台开始,因为这是您的主要问题,然后添加 DevOps 平台和其余部分。这样,您的 IDP 将随着您的业务一起发展。
IDP 中的可组合性承诺通过引入以下好处来解决其中一些限制:
- 模块化架构:平台中的可组合性由 松散耦合系统和服务的库提供,这些库可以定制以满足您的产品需求。其理念是将每个平台的功能分解为定义明确的独立组件。这些可组合平台的模块化方法意味着平台工具可以在对整个系统造成最小的中断的情况下进行更新、替换或扩展。这确保了 公司始终处于领先地位,并拥有最新的平台功能。
- 标准化界面:可组合平台承诺采用类似乐高的基础设施方法,让您能够轻松连接现有服务和工具(无论是在私有、混合还是多云环境中)。可组合架构设计适应了尖端平台服务和工具之间的无缝集成和通信。工程和开发团队不再需要局限于传统平台的有限兼容性。
- 可扩展性、灵活性和性能:由可互换组件构建的可组合平台承诺可扩展性。它们允许您根据实时需求动态地向上或向下扩展资源(例如,处理能力、存储)。平台工程团队可以通过可定制的组装和开放集成标准轻松地 集成自定义组件或第三方服务。使用预先构建的优化组件和可组合平台可以确保每个工具都经过精心设计并高效运行。
Mia-Platform 控制台 等工具提供了一个统一的开发人员中心,用于集中项目治理,并简化和自动化 DevOps 流程。该平台提供了一个充满预构建模板和插件的市场,团队可以将其集成到其 IDP 中。
虽然可组合性为平台工具提供了许多优势,但它并不是在所有情况下都是完美的解决方案。使用这种方法构建的分布式平台可能存在缺点,在深入了解之前您应该了解这些缺点。其中包括:
- 管理复杂性增加:这些环境中的计算资源更加分散,这可能会使管理流程复杂化。因此,执行灾难恢复、故障排除或安全等任务可能需要额外的努力,特别是如果这些任务涉及最初未集成的上下文化环境。
- 总体资源消耗更高:当多个团队运行的实例多于必要时,平台面临资源过载的风险。一些 平台工具可能需要帮助管理 过度分配,这可能会导致资源消耗问题。
IDP 中的完全可组合性可以极大地促进平台工程团队的成功。方法如下:
- 定制工具:可组合性允许用户通过选择和组合仅相关的组件,根据其特定需求定制平台。这种定制级别增强了用户满意度和参与度,因为用户可以创建符合其偏好和要求的个性化工作流和体验。
- 包含波动性:当平台使用可组合组件构建时,对一个组件的更改或更新可以与其他组件隔离。这种包含有助于管理风险并降低开发期间出现回归的可能性。
- 减少爆炸半径:当这些平台中发生中断时,它们可以包含在遇到问题的特定组件中。例如,DNS 中断不会影响在单独集群上运行的其他服务。这最大程度地减少了停机时间并简化了故障排除。
- 开放性实验:可组合平台的隔离特性使团队在构建定制工具时更容易尝试不同的配置和功能。团队可以快速迭代并优化其工具,而不会影响核心平台。
- 包含平台升级:使用可组合平台,与传统平台工具的整体性质相比,在处理较小的独立组件时,升级变得可管理。简化升级过程需要更少的上下文切换和更少的依赖项。
可组合平台是强大的解决方案,对于需要高度定制和敏捷性的许多企业而言,它们可能会发挥至关重要的作用。但是,可组合性和平台工程的概念仍然很新,并且还在不断发展。重要的是要记住,平台工具旨在为开发人员提供即取即用的功能。因此,如果频繁删除和添加组件成为常态,则可能会违背平台工具简化开发流程的整个理念。
总体而言,可组合平台是一种有前途的方法,但它们仍然是不断发展的概念。我们不能将它们视为软件开发的灵丹妙药。