今天看了一个同事转过来的一个目前在实习的同学的邮件,有很多感慨,也有很多不敢苟同的意见。首先,从事这个工作2年多了,有了一点自己的看法。曾有朋友问我觉得做运维最重要的是什么,我说,是态度。我所理解的运维实质,就和公司里的一位资深Java开发技术专家在会上告诫自己团队的人一样,就是无论你掌握多少的技术,都不重要,重要的是,你如何做好和改进你自己的工作,给公司降低风险,带来收益。那位实习的同学说,运维需要有coding的能力,确实不错,因为运维工程师实际上也是在进行一部分代码编辑工作,但不完全是。

早在以前,就和几个比较要好的开发的同学混的不错,他们都是非常优秀的Java开发工程师,有人还进入了公司的系统架构组,令我羡慕。开发和运维的思维是完全不一样的,开发人员仅仅关心的是代码的功能实现以及代码优化维护,而运维呢,更关注的是生产服务的稳定和高效,对于运维而言,从某种意义上说稳定压倒一切。这就是运维对于互联网公司的价值所在。我认为的运维发展道路分为三步,初级运维配服务,中级运维排故障,高级运维布架构。

对于初级运维来说,能够满足公司的业务需要即可,就是你存在的价值,就对得起公司付给你的薪酬。但是往往初级运维不做计划和打算,只是单纯考虑技术层面的问题。运维确实是一个比较依赖工具化和自动化的职业,运维的工具也有很多出自开发人员之手,但是,就像没有人关心为什么医生自己不去做药品生产一样,运维同样不需要关心工具出自谁的手中,而只需要去知道工具能够实现就好,医生也只是关心药效,而不去过问生产过程,却必须清楚药理。运维也一样,手上的工具知道如何使用,工作原理为何就可以了。医生的目的是为了解决患者的病痛,回复病人的身体健康,运维的目的是为了恢复系统的正常服务,定位故障关键点。故初级运维仅仅需要布置完公司业务需要的服务,也算完成工作了。

而中级运维则必须初步具备代码编写能力,和故障判断能力,在互联网的世界里,硬件、网络、系统、应用软件构成了服务提供的四大模块。任何一个模块出问题,都需要相当的时间去排查,这是开发工程师无论如何都不可能去了解的这么多的方面的知识,但这却是运维的主要工作:troubleshooting。我们不能说谁的工作比谁的工作更高级,更有价值,因为对于公司而言,这是一个完整的提供给用户的产业链,从需求采集,到产品论证,到开发功能实现,到测试,到运维上线,到数据安全,等等。我从不觉得一个人把这些工作从头包到尾就是能人,这种人恰恰会成为我们中的一个术语:单点故障。人的精力有限,工作的计划很庞大,等到你一个人忙下来,黄花菜都凉了。怎么比的上分工合作的集团军式的产业链条高速运转来的效果好?所以指望一个开发人员要为自己开发的代码承担高风险的同时再去承担高的服务器风险和网络风险,即使老板肯花这个钱雇这样的人,你敢来么?那是CTO。。。

阿里云-推广AD

高级运维,则是相当熟悉各个相关部门工作的基础上来开展工作的,他们的眼光和工作和前二者完全不一样,已经可以从很宏观的角度去考虑问题了,包括设备采购,硬件调试,系统设计,服务部署,压力承载,用户反馈,业务展开,以及网站运营。我所理解的高级运维不仅仅是一个技术专家而已,如果仅仅是这样,那么对做好自己的工作,是没有半分好处的。

希望还是能不断的通过实践去印证和检验自己的工作。