你是否应该构建一个内部自定义开发人员平台,直接购买现成的平台,还是将这两种方法相结合?权衡利弊以做出决定。
译自 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的工程推动副总裁Jim Beyers所解释的那样:“...一旦你达到一定规模,我不知道是否存在适合的解决方案... 可能我们最终会不得不自己构建。”
简而言之,定制构建一个内部开发者平台为具有特定需求、严格合规要求或超级增长的组织提供了无与伦比的控制和与现有系统的兼容性。CVS Health的经验强调了在一定规模下,平台即服务解决方案是没有意义的。
构建内部开发者平台并非没有挑战。如果您一直关注平台工程的讨论,您可能听过一些组织在构建平台时遇到困难的故事。追求这种方法的组织应考虑:
- 前期成本:自主构建内部开发者平台需要时间和大量资金。平台团队应采用将平台作为产品的方法,以帮助相关利益相关者了解所需的投资。如果没有持续的支持,平台倡议可能会在实现之前被取消。
- 维护:随着平台的扩展,平台团队的责任也随之增加,需要跟上新的标准、技术更新和工具。在《云战略》作者格雷戈尔·霍普在2022年的PlatformCon演讲中,他解释了平台团队如何了解和沟通他们计划维护多少平台:
“当基础平台增长时,你会怎么处理你的平台?…你可以保持你的平台不变,因为你投入了所有这样的资金,我们称之为下沉平台,随着水位的上升,这可能是合理的投资,但你在某种程度上是在复制现在在基础平台中已经可用的东西。…或者你建立一个‘浮动平台’,当基础平台获得你已经构建的功能时,你会说‘哦,完美!我不再需要那一部分了。我可以让基础平台处理那部分,然后我可以在其上进一步创新。’”
来源:格雷戈尔·霍普在2022年PlatformCon大会上发表的《平台的魔力》
- 复制其他内部开发者平台的危险性:复制谷歌、Netflix或亚马逊的内部开发者平台(IDP)是失败的前兆。现在有比以往更多的平台工程示例和资源,但是平台团队仍需要了解其组织的独特需求。
减轻这些挑战的最佳方法是采用平台即产品的方法:进行用户研究、创建产品路线图、征求用户反馈、持续迭代和改进,并获得所有利益相关者的内部支持。这种方法不仅有助于平台团队避免常见的陷阱,而且还有助于构建真正受开发者欢迎的平台。
一些组织缺乏足够的人员、遗留系统或快速增长,这需要定制内部开发者平台(IDP)。对于这些组织来说,购买平台即服务(PaaS)可能是一个更明智的投资。PaaS对这些组织的好处包括:
- 资源负担减轻:购买平台即服务(PaaS)能够减轻内部团队在开发和维护方面的重负。购买释放了宝贵的内部资源,使它们能够专注于组织特定的问题。
- 供应商支持:PaaS提供商有着保持其平台竞争力的切实利益。供应商可以投入更多资源进行持续改进、功能增加、安全更新和支持。
- 价值实现时间更快:实施PaaS的时间线比从零开始构建内部开发者平台(IDP)要短得多。通过PaaS,您可以更快地开发并将新应用推送到生产环境。
- 基本安全性:大多数PaaS解决方案提供了一些内置和最新的安全功能。尽管这些功能对于具有特定合规性要求的行业可能不足够,但它们可以减轻对于监管较少的内部团队的负担。
- 低前期成本:购买PaaS带来了更可预测、通常更低的前期成本,使其成为较小组织的更具成本效益的选择。
总而言之,PaaS赋予了较小组织以更少的遗留技术解锁内部开发者平台(IDP)的力量,而无需从零开始进行巨大的工作和支出。对于那些没有特定需求或需要定制平台的广泛遗留系统,PaaS提供了一条成本效益高且得到支持的路径来改善开发者体验。
正如前文所述,由于一些重大缺点,PaaS并不适合所有类型的组织:
- 灵活性有限:对于成熟的设置来说,平台即服务(PaaS)可能过于武断或僵化。正如Camille Fournier所解释的:“当您需要构建自己的平台时,这往往是显而易见的。如果您正在使用Heroku,您将遇到扩展限制,并且会看到团队脱离并自行解决问题。”
- 潜在的供应商锁定:PaaS的客户应该考虑购买时要有退出策略。否则,他们可能会被锁定在供应商的方法和工作流程中。
- 与遗留系统的不兼容性:PaaS不太可能与庞大的遗留系统完全兼容。不兼容性会给具有广泛遗留技术的企业带来严重的集成和安全挑战。
鉴于这些限制,预计短期内会超出PaaS的组织应考虑改为构建内部开发者平台(IDP)。否则,您将迫使您的开发人员使用一个供应商的工作流程和方法,而很快又要将它们切换到其他不同的东西。平台的频繁重大更改会增加认知负荷,恶化开发者的体验。
大多数组织既构建其内部开发者平台(IDP)的一部分,又购买其他部分,在其平台中利用开源、商业和内部构建的工具的组合。这种构建和购买的方法使它们能够在减轻缺点的同时享受更多的好处。
然而,这种方法也带来了挑战。如下图所示,CNCF的景观既广阔又令人困惑。平台团队通常需要帮助理解如何选择合适的工具以及如何最好地将它们粘合在一起。然而,平台工程社区通过创建一个新的和改进的平台工具景观做出了巨大贡献。
来源:CNCF
一般来说,平台工程专家建议在可能的情况下避免重复造轮子。Syntasso的Abby Bangser写道:
“一般来说,随着平台组件在行业中变得越来越普遍,你更有可能购买解决方案,以从其他组织为维护其产品投入的投资中获益。”
这一建议适用于您的平台工程旅程的开始和持续。因此,在做出构建或购买决策时,重要的是了解您的平台可能如何发展以及您的组织可以利用的工具。
还要注意,构建和购买方法仍存在厂商锁定和高订阅费用的风险。理论上,构建和购买的内部开发者平台(IDP)更具可扩展性,但必须在实践中进行良好的架构设计才能实现可扩展性。如果平台团队不小心,第三方平台组件的成本可能会迅速增加并变得难以管理。无论购买完整的PaaS还是平台组件,组织都应该进行尽职调查。
对于是构建还是购买内部开发者平台(IDP),没有一种适合所有情况的答案。通过仔细考虑每种方法的利弊,并从用户和其他利益相关者那里获得反馈,您可以为您的组织做出最佳决策。
在决定是构建还是购买您的IDP时需要考虑的关键因素包括:
- 现有设置:您需要维护多少遗留技术?您的平台团队应该注意哪些集成需求?
- 规模:您的组织有多少开发人员?这个数字预计会快速增长吗?
- 长期目标:您的产品路线图是什么样的?有哪些第三方解决方案可以支持您的平台发展?
最重要的是,没有一种方法(构建、购买或两者兼有)能够保证您的平台成功。平台工程还有很多值得深入探讨的内容。
欲了解更多信息,请参阅这份免费指南,了解如何发展成为一个平台公司。