你是否应该构建一个内部自定义开发人员平台,直接购买现成的平台,还是将这两种方法相结合?权衡利弊以做出决定。
译自 Build vs. Buy: The Platform Engineer’s Guide,作者 Aeris Ransom 是一位平台工程爱好者和社区建设者。他曾在PlatformEngineering.org负责社区外联和参与。
构建还是购买内部开发者平台(IDP)是组织在开始平台工程之旅时经常面临的问题。然而,没有一种大小适合所有的答案。两种选择都有利弊,这可以帮助您为您的组织做出最佳决策。
构建或购买是什么意思?云原生计算基金会(CNCF)平台白皮书使用了马丁·福勒(Martin Fowler)和埃文·博奇(Evan Bottcher)对内部开发者平台(或数字平台)的定义:
“数字平台是一种自助式API、工具、服务、知识和支持的基础... 以引人入胜的内部产品形式组织起来。自治交付团队可以利用该平台以更高的速度交付产品功能,减少协调。”
一些人认为,这个定义意味着IDP必须是构建的,而不能被购买。然而,这种区别可能令人困惑,因为一些供应商将其产品宣传为IDP。理解区分构建平台和购买平台的特质更有价值。
可以购买的IDP通常被称为平台即服务(PaaS)。而IDP是一组不同的技术和工具组合在一起,而PaaS是一种工具,涵盖了部分(但不一定全部)相同的功能。
另一个关键区别是谁决定开发者的工作方式。对于平台即服务(PaaS),供应商定义了用户体验和平台的限制。而对于定制的内部开发者平台(IDP),公司定义了用户体验和平台的边界;限制来自于平台团队的技能、预算和业务背景。
自主开发一个内部开发者平台和购买平台即服务是一个连续范围的两端:构建与购买不是一个二元选择。
考虑到平台即服务提供的限制性质,你不会看到很多组织购买平台即服务并围绕其余部分构建平台。然而,他们可能从供应商那里购买内部开发者门户、平台构建器、控制平面、DevOps平台、应用交付平台或其他类型的平台工具,并仅自主构建必要的部分。大多数组织利用一些组合,包括构建、购买和开源工具来构建其平台。
牢记这一系列方法是有帮助的,当审查它们的优缺点时。
平台工程很难做到完美,但它还是受到了关注——有很好的理由。构建内部开发者平台使组织,特别是企业,能够创建完全适合其需求的东西。许多组织构建他们的内部开发者平台是因为这些优点:
简而言之,定制构建一个内部开发者平台为具有特定需求、严格合规要求或超级增长的组织提供了无与伦比的控制和与现有系统的兼容性。CVS Health的经验强调了在一定规模下,平台即服务解决方案是没有意义的。
构建内部开发者平台并非没有挑战。如果您一直关注平台工程的讨论,您可能听过一些组织在构建平台时遇到困难的故事。追求这种方法的组织应考虑:
“当基础平台增长时,你会怎么处理你的平台?…你可以保持你的平台不变,因为你投入了所有这样的资金,我们称之为下沉平台,随着水位的上升,这可能是合理的投资,但你在某种程度上是在复制现在在基础平台中已经可用的东西。…或者你建立一个‘浮动平台’,当基础平台获得你已经构建的功能时,你会说‘哦,完美!我不再需要那一部分了。我可以让基础平台处理那部分,然后我可以在其上进一步创新。’”

来源:格雷戈尔·霍普在2022年PlatformCon大会上发表的《平台的魔力》
减轻这些挑战的最佳方法是采用平台即产品的方法:进行用户研究、创建产品路线图、征求用户反馈、持续迭代和改进,并获得所有利益相关者的内部支持。这种方法不仅有助于平台团队避免常见的陷阱,而且还有助于构建真正受开发者欢迎的平台。
一些组织缺乏足够的人员、遗留系统或快速增长,这需要定制内部开发者平台(IDP)。对于这些组织来说,购买平台即服务(PaaS)可能是一个更明智的投资。PaaS对这些组织的好处包括:
总而言之,PaaS赋予了较小组织以更少的遗留技术解锁内部开发者平台(IDP)的力量,而无需从零开始进行巨大的工作和支出。对于那些没有特定需求或需要定制平台的广泛遗留系统,PaaS提供了一条成本效益高且得到支持的路径来改善开发者体验。
正如前文所述,由于一些重大缺点,PaaS并不适合所有类型的组织:
鉴于这些限制,预计短期内会超出PaaS的组织应考虑改为构建内部开发者平台(IDP)。否则,您将迫使您的开发人员使用一个供应商的工作流程和方法,而很快又要将它们切换到其他不同的东西。平台的频繁重大更改会增加认知负荷,恶化开发者的体验。
大多数组织既构建其内部开发者平台(IDP)的一部分,又购买其他部分,在其平台中利用开源、商业和内部构建的工具的组合。这种构建和购买的方法使它们能够在减轻缺点的同时享受更多的好处。
然而,这种方法也带来了挑战。如下图所示,CNCF的景观既广阔又令人困惑。平台团队通常需要帮助理解如何选择合适的工具以及如何最好地将它们粘合在一起。然而,平台工程社区通过创建一个新的和改进的平台工具景观做出了巨大贡献。

来源:CNCF
一般来说,平台工程专家建议在可能的情况下避免重复造轮子。Syntasso的Abby Bangser写道:
“一般来说,随着平台组件在行业中变得越来越普遍,你更有可能购买解决方案,以从其他组织为维护其产品投入的投资中获益。”
这一建议适用于您的平台工程旅程的开始和持续。因此,在做出构建或购买决策时,重要的是了解您的平台可能如何发展以及您的组织可以利用的工具。
还要注意,构建和购买方法仍存在厂商锁定和高订阅费用的风险。理论上,构建和购买的内部开发者平台(IDP)更具可扩展性,但必须在实践中进行良好的架构设计才能实现可扩展性。如果平台团队不小心,第三方平台组件的成本可能会迅速增加并变得难以管理。无论购买完整的PaaS还是平台组件,组织都应该进行尽职调查。
对于是构建还是购买内部开发者平台(IDP),没有一种适合所有情况的答案。通过仔细考虑每种方法的利弊,并从用户和其他利益相关者那里获得反馈,您可以为您的组织做出最佳决策。
在决定是构建还是购买您的IDP时需要考虑的关键因素包括:
最重要的是,没有一种方法(构建、购买或两者兼有)能够保证您的平台成功。平台工程还有很多值得深入探讨的内容。