在云原生时代,开发人员面临着越来越多的工具、技术、思维方式的选择,给他们带来了极大的认知负担和工作量。为了提高开发人员的开发效率与开发体验,一些头部科技公司开始建立自己的内部开发者平台(IDP)。在之前的文章我们有简单了解过 IDP 相关的基础概念。IDP 是一套由平台工程团队维护的工具和技术,让开发者能够更快更便捷地构建和部署软件。IDP 通过抽象化基础设施的细节和提供一致、标准化的工作方式来帮助减少软件开发的复杂性和运营成本。

当然,IDP 并不是一个适用于所有情况的万能解决方案,不同业务对应的要求、技术和架构也会有所不同。因此,IDP 需要为开发人员提供一些具备灵活性和可定制的选项,以便为他们的业务用例选择最佳方案。这就是黄金路径发挥作用的时候了。

在这篇文章中,我们将聊聊黄金路径究竟是什么,它的优势和特点有哪些,以及企业为 IDP 建立黄金路径时需要注意什么。

什么是黄金路径?

黄金路径(Golden Paths)是一种预先设置的架构和支持方法,用于在 IDP 上构建和部署特定类型的软件,是指导开发人员如何使用 IDP 的最佳实践。它可以涵盖从代码编写、测试、审查、集成、部署、监控等各个阶段的标准流程和工具。通过遵循黄金路径,开发人员不再需要学习用于创建该道路的技术的所有细节,由此开发人员的体验和生产力得以提升,应用程序的质量和可靠性也得到了保障。

黄金路径的优势

企业建立 IDP 后,开发人员终于拥有完全属于他们的自助服务平台,黄金路径则能够为开发者们提供一个拥有良好支持的开发路径。

黄金路径可以加速典型的应用开发用例。黄金路径能够提供资源库模板、流水线、部署清单以及可观测性配置,可以作为任何新项目的起点。而开发者们也因为不需要从头开始构建一切,也不用学习如何使用不同的工具和服务,大大节省了时间和精力。

与此同时,开发人员还能够参考并受益于黄金路径中的最佳实践和标准,从而提高代码的质量和配置的一致性。黄金路径体现了平台工程团队希望在整个企业组织内推广的标准和管理,例如代码质量、安全、测试、性能等到你。这些最佳实践能够帮助开发人员避免常见的陷阱和错误,确保他们开发的应用程序能够满足企业和客户的期望和要求。

在助力开发人员的同时,黄金路径也帮助平台工程团队更好地进行维护和支持。由于黄金路径可以确保所有的应用程序遵循相同的结构和格式,为应用程序的相关操作提供了更高的统一性,使得应用程序甚至是开发者平台变得更容易维护、排除故障和监控。这样还能够减少应用环境的复杂性和可变性,提高整个系统的稳定性与可靠性。同时,更好的统一性也能促进共享组件和接口的团队和项目之间的协作。

传统 DevOps 团队往往被繁琐的基础设施相关工作所牵绊。黄金路径则通过抽象繁琐的基础设施决策来减少操作负担,开发者们不必担心底层基础设施的复杂性和可变性,也不用考虑如何供应、配置、拓展活更新基础设施资源,专注于核心业务逻辑和战略,因为这些任务会由平台工程团队或工具自动化处理。这样一来,开发过程能够得到有效精简,同时人为错误及错误配置等风险得以降低。黄金路径还能够帮助企业更好地管理和控制平台上的资源和工具,减少冗余和浪费。

黄金路径的特点

黄金路径有一些共同的特点,使其有效和方便用户,根据 Raffaele Spazzoli 的观点,黄金路径的特点可以总结为以下:

  • 灵活可选。黄金路径的确为开发者及其他相关团队带来许多优势,但它不是 IDP 的唯一强制采用方式,而是需要留有余地,允许和促进创新。开发者们可以根据他们的需要和工作偏好,来选择是否使用黄金路径。

  • 高度透明。黄金路径将业务从底层复杂逻辑中抽象出来,开发人员也因此节省了学习底层技术和工具的时间。当然这种抽象并不是将底层基础设施掩盖起来,相反,在开发人员需要进行检查和细节修改时,这些底层技术是完全透明可见的。例如,如果黄金路径使用 K8s 作为部署平台,开发人员应当根据自身业务需求,无障碍阅读和编辑 K8s 清单。

  • 与时俱进。黄金路径会根据用户的反馈和技术环境的变化而逐步发展,同时生成并随时更新相应的文档、支持技术和治理机制。比如,如果发布了新版本的框架和库,黄金路径应当相应更新,并将变化传达给用户。

企业如何为 IDP 构建黄金路径

构建黄金路径需要平台团队和开发团队之间的合作。平台团队应提供实现黄金路径的基础设施和工具,而开发团队应提供塑造黄金路径的反馈和需求。

黄金路径的组成部分

根据 RedHat 的文章,黄金路径通常由四个关键部分组成:仓库模板、流水线、部署清单、可观测性配置。当然根据各企业的应用程序不同,黄金路径的组成部分也会有所区别,但通常遵循都相同的原则。

1. 仓库模板

仓库模板是开发者写代码的起点。它包含了让开发者快速开始所需的资源和配置。仓库模板应该是容易使用和理解的,同时符合企业要求。理想情况下,仓库模板被放在一个中央仓库服务上,让开发者可以轻松复制或修改。

2. 流水线

流水线是一系列的步骤,可以将代码构建并推送到生产环境。流水线应该包含所有企业认为必要的步骤,来确保代码是可信的。流水线应该是自动化且可靠的,同时具备可配置性和灵活性。理想情况下,流水线与仓库服务或中央流水线服务集成,开发者就可以轻松地触发或监控流水线。

3. 部署清单

部署清单是一组指令,描述了如何将应用程序部署到目标环境。它定义了应用程序运行所需的资源和配置。部署清单应该是声明式和幂等的。它也应该与目标环境保持一致和兼容。理想情况下,它应该使用一种标准格式或模板语言编写,让开发者可以轻松地自定义或参数化它。

4. 可观测性配置

可观测性配置是一组可以从应用程序收集和分析数据的设置。它定义了监控和排查应用程序所需的指标、日志、追踪和警报。可观测性配置具备全面性,同时与企业使用的可观测性工具和平台保持一致和兼容。理想情况下,可观测性配置嵌入在应用程序的代码或镜像中,或者提供为一个单独的配置文件。

构建黄金路径时需要考虑什么?

企业在为 IDP 构建黄金路径时,企业可以考虑这几个方面:

  • 了解开发人员的需求和痛点:在设计和构建黄金路径之前,需要与开发人员进行沟通和调研,充分了解他们在开发过程中遇到的问题和挑战,以及他们期望从 IDP 中获得的价值和支持。这样可以确保黄金路径能够满足开发人员的实际需求,而不是强加给他们不适合或不必要的工具和流程。

  • 制定清晰和简洁的指导原则:在制定黄金路径时,需要遵循一些指导原则,以便为开发人员提供清晰和简洁的指引。例如:

    • 优先考虑自助服务:应该尽可能地提供自助服务的能力,让开发人员可以自主地获取和管理他们需要的资源,而不需要依赖运维或 DevOps 团队。这样可以提高开发人员的效率和灵活性,同时减轻运维或 DevOps 团队的负担。
    • 提供合理的约束和选择:在提供自助服务的同时,也提供合理的约束和选择,以避免出现过度复杂或不一致的情况。例如,在 IDP 中预置一些模板或配置选项,让开发人员可以根据自己的需求进行选择或修改,而不需要从零开始编写代码或脚本。同时,黄金路径也可以设定一些安全和合规的规则和限制,防止开发人员使用不合适或不安全的资源或工具。
  • 提供清晰和实用的文档、指导:在开发人员使用平台的过程中,黄金路径应当为开发者提供详细和易懂的说明,比如,如何使用平台上提供的资源和服务,如何遵循最佳实践,以及如何解决可能遇到的问题。

  • 持续改进和更新:黄金路径应该根据开发人员的反馈和需求,持续改进和更新。例如,定期收集开发人员的意见和建议,分析他们的使用情况和满意度,找出平台的优势和不足。同时,也可以根据市场的变化和技术的发展,引入新的资源或工具,或者升级现有的资源或工具,以保持平台的先进性和竞争力。

总结

黄金路径是一个新兴概念,旨在通过 IDP 提供定制和支持的方式来构建和部署特定类型的软件,而开发团队在平台工程团队的支持下可以加速开发过程,并降低复杂性。黄金路径对于企业及其开发团队的价值显而易见,但想要构建完美的黄金路径,企业仍需要不断在内部进行测试、部署、调整和迭代,以建立最佳实践和统一性。

IDP中的黄金路径究竟是什么?的更多相关文章

  1. Spring3拦截引发的问题——WEB开发中的client路径

    什么是client路径? 第一类.也就是html或js文件等client訪问的文件里的路径,这里包含一些资源文件的引入(js.css还有各种图片等),或是跳转到静态html页面,总之获取的都是静态资源 ...

  2. Android中访问sdcard路径的几种方式

    以前的Android(4.1之前的版本)中,SDcard路径通过"/sdcard"或者"/mnt/sdcard"来表示,而在JellyBean(安卓4.1)系统 ...

  3. J2EE web项目中解决所有路径问题

    Java中使用的路径,分为两种:绝对路径和相对路径.归根结底,Java本质上只能使用绝对路径来寻找资源.所有的相对路径寻找资源的方法,都不过是一些便利方法.不过是API在底层帮助我们构建了绝对路径,从 ...

  4. Inno setup中定制安装路径

    我的程序修改了安装界面,所以我的界面中提供了更改安装路径的方法. 用户修改后的路径会被传回inno setup脚本,脚本中需要做的事情如下: 1,写一个函数,来返回新的安装路径,如: function ...

  5. web项目中,视图层中关于相对路径和绝对路径

    1.在jfinal项目中 因为一直使用的jfinal,没感觉路径问题. 举个栗子,项目名字叫做test.访问一个Controller的映射为/user/add.这样,在浏览器地址栏直接:localho ...

  6. servlet中的相对路径和绝对路径 及/, ./, ../的区别

    ./ 当前目录../ 父级目录/ 根目录资源寻找都是依靠路径,资源存储方式是按照哈希表运算的,所以路径的计算其实就是哈希值的计算. servlet中,所有路径的配置都要用绝对路径. 什么是绝对路径,就 ...

  7. java web项目中 获取resource路径下的文件路径

    public GetResource{ String path = GetResource.class.getClassLoader().getResource("xx/xx.txt&quo ...

  8. php读取出字符串中的img标签中的图片路径

    php读取出字符串中的img标签中的图片路径 $pageContents = '字符串,带img标签'; $pageContents = str_replace('\"','"', ...

  9. java工程中的相关路径

    一.路径 绝对路径: 指的是文件在系统中的真实路径(物理路径). 相对路径: 指的是文件相对某个目录的相对路径. 对于java application 工程来说,当编写完一个类之后,class文件会编 ...

  10. 【转】JSP中的相对路径和绝对路径

    1.首先明确两个概念: 服务器路径:形如:http://192.168.0.1/的路径 Web应用路径:形如:http://192.168.0.1/yourwebapp的路径 2.关于相对路径与绝对路 ...

随机推荐

  1. PCRaster安装

    改了很久才import成功.期间查了不少东西,虽然大部分没用上,但还是记录一下. PCRaster的安装和个人的最终解决方法 Software for environmental modelling ...

  2. C# IDataReader转换为Json

    1 /// <summary> 2 /// IDataReader转换为Json 3 /// </summary> 4 /// <param name="dat ...

  3. HTTP 协议相关

    一. HTTP常见请求头 1. Host (主机和端口号) 2. Connection (连接类型) 3.Upgrade-Insecure-Requests (升级为HTTPS请求) 4. User- ...

  4. git-bash打开自动执行某条命令的快捷方式创建

    "C:\Program Files\Git\git-bash.exe" -c "npm run dev" 创建一个快捷方式,在目标里面加上以上参数,然后运行. ...

  5. Go_day01

    Go基础语法 注释 注释是为了增强代码的可读性,不会参与程序的一切功能, go语言注释分为单行注释与多行注释 单行注释 //双斜杠 每行都要添加 // 多行注释 /* */ 一次标记多行注释输入 pa ...

  6. 【LeetCode回溯算法#07】子集问题I+II,巩固解题模板并详解回溯算法中的去重问题

    子集 力扣题目链接 给你一个整数数组 nums ,数组中的元素 互不相同 .返回该数组所有可能的子集(幂集). 解集 不能 包含重复的子集.你可以按 任意顺序 返回解集. 示例 1: 输入:nums ...

  7. Android--观察APP运行日志以及APP的工程目录结构解释

    运行日志 Log:d--便于跟踪调试 APP开发基础 APP的运行环境 第一种情况,就是在Android studio软件客户端上面使用模拟器运行APP 第二种情况,就是使用真实的手机运行APP程序 ...

  8. 刷爆 LeetCode 周赛 337,位掩码/回溯/同余/分桶/动态规划·打家劫舍/贪心

    本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 提问. 大家好,我是小彭. 上周末是 LeetCode 第 337 场周赛,你参加了吗?这场周赛第三题有点放水,如果 ...

  9. Salesforce LWC学习(二十) CLI篇:新版本不支持Audience解决方案

    本篇参考:https://github.com/forcedotcom/cli/issues/470 https://developer.salesforce.com/docs/atlas.en-us ...

  10. Maven 自动化构建

    一.Maven:是一款服务于 Java平台的自动化构建工具 [1]Maven可以将一个项目按模块划分成不同的工程,利于分工协作;[2]Maven可以将 jar包保存在自己的中央"仓库&quo ...