云时代,运维人员应该如何成长

今天看到了一句话:运维催人老,项目人肉搞,技术含量低,前景也不好,出力没奖金,晋升就瞎搞。这也是很多运维人的共鸣,甚至大家都在相互传递焦虑。

其担忧背后的原因是随着云计算的快速发展涌现出虚拟化技术和容器化技术和容器编排技术,例如 Docker、Kubernetes ,以及市场上这些例如亚马逊、阿里云、腾讯云这样的云服务商,他们把一些日常使用的运维服务都做成了 PASS或 SASS 服务。以前我们搭建一个集群,需要自己准备机器然后批量部署系统、搭建个负载均衡或 Mysql 集群、Redis 集群、搞套类似 ELK的 web 服务日志采集系统、搭个 zabbix 监控等,得自己配置主从、做好高可用,而现在有现成的产品,鼠标点点或调用下云厂商的 API 接口就可以批量创建,确实是方便了很多,但是这样一来,运维人员的价值在哪里体现呢?很多人做了一段时间运维发现没有什么成就感,有人就喊出了“在云时代,运维人已经没必要存在了”。

其实,我身边也有很多朋友跟我说过类似的话,我一个从事运维工作七八年的朋友跟我诉苦说干运维“背锅有份,加薪无缘”。但是我认为在未来,运维岗位就算被取代,运维服务也仍然会继续存在,并且会一直支撑着一个企业业务发展的完整生命周期。在云时代,运维人员要体现出来的价值除了技术能力还有运维管理能力。
一般的运维工程师特别讲究广度而忽略深度,尤其云计算时代这个特点会更加被放大,运维工程师在工作中可能会使用到各种服务,例如操作系统、监控报警服务、日志收集服务、web 服务、负载均衡、各种数据库服务等等。但是每个服务他们可能只是停留在使用层面,对于背后的原理了解甚少。

以 Linux 操作系统为例,我相信做运维的人都了解过红帽的认证考试,例如 RHCE 这样的认证,里面会学 Linux的一些基础知识、网络协议、SHELL 脚本以及各种服务,例如 Apache、nginx、mysql、ftp等这些服务的搭建和配置。总是,似乎什么都需要了解,但是也仅仅是停留在一些基础的层面认知上。

我给单位做面试的时候面过一些持有类似 RCHE 这样的认证的候选人,我会发现这些同学都考了 RHCE 这样的证书,但是其实他们对于真正的一些细节性的问题根本答不上来。比如文件描述符是什么?,为什么 ftp 以及 http 协议不安全?那如何让它变得更安全呢?为什么?,什么是 OOM?等等,我大概也了解了现在的一个培训市场,很多培训机构只是为了应付考证,大多数同学都是靠背题库或答案靠上的证书,拿到了证书就觉得自己是个中级运维工程师了。

我们假设这些同学是认认真真的学会了整个认证体系中的所有知识点,都完全掌握和消化了,那其实在目前的市场上他也只是一个初级工程师,薪资并不会太高,因为很多企业他并不会说你学的所有技术他都能用到,可能只是使用到其中的一些非常少量的软件和服务,那么你是不是对这些软件和服务的熟悉程度完全大于你在培训时学过的呢,举个例子,以 Linux 为例,从初级到高级,以下是我自己对于各个级别的水平定义:

初级运维,掌握 Linux 的基本命令、用户管理、权限管理、进程管理、网络的基本管理(例如分配个 IP或 DNS)能够理解管道、文件描述符等概念以及各种服务,例如 Apache、FTP 等服务的搭建和基本配置,但是对于为什么这么配并不理解。能够编写一些基本的 SHELL 脚本,熟悉各种系统配置文件的含义和修改。

这个阶段的可能适合一些机房 IDC 运维和云计算的初级运维之类的角色,薪资大概不会超过 5k,一二线城市不会超过 8k,如果要提升薪资待遇,需要先达到中高级水平。

中高级运维, 在这个阶段,要深入的去理解一直两个服务的背后原理和使用方法,要做到知其然且知其所以然,把一些重要的技术给他吃透了,说实话,目前很多企业都缺少优秀的运维人员,那种什么都会,但是只会些皮毛的运维人员并不吃香。待遇自然上不去。也就只能停留在干一些初级的运维工作上了。

首先,这个阶段的运维工程师要掌握初级所需知识栈且编程能力强,那其实现在有了云服务,鼠标点点就可以创建一台服务器,那么对于以前那种使PXE 等技术批量化部署系统的能力就稍微了解下就好,知道工作原理,但是云时代要拥有较强的编程能力,能够实现一些自动化工具,能够使用云厂商提供的 API 接口来实现各种自动化管理的平台或脚本。如果有很多台服务器,类似Ansible这样的工具要重点掌握其使用,能够独立编写 Playbook 等能力。而且重点培养自己的编程能力,学会一到 2 门编程语言,例如 Python 或 Go 等。

其次,对于某一些服务达到深入理解底层原理的程度,比如 nginx,初级的可能仅仅只是停留在表面的配置,知道为什么这么配置,但是并不知道如果这么配置会带来哪些影响,因为在很多时候,一个简单的配置可能会引起其他关联服务的不正常运行,举个例子,比如 nginx 中如果你配置了 gzip_vary 对文件进行压缩,初级的运维工程师可能知道这个功能好,哪里好呢?他能够给一些文件进行压缩节省带宽提升传输效率,但是在一些场景下可能就因为这个功能的开启就导致关联服务不能正常运行了,比如一些服务因为文件被压缩而无法解析文件。中级运维要能够快速的发现并解决这些疑难故障。,能够对于不同的业务场景进行系统或应用的优化,提升并发能力等。
我认为,云计算时代,运维人员的工作变了,从搭建和配置各种服务中得以解放,把工作重心放在提升服务的稳定性和可靠性上,这就需要建立一整套行之有效的运维管理体系和流程才能够保证稳定性和可靠性。把复杂问题流程化,通过自动化平台或自动化工具来让运维工作变得更加智能和便捷,而不是像以前那么复杂,这是新时代运维的价值体现。运维价值的体现主要体现在以下几个方面:

  • 质量,包括服务的可用性、和用户体验。
  • 效率,包括发布的效率,扩缩容的效率。
  • 安全,包括系统安全和网络安全以及数据安全。
  • 成本,包括机器硬件的成本和网络带宽的成本以及人力的成本以及第三方服务的成本控制和运营成本的控制
  • 流程,包括内部的各种业务发布、测试、变更流程以及各种权限和资源申请流程,其目的是为了保证效率和安全以及质量
  • 技术,对于过时的技术的更新迭代、各种技术标准的制定。

举个例子,以这次微盟事件为例,微盟使用的是腾讯云,这其中各种权限和流程的漏洞如何在运维工作中把他扼杀在摇篮之中,这就是能够体现出运维人的工作价值。这不论是对于小公司还是大公司的运维都是一样的。运维人员存在的意义就在于能够为企业的业务发展保驾护航。

不管是当下还是未来,一个优秀的运维人都应该保持谦虚好学向上的态度,不卑不亢,保持自己的技术能力和业务能力能够紧跟着时代的发展,才不会被时代“杀死”和淘汰。