DevOps死了吗?平台工程能否取代DevOps?

news2024/11/15 9:07:09

最近, Scott Carey 发表了一篇调查文章,喊出了一些开发者的心声:“扯淡的DevOps,我们开发者根本不想做运维!”除此之外,软件工程师兼DevOps评论员Sid Palas也在推特上写道,“DevOps已死,平台工程才是未来。”

平台工程火了,DevOps真的走向末路了?服务了国内各个行业的Dev和Ops,我也想来说说自己的一点看法。

一、什么是DevOps?

说DevOps已死,我们得首先明确DevOps是什么?连是什么都不清楚,何来死了的说法。

这里的Dev,是广泛意义的资源的使用方,在不同的场景下有不同的角色,比如金融机构大多是软开团队,集团企业是子公司的技术人员,政务云是委办局的用户,行业云是被服务的企业,校园云是学校师生等。这里的Ops,也就是基础设施的建设方和资源的运维方。

DevOps是一个概念,是为解决Dev和Ops中间的鸿沟,加快应用开发和上线过程而提出的概念。传统的软件开发,Dev和Ops是隔离的,简单如下图:

那具体什么是DevOps?DevOps是希望Dev和Ops能够合作的更紧密,从而加速应用系统的开发、测试和发布过程。DevOps概念图如下:

DevOps发展这么多年,其实已经构建了非常强大的生态体系,“DevOps已死”难道是说,下图中的DevOps工具链的公司都死了?显然不是,这些DevOps工具链对软件研发上线效率提升起到很大作用。

那具体问题是什么呢?Scott Carey和Sid Palas为何会发出如此呼声?对于这块,我们骞云还是有很深刻的理解的,因为我们的平台,就是帮广义上的Dev用户更好的使用Ops提供的基础设施云资源。

二、国内Dev和Ops协作现状

为帮助大家理解,下面先介绍一下我们看到的绝大部分国内中大型企事业单位的Dev和Ops的情况。

过去几年,各家企业、组织都在投入大量时间和精力去建设云、上云以及采用更多的云。国内的云,包括了私有化的公有云,也包括容器云、超融合,还有安全云等等。

随着云的发展,应用架构也在不断的云化,分布式架构、微服务、无服务、多云应用架构更加普及。数字化让应用系统数量持续变多,单个应用系统需要的云资源类型和数量越来越多,上线和变更更加频繁。

可以看到,数字化让系统数量更多、数据更大、迭代速度更快,必然会推动IT复杂度的提升,整体IT系统的熵会越来越大。在数量和复杂度都不可避免增加的情况下,如何让系统更加有序成为企业眼下关注的焦点。

接下来我们看看整体的云的建设情况。近几年各家企业事业单位投入大量的时间精力金钱建设的大量的云,包括虚拟化、私有云、容器云、公有云,还包括大量的行业云,比如金融云、政务云、国资云、超算云,绝大部分的云都是由Ops团队来进行规划建设和运维,很多云的日常运维甚至交给了第三方外包团队或者MSP厂商。

让我们从广义的Dev视角来看看云是如何被使用的,以及Dev和Ops是否紧密合作了呢?广义的Dev人员包括了企业内Dev、应用系统的架构师、技术负责人、政务云的委办局、集团云的分子公司的技术人员。在我们接触过的上千家企事业单位中,大部门企事业的云服务,大概率在以下三个阶段之中:

1. 云资源是通过电话或电子邮件获取;

2. 云资源是通过工单(OA)申请,电话讨论来获取;

3. 云资源是通过标准化服务目录,电话讨论来获取。

可以看到,电话、微信、邮件是大部分Dev和Ops沟通的主要途径,人肉执行运维是主要手段。资源申请,提工单;资源变更,尽量不变,必须变化,则继续工单加电话。

这个方式在物理机,甚至虚拟化时期,尚能勉强维持运转。想象大部分项目就是在启动阶段,批量申请服务器,开通一下网络资源;项目启动申请,结束关闭,停止使用所有资源。一次申请几十台上百台的服务器,配置相同,大家对服务器理解相同,工单系统还能满足需求。如果后台人员还懂点Shell、Powershell、Ansible,甚至Terraform,其实这个过程还是可以挺快的。

在我们服务的几百个客户里,就有一个证券客户,前端ITSM、Ops团队自己开发了Powershell脚本,人工执行实现虚拟机的批量创建。这样通过OA、邮件、科管系统来申请资源的过程,会出现资源浪费严重,需要提前几天申请,需要外包团队加班开通资源等问题。但当Dev有了一堆的服务器,很多情况和Ops就没什么交集了。Dev拿到一堆的IP地址和访问信息,剩下的事情都是自己能搞定的。变更配置,打快照备份?Dev都自己想办法搞定吧。

随着应用架构的云化,资源的使用从以单一云服务器,变成采用更多的云产品。随着大云(类似AWS这样有着数百种云服务的云平台)的深入采用,直接使用云产品而不是自己去构建各种基础服务,成为持续提升研发和运维人效,增强系统可扩展性、可运维性的关键。最普遍的,虚拟机里面安装MySQL变成了云平台的RDS MySQL;NAS变成了对象存储等。

我们有一客户,上百个自研的系统,用到云平台提供数据库、中间件、安全、大数据等数十种服务。大家可以脑补一下,每个不同的应用的部署架构都不一样,相同的应用,在开发、测试、UAT、生产、部署架构、底层资源方面也可能不一样。于是Dev和Ops之间如何协作变成了云化应用架构转型过程中的一个关键问题。

遇到这样的问题,大部分企业Ops的想法是,云不是提供了多租户能力,自服务能力吗?我给每个Dev都创建账号,让他们自己想怎么用就怎么用,Ops只要确保底层资源够多,够稳定就行。这其实也是大部分人的原始想法,甚至是不少专业运维人员的想法。

这个就是让每个Dev尽量变成云运维人员,了解企业内部的网络规划,了解企业的IT规范,更深入地了解众多云产品的运维底层逻辑,使用资源时都按照企业的规范来用,其实这些都需要Dev承担更多的运维责任。

考虑到绝大部分企业都不止一朵云(一种类型,部署几套,其实是几朵云),少的三四朵,多的七八朵,不仅责任重大,还非常低效,易出错,因此有人喊出了“Dev不想变成Ops”的口号。

于是,我们也有客户,觉得基础设施即代码挺好的,Dev不是会写代码吗,让每个人都自己写Terraform,Ops只要审批就够了。理想很丰满,现实很骨感,能写好Terraform的人,对云的Ops的理解,比在云平台界面上直接操作要求还高。要会用IaC,不但得知道Terraform,还得知道云,但现实是大部分Dev,两个都不懂,所以Dev也做不了Ops。

三、ITIL框架支持的DevOps

DevOps发展这么多年,其实一直都是要加强Dev和Ops的协作,提升协作效率,减少人肉响应。从来没有Dev变成Ops,或者Ops变Dev,因为两个领域需要完全不同的技能、知识。

了解ITIL的朋友们会发现,其实更好地服务资源的使用方(Dev)也是ITIL的目的。Dev是IT的使用部门,云是IT部门管理的资源,ITIL是让IT更好地服务使用部门的。因此当我们看到ITILv4在拥抱Agile,支持DevOps时,我们不禁会惊叹,这个发展了超过40年的概念,也在积极寻求如何让Ops更好地服务Dev。

如果用CMMI成熟度体系来度量Dev和Ops的合作,我们可以清晰地看到,完全依靠电话或邮件的交互方式,IT管理成熟度仅处于初始级别,工单系统的出现,IT管理进阶至Level 2级别,有了最基本的记录和管理。但Dev和Ops合作下的IT服务管理水平仍存在着巨大的上升空间。

四、平台工程是DevOps的替代还是新瓶装旧酒?

2023年,Garter年在其发布的十大战略技术趋势中提出了一个新的概念——平台工程。具体来说,平台工程是用来构建和运营支持软件交付,和生命周期管理的自助式开发者平台的机制和架构。平台工程的目标是优化开发者体验并加快产品团队为客户创造价值的速度。

如此描述,似乎说了很多,但又感觉什么也没说。但凡熟悉HP OpenView(知道这名字的都暴露年龄了)、VMware vRealize的行业人士都会觉得平台工程就是新瓶装旧酒。

为什么这样说呢?回顾前两年Gartner提出的概念——CMP,CMP的核心能力如下图所示,简单来说就是一个平台,通过服务目录,提供资源的自服务、监控告警的自服务等能力,并且这些能力都是通过部署和编排来实现的。听上去是不是和平台工程很相近?

那CMP是前几年才出现的全新的形态吗?也不是,CMP是围绕云如何使用的完整场景提出来的总结概念,虽然大部分人肤浅地认为多个云需要一个界面所以需要CMP。

可以比较一下,VMware的vRealize产品线,完整的目标也是构建DevOps-Ready的IT,vRealize产品线最初的产品远早于CMP概念的提出。(偷偷吐槽一下,vRealize在VMware是云管理产品线,但Gartner不认为vRealize是CMP,后来又提出了云管理工具的MQ,囊括了vRealize、Datadog、Terraform等更多的产品形态)

说到ITIL,就不能不提ServiceNow。ServiceNow成立20年,是世界第二大SaaS公司,其旗舰产品NowPlatform,不断的从传统IT基础设施过渡到云基础设施,从传统的ITSM发展为具备新型的DevOps能力,面向Dev构建更加强大的云基础设施的自服务能力。

从下图可以看到,ServiceNow也有对云资源的自服务和自动化的能力,这也是平台工程的核心。

如果将平台工程比作成一座冰山,那么其提供的自服务能力则是Dev感受到的能力的水上部分,为了支持自服务,平台工程需要具备类似ServiceNow平台的服务设计、治理、自动化、监控自服务、资源发现等一系列能力。

五、DevOps没死,平台工程是为了更好的DevOps而生

既然类似平台都出现那么多年了,为何Gartner却将平台工程列为2023年十大战略技术趋势之一呢?

个人认为有以下几方面原因:VMware的用户,采用vRealize (主要是vRealize Automation的能力)的还是少数,更何况在多云环境(国外的云,主要是公有云)下,大部分用户都还没有用。而大部分ServiceNow的用户,使用的还是其ITSM和CMDB的能力。国内的情况,更是大部分企业Ops团队还在建设传统的CMDB、ITSM、面向运维的监控告警等基础能力的阶段。

在应用不断上云的过程中,Dev和Ops的协作出现了更加明显的瓶颈,于是Gartner就老生常谈了这个问题,并指出我们需要平台工程来串联Dev和Ops。

无论是VMware vRealize、ServiceNow Now Platform, 还是骞云的运维服务平台,都是帮助我们的用户,打通资源的使用方和资源运维方,确保在安全、合理、合规的情况下,让Dev更加快速地获取所需要的资源,或者更进一步,专注应用层,减少管理资源层的负担。

现在,我们可以回答文章开头的疑问了,DevOps其实没死,平台工程也不是新的,两者并不存在矛盾关系,甚至在某种程度上我们可以说,平台工程是为实现更好的Dev和Ops的协作而生。

这次给大家介绍了DevOps的状况,以及为什么会出现平台工程。下一期我们会讨论平台工程是如何建设的,具体需要哪些能力。敬请期待!

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

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

相关文章

C++知识点 -- 特殊类设计

C知识点 – 特殊类设计 文章目录 C知识点 -- 特殊类设计一、不能被拷贝的类二、 只能在堆上创建对象的类三、 只能在栈上创建对象的类四、 不能被继承的类五、 只能创建一个对象的类(单例模式)1.饿汉模式2.懒汉模式3. 单例对象释放问题: 一、…

【Python入门篇】——Python中判断语句(布尔类型,比较运算符,if语句)

作者简介: 辭七七,目前大一,正在学习C/C,Java,Python等 作者主页: 七七的个人主页 文章收录专栏: Python入门,本专栏主要内容为Python的基础语法,Python中的选择循环语句…

Verilog 编程——奇偶分频(50%占空)

引言 最近准备一些笔试面试,想再把时钟奇偶分频的再整理一下。 我之前写过一个PWM产生的模块,里面有任意频率/占空比的时钟生成。可以参考: 基于FPGA的PWM发生器设计https://blog.csdn.net/qq_43045275/article/details/128365705?ops_re…

Scala学习(一)

1.什么是Scala Scala将面向对象和函数式编程结合成一种简洁的高级语言。Scala的静态类型有助于避免复杂应用程序中的错误。 1.1 为什么要学习Scala? Spark基于内存的大数据计算框架,而Spark就是Scala开发的。所以为了学习好Spark需要掌握Scala语言。 …

learn C++ NO.3 ——类和对象(1)

1.初步理解面向过程和面向对象 C语言是面向过程的高级编程语言,而C是面向对象的高级编程语言。那么两者有什么区别呢?且看下图分析。 面向过程语言就是逐步拆分并解决问题。其特点是过程化和模块化,数据和对数据的操作是分离的。 由于面向过…

《LeetCode》—— 哈希

今天刷题讲解的主要讲的是关于——哈希这个知识点的题目讲解。 目录 (一)缺失的第一个正整数 (二)数组中只出现一次的两个数字 1、直接法 2、哈希 (三)直线上最多的点数 (一)缺…

力扣题库刷题笔记735-行星碰撞

1、题目如下: 2、个人Python代码实现 个人代码思路,主要是新建一个列表stack,将原列表asteroids中的元素依次加入到stack中。以上代码可能会有两部分比较冗余的部分,一是两个标志位可以不用单独声明,二是当stack列表中…

解析内存中的高性能图结构

在进行各种图处理、图计算、图查询的时候,内存或是硬盘中如何存储图结构是一个影响性能的关键因素。本文主要分析了几种常见的内存图结构,及其时间、空间复杂度,希望对你有所启发。 通常来说,对于图结构的几种常见的基础操作&…

通过SSH隧道安全消费Kafka数据

一.背景 由于我们有个业务在阿里云部署了Kafka,但是想直接在本地IDC机房服务器直接通过公网消费Kafka进行业务处理。这个本来也不是什么难事,阿里云把9092默认端口打开运行访问即可,也不不值得再写这篇博客了。 这个事情让人特别关注的一个主…

【记录】ChatGPT|图片预览魔法咒语魔改,使用 ChatGPT 返回大量可以跳转的链接

很早的时候,我已经留意到 ChatGPT 会以返回图片的 markdown 格式来显示图片,很可能拥有一定的图片上传功能,但是它往往会显示得有些问题。一些代码图片之类的或者风景图什么的都不是很会。 但其实 ChatGPT 是可以直接返回图片类型的回复的&a…

C++初始化列表

1.初始化列表概述 初始化列表:以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个"成员变量"后面跟一个放在括号中的初始值或表达式。 2.为什么使用初始化列表 在创建对象时,编译器通过调用构造函数&#xff0c…

个人电脑操作系统

UEFI(Unified Extensible Firmware Interface,全称统一的可扩展固件接口)是一种个人电脑系统规格,用来定义操作系统与系统固件之间的软件界面,作为BIOS的替代方案。其前身是Intel在1998年开始开发的Intel Boot Initiat…

【static_cast、reinterpret_cast、const_cast、dynamic_cast】C++类型转换

C类型转换 引入C语言中的类型转换 C的强制类型转换static_castreinterpret_catconst_castdynamic_cast向下转型的安全问题 explicit4种类型转换的应用场景 RTTI 引入 C语言中的类型转换 C语言和C都是强类型语言,如果赋值运算符左右两侧变量的类型不同,…

ChatGPT一键私有部署,全网可用,让访问、问答不再受限,且安全稳定!

前言 ChatGPT由于在访问上有一些限制,使用并不便利。目前国内可以直接访问的大部分是调用API返回结果,我们去使用时总会有次数限制,而且它们可能随便崩掉。 其实,目前我们访问过的大部分国内的网页包括UI,其实是套用了…

过滤器对前端请求参数进行解码URLDecoder,接口接收参数类型为map,解码无效问题

文章目录 一、前言二、设计思路三、代码实现四、启动测试五、过滤器解码无效六、源码跟踪七、解决方案八、再次重启测试九、总结 一、前言 最近做的一个公司项目,因为客户需要对特殊字符做搜索,但是前端的请求参数无法传递到后端,所以前端对…

VS2017中Qt项目数据库连接——包含报错比如QMYSQL driver not loaded(细心看到最后,一定能解决你想解决的问题)

我把爆的错误QMYSQL driver not loaded写在文章末尾了,大家看一看!前面是配置数据库 一、测试 VS2017 中 Qt 项目数据库连接 打开 VS2017,文件——新建项目,右侧输入框输入 Qt 确定后点击下一步,勾选模块 基类也是默…

RSU路测单元,你知道多少?

一、什么是RSU路测单元? RSU路测单元是实现智慧的路、车路协同的关键设备,设置在路侧,与附近过往车辆进行双向通信、交互数据,是智能交通系统中的一种重要设备。RSU可以连接路面原有电子设备,比如信号灯和摄像头&…

一文解决Xshell无法连接vmware上的centos

问题描述 win10系统上安装VMware workstation16 pro,装好后安装centos虚拟机,在设置network & hostname时选择的NAT模式,即使用自定义的网关和IPv4地址,最后配置完成后centos主机地址信息如下,在虚拟机内部进行pi…

【一览无余】Vue框架下Cesium加载遥感地图使用GeoServer切割TIF大文件对外发布WMS服务进行地图绘制(科普篇2/2)

【一览无余】Vue框架下Cesium加载遥感地图使用GeoServer切割TIF大文件对外发布WMS服务进行地图绘制(科普篇2/2) 二、Cesium是弄啥嘞2.1 WebGL2.1.1 WebGL是什么2.1.2 WebGL优点 2.2 Cesium是什么2.3 Cesium能干什么2.4 Cesium相关工具有哪些2.5 相关案例…

Echarts 3D散点图

文章目录 以下是一个 html echarts的案例 <!DOCTYPE html> <html> <head><meta charset"utf-8"><title>ECharts 3D Scatter Plot Demo</title><!-- 引入 ECharts --><script src"https://cdnjs.cloudflare.com/…