云时代的运维正是不折不扣的架构师

news2024/10/5 14:46:18

1、引言

上学那会,每当作文中引用到张良这个典故,总喜欢用 “运筹帷幄之中,决胜千里之外” 来赞美张良雄才大略,指挥若定,现在还让我用的话,我会把这句话送给运维同学。

2013年左右,一朋友在某某国企做运维,除了拆机、装机、做系统、协助领导上网站、打印资料..... 工作相对软件公司的运维还是相当清闲,可以愉快的喝茶聊天发呆,偶尔也可以学点自己想学的技术充实自己,直到有一次,领导办公室的灯泡坏了,让它去修下,他感觉以前干的活跟电脑沾点关系,而修灯泡只跟电有关系,次日提交离职报告,发誓去远方追梦。

2、传统运维职责

传统模式下的运维一般要承担很多工作:物理机管理、应用部署、网络架构、dba等等,运维往往是个多面手,因为什么都干,所以看起来更像是一个打杂人员,定位比较尴尬,往往不能得到公司领导的重视。

关于薪资,相对来说运维人员的工资没有程序员的工资高,毕竟工作强度不是一个量级。

关于技术,对于运维人员来说,并不需要深入理解某某编程语言,掌握某某核心技术,出了问题,只要肯看日志,愿意谷歌,几乎可以解决80%的问题。

关于程序员和运维的关系,很多人把运维调侃成一个 “背锅” 角色,我觉得一般情况下让运维背锅并不容易,背锅这种事情还跟运维人员的自身技术有关系,只要技术运用娴熟,运维人员有理有据的甩锅也是常规操作。

类比于工业时代,传统运维人员只需能够驾驶着别人制造的列车前进就行了。听了这句话你也就不难理解为什么我们传统的运维人员甩锅是常规操作了。

而现代化的运维不要求你会开车,更多是参与制造汽车,最大程度上让车自动化、智能化。如何实现?且听下文继续分析。

图片

 3、去人肉运维化。

运维人员更重要的是搭建和管理自动化平台,内部开发团队可以依赖我们的工具,但是不能依赖我们的劳动力。当然搭建一套人见人爱、花见花开的平台绝非偶然,初期的话,可以借助开源项目,过去有PaaS,现在我们可以借助谷歌Kubernetes、Prometheus、Rancher等开源工具,尽快完成运维平台的搭建,搭建完成不算完,像Kubernetes本身也会有一些自己的短板,像有状态应用支持有限,可能要基于Operator自己开发,对于AI行业常用GPU更是支持太弱,我们需要不断深入研究和探索工具,总之搭建这套自动化运维平台对内一定能把运维有限的精力运用到有价值的事情上面,对外一定能够满足开发团队发布和部署的需求。

图片

4、谁开发、谁部署、谁监控

传统做法通常是,开发人员开发完成、提交测试、测试通过、一个邮件或者内部群通知运维人员某天晚上11点以后开始部署,开发和测试人员在工位焦灼等待验证功能是否正常。运维人员一封邮件发给所有干系人 “已经部署完毕、请验证” 。开发一看 "点哪那不行" 一封邮件通知运维,赶快把日志发过来......

传统模式下几乎所有公司的开发人员和运维人员都会有固有的冲突,且不管最后是谁的责任,这个过程最大问题就是开发人员不关心部署的具体细节,而运维人员不关心应用的具体实现细节,这就导致了运维和开发之间的代沟,详尽的文档可以解决一部分问题;但最终还是开发人员自己最了解自己的系统。这当然跟公司组织架构也有关系,通常都是研发一个团队、运维一个团队,甚至于独立的产品线都依赖于集中式运维团队。

那么如果开发人员自己开发自己部署,运维人员难道啥都不用干了吗(天天研究技术多爽啊)?自动化平台搭建完成就可以裁掉80%?其实不然,举个例子,让程序员在linux下部署个主从模式Mysql,打听下自己身边的程序员,不通过磕磕绊绊的搜索有几个可以高效完成的;有人要说,这种工作不能让运维帮忙完成啊,不会又回到从前了吧!

那么如果通过运维人员加入开发团队呢?

一般情况下,一个产品团队应该能够自给自足,独立完成产品的部署和交付;但是产品开发初期,让开发人员独立完成系统基础环境和产品运行环境的搭建不是特别现实,这时我们可以在产品团队组建初期加入运维,让运维扮演跟开发人员同样角色,参与团队内部事务。

当团队成员都在参与需求识别、任务估算、软件开发的时候,团队中的运维人员需要在这个过程中识别开发团队的活动,做好数据库驱动设计、表结构设计、单机部署还是集群部署、是否存在有状态服务、比如不经常变动数据可能适合存储到关系型数据库,查询频繁的数据更适合存储到内存数据库,这些都需要运维人员的参与和设计,并且能够提前做好部署和发布的准备;

当开发团队需要部署产品需要基础环境时,运维人员和开发人员一定要密切配合或者通过交叉培训的方式完成环境的搭建和部署,这个过程后期可能需要开发人员独立完成;

完成上述工作之后,运维人员可以像开发人员一样,把上述的运维过程转化为自动化代码,使整个过程更广泛和可靠的运行。比如一些人为的过程,借助Jenkins打包工具,通过编写脚本,自动把文档和软件包分发到各自服务器;从而为产品团队输出了自动化部署脚本、sql优化过程、监控使用等工作成果。

说到这里很多人要说对于普通中小型公司,运维是很珍贵的资源,可能就那么一撮人,根本不够用,这时可以采取当工作完成到自动化这个阶段运维就逐渐淡出产品开发团队,根据个人能力,以同样的形式融入另外一个或者多个团队。当然运维人员的组织还在原来集中式运维部门。

5、总结

通过对比传统运维和云时代运维,描述了运维和开发一体化的理念和方法。这个过程要求运维人员有更强的统筹和架构设计能力。这些能力,对于云时代的运维不正是必备的吗?

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

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

相关文章

SOP/详解*和**/python数据结构(iter,list,tuple,dict)/ 解包

一、错误解决合集 1. > combined_seq.named_children() 2. isinstance 2th parameter : must be a type or tuple of types > 改为tuple,不要用列表。改为 LLLayer (nn.Conv2d,nn.Linear) 3. File “test.py”, line 90, in calculate_fin_fout print(“hi”…

Python生成自定义URL二维码并保存为图片文件

脚本简介描述: 我们的应用场景是网站提供了Android客户端的二维码,可以进行扫码直接下载。所以使用下方的脚本可以自动生成URL路径二维码,并保存到指定路径下展示在网站上。 代码展示 PS:主要用到了 qrcode第三方模块 [rootnod…

Flask-SocketIO

一、简介: Flask-SocketIO使Flask应用程序可以实现客户端和服务器之间的低延迟双向通信。客户端应用程序可以使用 Javascript、Python、C、Java和Swift中的任何SocketIO客户端库或任何其他兼容客户端来建立与服务器的永久连接。 二、安装: pip instal…

java高并发系列 - 第22天:JUC底层工具类Unsafe

java高并发系列 - 第22天:JUC底层工具类Unsafe 这是java高并发系列第22篇文章,文章基于jdk1.8环境。 本文主要内容 Unsafe基本介绍获取Unsafe实例Unsafe中的CAS操作Unsafe中原子操作相关方法介绍Unsafe中线程调度相关方法介绍park和unpark示例Unsafe锁示例Unsafe中对volati…

window安装mysql

1、下载mysql 官网下载地址:MySQL :: Download MySQL Community Server 国内阿里云镜像下载地址:mysql镜像_mysql下载地址_mysql安装教程-阿里巴巴开源镜像站 2、安装 我下载的是mysql-5.7.36-winx64.msi安装版本 选择安装类型: 选择安装位…

【测试设计】性能测试工具选择:wrk?jmeter?locust?还是LR?

目录 前言 wrk 优点 缺点 jmeter 优点 缺点 locust 优点 缺点 总结 资料获取方法 前言 当你想做性能测试的时候,你会选择什么样的测试工具呢?是会选择wrk?jmeter?locust?还是loadrunner呢? 今…

台式机/工控机通过网线共享笔记本电脑无线网络(待续)

1、 将台式机通过网线和笔记本连接。 2、 将笔记本的“本地连接”和“无线网络连接”的ipv4均设置为自动获取。 4.修改台式机的IP地址为如下(对应笔记本信息) IP地址为192.168.XXX.12 子网掩码为255.255.255.0 默认网关为192.168.XXX.1 首选DNS为192.16…

蓝桥云课ROS机器人旧版实验报告-06工业机械臂-使用Moveit!

项目名称 实验六 使用MoveIt! 成绩 内容:机械臂、体系结构、简单运动规划、抓取放置任务 实验记录(70分) 按实验一完成升级配置。 如果需要查阅moveit详细资料,参考如下官网截图: 本实验需要安装…

python面试题【题目+答案】

最近遇到了一份python的面试题,题目比较简单,时间控制在一个小时之内。以下是面试的题目跟答案,答案不代表最优解,只是当时所想到的一些思路,接下来将分享给大家。 1. 给出下面打印结果 答案: 12.0 6.0…

二叉树OJ(C)

文章目录 1.单值二叉树1.1法一:无返回值1.2法二:有返回值 2.相同的树3.对称二叉树4.二叉树的前序遍历5.二叉树的中序遍历6.二叉树的后序遍历7.另一棵树的子树8.二叉树遍历 1.单值二叉树 1.1法一:无返回值 struct TreeNode {int val;struct …

从国内最早的开放银行说起...

在银行技术部门工作的这几年,频繁听到「开放银行」这个概念。 "开放银行"一词是指通过应用编程接口(API)在各方之间共享财务数据的业务模式,包括金融服务提供商(银行、保险公司、零售商等)之间、…

Excel·VBA定量装箱、凑数值金额、组合求和问题

如图:对图中A-C列数据,根据C列数量按照一定的取值范围,组成一个分组装箱,要求如下: 1,每箱数量最好凑足50,否则为47-56之间; 2,图中每行数据不得拆分; 3&…

数据结构--动态顺序表

文章目录 线性表动态顺序表数组与顺序表 接口实现初始化:尾插:尾删头插头删指定位置插入指定位置删除查找摧毁 完整代码 线性表 线性表是数据结构中最基本、最简单也是最常用的一种数据结构。线性表是指由n个具有相同数据类型的元素组成的有限序列。 线…

Kubernetes (k8s)理论介绍

一:K8s 简介 1、K8s作用 2、K8s 来历 3、为什么要用 K8S? 4、Kubernetes 功能 二:Kubernetes 集群架构与组件 1、Kubernetes 集群架构与组件 2、核心组件 -Master 组件 (1)Kube-apiserver (2)Kube…

Wiki知识库项目-全流程笔记

第一章 第二章 2.1本章项目流程 2.2创建springboot项目 2.2.1修改springboot的版本号为 2.4.0 2.2.3将代码交给git进行管理 2-5修改日志样式 2.5.1将springboot项目打印日志样式进行修改。创建logback-spring.xml文件夹,文件与application.xml文件位置并列。 &l…

图书借阅系统 SSM框架

步骤一:创建数据库、表 步骤二:创建工程、包、pom依赖 步骤三:web.xml 步骤四:applicationContext.xml 步骤五:mybatis-config.xml 步骤六:实体类 步骤七:BookInfoMapper 步骤八: 步…

小白到运维工程师自学之路 第六十一集 (docker容器的操作)

1、创建容器与运行容器 docker create -it nginx /bin/bash -i 让容器的输入保持打开 -t 让Docker 分配一个伪终端 -d 守护进程形式运行 使用docker create 命令创建新容器后会返回一个唯一的ID 2、查看运行状态 docker ps -a 可以使用docker ps 命令来查看所有容器的运行状态…

未能加载文件或程序集“System.CodeDom, Version=4.0.2.0。。。或它的某一个依赖项。系统找不到指定的文件

winform未能加载文件或程序集“System.CodeDom, Version4.0.2.0, Cultureneutral, PublicKeyTokencc7b13ffcd2ddd51”或它的某一个依赖项。系统找不到指定的文件。 触发原因解决方法 触发原因 在NuGet中安装IronPython时,由于一直提示缺少依赖,所以在安…

长度最小的子数组_力扣209

文章目录 题目描述法一 滑动窗口法 题目描述 法一 滑动窗口法 int minSubArrayLen(int target, vector<int>&nums){int n nums.size();int cnt INT_MAX;int start0, end0, sum0;while(end<n){sum nums[end];while(sum>target){cnt min(cnt, end-start1);su…

智慧灯杆四大应用场景

智慧灯杆是一种通过集成先进技术和智能系统的道路照明设施。它不仅具备传统灯杆的基本功能&#xff0c;还具有灯具、传感器、通信设备、监控摄像头等多个功能模块。可以实现智能照明、环境监测、安全监控、交通管理等多种功能&#xff0c;为城市的智慧化建设和市民的生活提供更…