在云原生时代,开发人员面临着越来越多的工具、技术、思维方式的选择,给他们带来了极大的认知负担和工作量。为了提高开发人员的开发效率与开发体验,一些头部科技公司开始建立自己的内部开发者平台(IDP)。在之前的文章我们有简单了解过 IDP 相关的基础概念。IDP 是一套由平台工程团队维护的工具和技术,让开发者能够更快更便捷地构建和部署软件。IDP 通过抽象化基础设施的细节和提供一致、标准化的工作方式来帮助减少软件开发的复杂性和运营成本。
当然,IDP 并不是一个适用于所有情况的万能解决方案,不同业务对应的要求、技术和架构也会有所不同。因此,IDP 需要为开发人员提供一些具备灵活性和可定制的选项,以便为他们的业务用例选择最佳方案。这就是黄金路径发挥作用的时候了。
在这篇文章中,我们将聊聊黄金路径究竟是什么,它的优势和特点有哪些,以及企业为 IDP 建立黄金路径时需要注意什么。
什么是黄金路径?黄金路径(Golden Paths)是一种预先设置的架构和支持方法,用于在 IDP 上构建和部署特定类型的软件,是指导开发人员如何使用 IDP 的最佳实践。它可以涵盖从代码编写、测试、审查、集成、部署、监控等各个阶段的标准流程和工具。通过遵循黄金路径,开发人员不再需要学习用于创建该道路的技术的所有细节,由此开发人员的体验和生产力得以提升,应用程序的质量和可靠性也得到了保障。
黄金路径的优势企业建立 IDP 后,开发人员终于拥有完全属于他们的自助服务平台,黄金路径则能够为开发者们提供一个拥有良好支持的开发路径。
黄金路径可以加速典型的应用开发用例。黄金路径能够提供资源库模板、流水线、部署清单以及可观测性配置,可以作为任何新项目的起点。而开发者们也因为不需要从头开始构建一切,也不用学习如何使用不同的工具和服务,大大节省了时间和精力。
与此同时,开发人员还能够参考并受益于黄金路径中的最佳实践和标准,从而提高代码的质量和配置的一致性。黄金路径体现了平台工程团队希望在整个企业组织内推广的标准和管理,例如代码质量、安全、测试、性能等到你。这些最佳实践能够帮助开发人员避免常见的陷阱和错误,确保他们开发的应用程序能够满足企业和客户的期望和要求。
在助力开发人员的同时,黄金路径也帮助平台工程团队更好地进行维护和支持。由于黄金路径可以确保所有的应用程序遵循相同的结构和格式,为应用程序的相关操作提供了更高的统一性,使得应用程序甚至是开发者平台变得更容易维护、排除故障和监控。这样还能够减少应用环境的复杂性和可变性,提高整个系统的稳定性与可靠性。同时,更好的统一性也能促进共享组件和接口的团队和项目之间的协作。
传统 DevOps 团队往往被繁琐的基础设施相关工作所牵绊。黄金路径则通过抽象繁琐的基础设施决策来减少操作负担,开发者们不必担心底层基础设施的复杂性和可变性,也不用考虑如何供应、配置、拓展活更新基础设施资源,专注于核心业务逻辑和战略,因为这些任务会由平台工程团队或工具自动化处理。这样一来,开发过程能够得到有效精简,同时人为错误及错误配置等风险得以降低。黄金路径还能够帮助企业更好地管理和控制平台上的资源和工具,减少冗余和浪费。
黄金路径的特点黄金路径有一些共同的特点,使其有效和方便用户,根据 Raffaele Spazzoli 的观点,黄金路径的特点可以总结为以下:
- 灵活可选。黄金路径的确为开发者及其他相关团队带来许多优势,但它不是 IDP 的唯一强制采用方式,而是需要留有余地,允许和促进创新。开发者们可以根据他们的需要和工作偏好,来选择是否使用黄金路径。
- 高度透明。黄金路径将业务从底层复杂逻辑中抽象出来,开发人员也因此节省了学习底层技术和工具的时间。当然这种抽象并不是将底层基础设施掩盖起来,相反,在开发人员需要进行检查和细节修改时,这些底层技术是完全透明可见的。例如,如果黄金路径使用 K8s 作为部署平台,开发人员应当根据自身业务需求,无障碍阅读和编辑 K8s 清单。
- 与时俱进。黄金路径会根据用户的反馈和技术环境的变化而逐步发展,同时生成并随时更新相应的文档、支持技术和治理机制。比如,如果发布了新版本的框架和库,黄金路径应当相应更新,并将变化传达给用户。
构建黄金路径需要平台团队和开发团队之间的合作。平台团队应提供实现黄金路径的基础设施和工具,而开发团队应提供塑造黄金路径的反馈和需求。
黄金路径的组成部分
根据 RedHat 的文章,黄金路径通常由四个关键部分组成:仓库模板、流水线、部署清单、可观测性配置。当然根据各企业的应用程序不同,黄金路径的组成部分也会有所区别,但通常遵循都相同的原则。
1. 仓库模板
仓库模板是开发者写代码的起点。它包含了让开发者快速开始所需的资源和配置。仓库模板应该是容易使用和理解的,同时符合企业要求。理想情况下,仓库模板被放在一个中央仓库服务上,让开发者可以轻松复制或修改。
2. 流水线
流水线是一系列的步骤,可以将代码构建并推送到生产环境。流水线应该包含所有企业认为必要的步骤,来确保代码是可信的。流水线应该是自动化且可靠的,同时具备可配置性和灵活性。理想情况下,流水线与仓库服务或中央流水线服务集成,开发者就可以轻松地触发或监控流水线。
3. 部署清单
部署清单是一组指令,描述了如何将应用程序部署到目标环境。它定义了应用程序运行所需的资源和配置。部署清单应该是声明式和幂等的。它也应该与目标环境保持一致和兼容。理想情况下,它应该使用一种标准格式或模板语言编写,让开发者可以轻松地自定义或参数化它。
4. 可观测性配置
可观测性配置是一组可以从应用程序收集和分析数据的设置。它定义了监控和排查应用程序所需的指标、日志、追踪和警报。可观测性配置具备全面性,同时与企业使用的可观测性工具和平台保持一致和兼容。理想情况下,可观测性配置嵌入在应用程序的代码或镜像中,或者提供为一个单独的配置文件。
构建黄金路径时需要考虑什么?
企业在为 IDP 构建黄金路径时,企业可以考虑这几个方面:
- 了解开发人员的需求和痛点:在设计和构建黄金路径之前,需要与开发人员进行沟通和调研,充分了解他们在开发过程中遇到的问题和挑战,以及他们期望从 IDP 中获得的价值和支持。这样可以确保黄金路径能够满足开发人员的实际需求,而不是强加给他们不适合或不必要的工具和流程。
- 制定清晰和简洁的指导原则:在制定黄金路径时,需要遵循一些指导原则,以便为开发人员提供清晰和简洁的指引。例如:
- 优先考虑自助服务:应该尽可能地提供自助服务的能力,让开发人员可以自主地获取和管理他们需要的资源,而不需要依赖运维或 DevOps 团队。这样可以提高开发人员的效率和灵活性,同时减轻运维或 DevOps 团队的负担。
- 提供合理的约束和选择:在提供自助服务的同时,也提供合理的约束和选择,以避免出现过度复杂或不一致的情况。例如,在 IDP 中预置一些模板或配置选项,让开发人员可以根据自己的需求进行选择或修改,而不需要从零开始编写代码或脚本。同时,黄金路径也可以设定一些安全和合规的规则和限制,防止开发人员使用不合适或不安全的资源或工具。
- 提供清晰和实用的文档、指导:在开发人员使用平台的过程中,黄金路径应当为开发者提供详细和易懂的说明,比如,如何使用平台上提供的资源和服务,如何遵循最佳实践,以及如何解决可能遇到的问题。
- 持续改进和更新:黄金路径应该根据开发人员的反馈和需求,持续改进和更新。例如,定期收集开发人员的意见和建议,分析他们的使用情况和满意度,找出平台的优势和不足。同时,也可以根据市场的变化和技术的发展,引入新的资源或工具,或者升级现有的资源或工具,以保持平台的先进性和竞争力。
黄金路径是一个新兴概念,旨在通过 IDP 提供定制和支持的方式来构建和部署特定类型的软件,而开发团队在平台工程团队的支持下可以加速开发过程,并降低复杂性。黄金路径对于企业及其开发团队的价值显而易见,但想要构建完美的黄金路径,企业仍需要不断在内部进行测试、部署、调整和迭代,以建立最佳实践和统一性。