DevOps 演进:如何通过内部开发者平台(IDP)实现开发人员自助服务

自助服务是开发人员更快更好地创新的一种方式,同时降低业务风险。以下是设置内部开发平台 (IDP) 时该做什么和不该做什么。

如何实现开发人员自助服务是越来越多的企业目前正在努力的方向(也被熟知为平台工程),他们将其作为最大限度地提高软件工程师的工作效率和工作满意度的一种手段。对于已经采用 DevOps 的企业来说,开发人员自助服务代表着下一个发展步骤,因为它可以帮助企业的开发团队提高 DevOps 实践的效率。

实现开发人员自助服务最明显的解决方案则是部署内部开发者平台(IDP)。越来越多的 IDP 可帮助企业按需向开发团队及时提供各种技术解决方案。

因此,IDP 当然是有效的开发人员自助服务战略的一个组成部分。然而,为开发团队实现自助服务功能比简单地部署一个自助服务平台就完事要复杂得多。企业还需要满足长期维护平台、更新平台以跟上不断发展的云技术、管理质量等要求。如果不提前考虑这些挑战,部署的内部开发人员平台就有可能无法实现其最大潜在价值

在本篇文章中,我们将一同探讨企业在进行开发人员自助服务计划时可能遇到的五大挑战,以及如何应对这些挑战的技巧。

01 开发人员自助服务的意义和产生原因

在深入探讨挑战之前,我们先来了解一下开发人员自助服务的含义以及它给开发人员和企业带来的好处。

简单地说,开发人员自助服务是一种模式,在这种模式下,软件工程师可以创建提高工作效率所需的服务和环境,而无需请求或等待 IT 部门来设置解决方案。通常情况下,开发人员使用企业自助服务平台来实现这一目标,该平台提供各种现成的、官方支持的解决方案,例如,允许开发人员快速、轻松地启动 Kubernetes 集群的服务,或者使用经认可的工具创建 CI/CD 流水线的服务。

当开发人员能够按需快速获取所需资源时,他们就能更高效地工作,而不会使工作流程陷入瓶颈。这将提高工作满意度,更不用说为企业带来更快的创新。

开发人员自助服务还有助于降低 "shadow IT "的风险,即开发人员未经官方许可而启动的资源。如果企业允许开发人员自助服务并提供现成的开发人员解决方案,软件工程师就不必再创建可能不符合企业 IT 政策的定制服务和环境,而且这些服务和环境很可能因为 IT 部门不知道它们的存在而最终处于无人管理和处于不安全的状态。

此外,开发者自助服务模式可以帮助企业扩大专业劳动力的规模。例如,许多企业的员工中几乎没有 Kubernetes 专家。通过让这些专家创建 Kubernetes 解决方案,然后开发人员可以根据需要启动这些解决方案,企业可以让专家更高效地工作,因为专家不需要为每个开发团队或需求创建定制的 Kubernetes 环境。

对 Kubernetes 缺乏深入了解的开发人员也不必花费大量时间来尝试创建环境。同样的逻辑也适用于网络工程师、系统管理员和任何其他类型的专家,他们的知识在整个企业中都有很高的需求。

简而言之,开发者自助服务是开发者更快、更好地创新、同时降低业务风险的一种方式

02 五大挑战与解决方案

决定为开发人员提供自助服务平台是一回事。由于面临以下挑战,确保平台提供应有的价值又是另一回事。

与开发者面临的挑战不相符的平台

创建良好的自助开发人员解决方案最常见的挑战可能是解决方案无法真正解决开发人员痛点的风险

之所以会发生这种情况,是因为设计和构建自助服务平台的人员并不总是开发人员,或者不能代表整个企业的开发团队。因此,他们不知道开发人员真正需要什么才能提高工作效率。

减轻这种风险的最佳方法是将您的自助服务平台视为一个产品,并为其分配一名(或多名)产品经理。这种方法确保有人负责根据平台的“客户”(组织中的开发人员)需要做什么来准确评估平台应该做什么。否则,您可能会冒着构建听起来很有趣但开发团队并不真正需要的解决方案的风险。

保持质量

确保自助服务平台符合质量要求是另一个常见挑战。低质量的工具和服务、工具之间的兼容性问题等都会妨碍自助服务体验,削弱自助服务平台的价值。如果您的开发人员不得不花时间修复您提供给他们的解决方案,那么自助服务模式就无法带来应有的好处。

应对这一挑战的方法之一是为自助服务解决方案创建自动化测试。例如,您可以编写一个自动测试,启动平台的一个解决方案,然后评估它是否按预期运行。如果每周左右运行一次这些测试,就能及早发现问题,确保开发人员不会被平台错误或其他问题打断。

更广泛地说,指派产品经理处理自助服务问题有助于提高质量。产品经理可以与开发人员对接,收集他们在平台上遇到的问题的反馈,然后监督这些缺陷的缓解情况。

自助服务平台维护

即使您的开发人员自助服务平台质量很高,如果没有人指派维护它,随着时间的推移,它也可能会崩溃。它包含的解决方案可能会随着时间的推移而发生变化,从而导致需要通过更新解决的支持或兼容性问题。您可能还想向平台添加新的解决方案,这需要维护和更改请求流程。

同样,拥有一名产品经理将有助于确保自助服务平台获得所需的维护。理想情况下,您还应该为该平台分配一个开发团队,以便在需要时进行更改。

成本问题

一个实施良好的开发人员自助服务平台可以让开发人员更高效地工作,从而节省开支。然而,与其他 IT 资源一样,平台本身的构建和运行也需要成本,如果不从战略角度考虑如何优化成本,就可能会发现自助服务解决方案超出了预算。

这里的解药就是为自助服务平台制定成本管理和优化战略,就像为其他对企业成本有重大影响的解决方案制定成本管理和优化战略一样。换句话说,重要的是要考虑内部开发人员平台计划所带来的收益和成本

缺乏参与度

最后,您可能会遇到这样的难题:您创建了一个自助服务平台,但您的开发人员实际上并不使用它,因为他们不知道它,也不了解它的价值。在企业中,"建起来,他们就会来 "的做法很少奏效。

要避免这种挑战,就要确保您的自助服务平台能真正解决开发人员的痛点。向开发人员宣传解决方案,并通过出色的文档和部署指南使其非常易于使用,这也将极大地鼓励开发人员充分利用现有的自助服务解决方案。

03 总结: 从开发人员自助服务中获得更多

决定为开发人员提供自助式解决方案是将开发工作流程提升到新水平的第一步。但是,正如采用 CI/CD 流水线并不能自动保证 DevOps 所应提供的所有好处一样,仅仅建立一个自助服务平台也不能保证开发人员能够享受到自助服务模式所带来的生产力优势。

但是,当您对开发人员自助服务所面临的挑战进行规划时,您就可以克服潜在的弱点,创建一个能为您的开发团队带来最大价值的自助服务解决方案。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/660044.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

zookeeper(2) 服务器动态上下线监听和分布式锁案例

案例一:服务器动态上下线监听 某分布式系统中,主节点可以有多台,可以动态上下线,任意一台客户端都能实时感知 到主节点服务器的上下线。 1.服务端代码 package com.atguigu.case1;import org.apache.zookeeper.*;import java.io…

C++ //练习 3.28 下列数组中元素的值是什么?

C Primer(第5版) 练习 3.28 练习 3.28 下列数组中元素的值是什么? string sa[10]; int ia[10]; int main(){string sa2[10];int ia2[10]; }环境:Linux Ubuntu(云服务器) 工具:vim 解释 sa中…

微信小程序在线客服源码系统:聊天记录云端实时保存 带完整的搭建教程

微信小程序已经成为企业开展线上业务的重要渠道。然而,在小程序中提供客户服务需要解决聊天记录的存储与查询问题。传统的客服系统往往只能在本地保存聊天记录,一旦客户端出现问题,聊天记录可能会丢失,给企业带来巨大的损失。为了…

双屏联动系统在展厅设计中的互动类型与效果

随着各项多媒体技术的快速发展,让展厅中的各类展项得到技术升级,其中作为电子设备中最基础的显示技术,不仅优化了内容的展示质量,还实现了更具互动性的创新技术,如双屏联动系统就是当前展厅设计中最常见的技术类型之一…

单据报表增加保存按钮(将单据报表的数据保存到后台表)

单据报表增加保存按钮 📣1. 需求 新建一张要存储保存数据的后台把,查出当月数据以后,可以点击保存按钮将当前月份的数据保存到后台表中。如果后台表中没有当前月份的数据,则直接保存到后台表中;如果后台表中有当前月份…

【C++】类和对象(1)

上节我们学习了C入门的一些语法知识,这篇博客来学习类和this指针。 目录 面向过程和面向对象的初步认识 类的引入 类的定义 类的访问限定符及封装 访问限定符 封装 类的作用域 类的实例化 类对象大小 this指针 this指针特性 面向过程和面向对象的初步认识…

UG949 适用于 FPGA 和 SoC 的UltraFast 设计方法指南

使用RTL创建设计 定义RTL设计层级 模块边界输出进行寄存 即寄存器输出,打一拍 IP的使用 AMBA AXI

c# Newtonsoft.Json 序列化和反序列化

1.安装 Newtonsoft.Json Nuget包 在C#中,你可以使用Newtonsoft.Json库来进行对象的序列化和反序列化,下面是一个简单的示例: using Newtonsoft.Json; using System;// 定义一个示例类 public class Person {public string Name { get; set; …

AI 原生时代的云计算

本文整理自2023年 12 月 20 日举办的「2023 百度云智大会智算大会」主论坛,百度副总裁谢广军的主题演讲《AI 原生时代的云计算》。 (视频回放链接:https://cloud.baidu.com/summit/aicomputing_2023/index.html) 大模型的到来&…

安卓之代码检查工具优劣分析以及应用场景

一、引言 代码检查工具在Android应用开发中是不可或缺的一部分,它们旨在提高代码质量、强化编程规范、消除潜在bug、提升应用性能和安全性。诸如Checkstyle、FindBugs、Infer、PMD和Android Lint等一系列工具各具特色,应用于不同的开发环节,有…

Leetcode—807. 保持城市天际线【中等】

2024每日刷题&#xff08;一零四&#xff09; Leetcode—807. 保持城市天际线 实现代码 class Solution { public:int maxIncreaseKeepingSkyline(vector<vector<int>>& grid) {int n grid.size();vector<int> row(n);vector<int> col(n);int a…

代理模式详解(重点解析JDK动态代理)

- 定义 在解析动态代理模式之前&#xff0c;先简单看下整个代理模式。代理模式分为普通代理、强制模式、动态代理模式。其中动态代理模式主要实现方式为Java JDK提供的JDK动态代理&#xff0c;第三方类库提供的&#xff0c;例如CGLIB动态代理。 代理模式就是为其他对象提供一种…

ArcGIS学习(二)属性表的基本操作

ArcGIS学习(二)属性表的基本操作 1.查看属性表 ArcGIS是处理空间数据的平台。对于空间数据,大家可以理解成它是由两个部分构成:1.一个是空间形体,也就是点、线、面三种。线又可以分为直线、曲线,面又分为圆形、正方形、不规则形体等;2.另外一个部分是空间形体所附带的…

nginx升级openssl3.1.3

nginx版本 1.24.0 openssl版本3.1.3 进入nginx源码目录执行./configure --prefix/usr/local/nginx --without-http_rewrite_module --with-http_stub_status_module --with-http_ssl_module --with-openssl/usr/local/src/openssl-3.1.3make这一步可能会报错, 我的是报后缀名为…

分布式锁(Distributed Lock)介绍(基于数据库(mysql);基于缓存(redis);基于ZooKeeper等分布式协调服务)

文章目录 分布式锁介绍1. 分布式锁的工作原理1.1 锁的基本概念1.2 工作机制 2. 分布式锁的实现方式2.1 基于数据库的分布式锁2.2 基于Redis的分布式锁2.3 基于ZooKeeper的分布式锁 3. 分布式锁的挑战3.1 死锁问题3.2 锁粒度问题粗粒度锁细粒度锁锁粒度的选择 3.3 锁的公平性问题…

关于Spring框架的 @Configuration 与@Service 加载顺序哪个先后(某些环境加载是随机的)

很多资料都说Configuration 优先加载&#xff0c;Service后加载&#xff0c;如下图&#xff1a; 本来也是以为 Configuration 优先加载于 Service &#xff0c;那参数处理放在Configuration注入完后&#xff0c;service构建时就可以拿来用的&#xff0c;在我在IDEA的调试时下断…

喜讯 | 经纬恒润整车电子电气测试实验室通过一汽研发总院外部实验室资质认证!

近日&#xff0c;经纬恒润整车电子电气测试实验室成功通过中国一汽研发总院的资质评定&#xff0c;获得外部实验室认可证书。这是继经纬恒润测试实验室获得一汽智能网联开发院车载以太网测试资质认证之后的又一次认可&#xff0c;它将拓宽经纬恒润与红旗新能源及相关零部件供应…

实现可编辑excel

需要花钱买的插件有这个 SpreadJS 要在Vue项目中创建可编辑的Excel页面&#xff0c;你可以使用一些Vue插件和库帮助你实现此功能。以下是一个简单的步骤指导&#xff1a; 安装所需的依赖项&#xff1a; 在你的Vue项目目录下&#xff0c;使用以下命令安装xlsx和vue-xlsx库&…

sqlite 存放json数据

在SQLite中存放和查询JSON数据&#xff0c;你可以使用SQLite内置的JSON支持&#xff08;从SQLite版本3.9.0开始引入的JSON1扩展&#xff0c;以及在后续版本中增强的功能如JSON函数和操作符&#xff09;。下面是如何在SQLite中存放和查询JSON数据的步骤&#xff1a; 创建表格并…

【SparkML实践5】特征转换FeatureTransformers实战scala版

本节介绍了用于处理特征的算法&#xff0c;大致可以分为以下几组&#xff1a; 提取&#xff08;Extraction&#xff09;&#xff1a;从“原始”数据中提取特征。转换&#xff08;Transformation&#xff09;&#xff1a;缩放、转换或修改特征。选择&#xff08;Selection&…