IDP中的黄金路径究竟是什么?
在云原生时代,开发人员面临着越来越多的工具、技术、思维方式的选择,给他们带来了极大的认知负担和工作量。为了提高开发人员的开发效率与开发体验,一些头部科技公司开始建立自己的内部开发者平台(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中的黄金路径究竟是什么?的更多相关文章
- Spring3拦截引发的问题——WEB开发中的client路径
什么是client路径? 第一类.也就是html或js文件等client訪问的文件里的路径,这里包含一些资源文件的引入(js.css还有各种图片等),或是跳转到静态html页面,总之获取的都是静态资源 ...
- Android中访问sdcard路径的几种方式
以前的Android(4.1之前的版本)中,SDcard路径通过"/sdcard"或者"/mnt/sdcard"来表示,而在JellyBean(安卓4.1)系统 ...
- J2EE web项目中解决所有路径问题
Java中使用的路径,分为两种:绝对路径和相对路径.归根结底,Java本质上只能使用绝对路径来寻找资源.所有的相对路径寻找资源的方法,都不过是一些便利方法.不过是API在底层帮助我们构建了绝对路径,从 ...
- Inno setup中定制安装路径
我的程序修改了安装界面,所以我的界面中提供了更改安装路径的方法. 用户修改后的路径会被传回inno setup脚本,脚本中需要做的事情如下: 1,写一个函数,来返回新的安装路径,如: function ...
- web项目中,视图层中关于相对路径和绝对路径
1.在jfinal项目中 因为一直使用的jfinal,没感觉路径问题. 举个栗子,项目名字叫做test.访问一个Controller的映射为/user/add.这样,在浏览器地址栏直接:localho ...
- servlet中的相对路径和绝对路径 及/, ./, ../的区别
./ 当前目录../ 父级目录/ 根目录资源寻找都是依靠路径,资源存储方式是按照哈希表运算的,所以路径的计算其实就是哈希值的计算. servlet中,所有路径的配置都要用绝对路径. 什么是绝对路径,就 ...
- java web项目中 获取resource路径下的文件路径
public GetResource{ String path = GetResource.class.getClassLoader().getResource("xx/xx.txt&quo ...
- php读取出字符串中的img标签中的图片路径
php读取出字符串中的img标签中的图片路径 $pageContents = '字符串,带img标签'; $pageContents = str_replace('\"','"', ...
- java工程中的相关路径
一.路径 绝对路径: 指的是文件在系统中的真实路径(物理路径). 相对路径: 指的是文件相对某个目录的相对路径. 对于java application 工程来说,当编写完一个类之后,class文件会编 ...
- 【转】JSP中的相对路径和绝对路径
1.首先明确两个概念: 服务器路径:形如:http://192.168.0.1/的路径 Web应用路径:形如:http://192.168.0.1/yourwebapp的路径 2.关于相对路径与绝对路 ...
随机推荐
- python3判断ip类型
利用socket库附带的校验功能实现校验.
- PHP 合并两个二维数组
思路:遍历二维数组,合并两个二维数组的值,赋值给新数组 function mergeArray($arr1,$arr2){ $newArr = []; foreach($arr1 as $v1){ f ...
- MySql数据库的两大引擎InnoDB和MyIsam的区别
事务方面 InnoDB支持事务,MyISAM不支持事务.MySql的默认存储引擎为InnoDB 外键方面 InnoDB支持外键,MyISAM不支持,对一个包含外键的InnoDB表转为MYISAM会失败 ...
- ngix安装与使用
主要是nginx的安装使用, 至于原理 1. 安装nginx(以及两个tomcat) 2. 使用nginx(测试负载均衡) 想要搭建的测试环境, 1.两个tomcat, 端口分别是80和8090(因为 ...
- Centos 7配置使用nginx反向代理mysql
背景:由于WEB服务和MySQL数据库服务分开部署的,由于网络问题限制,有时需要通过中间代理服务器跳转连接MySQL,所以需要在中间服务器上配置代理. 1.添加stearm模块 # nginx通常代理 ...
- Spark基础实验七
今天在做实验七,最开始有许许多多多的错误,最后通过查找.问同学才知道是数据集的格式和存放位置的原因. 就在好不容易解决了上一个错误,下一个错误就立马而来,错误如下: 目前还未找到解决办法,spark实 ...
- 2020寒假学习笔记13------Python基础语法学习(二)
同一运算符 同一运算符用于比较两个对象的存储单元,实际比较的是对象的地址. 运算符 描述 is is 是判断两个标识符是不是引用同一个对象 is not is not 是判断两个标识符是不是引用 ...
- 我的合肥 .NET 俱乐部线下活动之旅
一:背景 我是一个性格比较内向的人,天然抵触这种线下面对面的大型活动,我害怕上台之后紧张到语无伦次(有过类似经历),越语无伦次又会让我更紧张,刚好谋得程序员这种工作又特别适合我这种性格的人,所以没有刻 ...
- R语言网络数据爬虫之三个问题
现在大家对爬虫的兴趣不断高涨,R和PYTHON是两个非常有力的爬虫工具.Python倾向于做大型爬虫,与R相比,语法相对复杂,因此Python爬虫的学习曲线会相对陡峭.对于那些时间宝贵,又想从网上获取 ...
- [软件工程/数据工程] 软件工程&数据工程知识体系
1 概述 本篇是为了重新总结.重新编写5年前(2018-12-31 00:06),临近毕业时的一篇文章软件工程专业知识体系[求职/就业]而作,至此篇文章发布时,原文文章应已被删除.但第1章节中仍会存在 ...