任何事物都没有完美一说,但是我们可以死磕自己,追求极致...
无论我们现在是搬砖呢,砌墙呢,还是在逗自己混日子,我们需要关注的是自己的方向在哪里,而不是过于在意自己当前的所站的位置,人生不能受限于自己的当前的认知和意识。
平时和小伙伴们瞎扯淡,聊人生谈理想的时候,我会经常和别人讲我所认为的专业化运维工程师和运维工作的方向,当然其中有认可的人也有不认可的人。认可的大多在努力让自己的工作越来越轻松,自己的价值越来越能得到体现,不认可者多属于一天都很忙,而且认为运维就是帮开发人员打打杂,解决当前存在的问题,做大量重复琐碎的事情。搬砖砌墙只能是临时的工作,利用我们手头上的资源去打仗(解决业务发展过程中不断出现和可能出现的问题)才是我们应该努力的方向。所有人工手动操作的事情,貌似很能够体现一个人有多牛逼的,但是这些事务都是临时性的,且对我们的核心价值没有任何影响。运维的价值不在于你删除了多少日志,重启了多少次服务,写了多少个脚本,而是业务运营的可用率,而运维工程师的价值就是通过投入更少的成本保障业务更高的质量(可用,安全,容量)。
这是一个极好的时代,也是一个极糟糕的时代。
对于个人而言如此,对于我们从事的运维行业也是如此。极好表现在我们有着很多高大上的理念,各种超牛逼的开源技术,极糟糕表现在运维工作的门槛极低,从业人员专业素质层次不齐,大部分人从各种培训学校里面出来就去做运维工作(不是在贬低培训学校毕业的兄弟,我认识的很多从培训学校出来,技术超好,工资远比我高的同学,不过,他们的价值更多地取决于他们后期的努力)。不是会装LAMP环境,不是学完RHCE,OCP,CCNP的培训课程就能成为一个合格的运维工程师,这些学完后只能算一只脚迈进运维的大门。还有很多人,这些人就在我们的身边,虽然不是从各种培训学校出来做网站运维工作的,但是时刻抱有一种想法,我学会某门技术或者去培训学校参加完某门培训课程就牛逼大发了,老板就得给我升职加薪,让我当上CEO,迎娶百富美,走上人生巅峰,运维工作对从业人员真得就是这么简单么,你掌握了某项技能,开发出某项工具,你当真天下无敌了么?
有人的地方就是江湖,现在一个行业又何尝不是一种江湖呢?运维当然也不出其外。
对于运维工作,我们应该往哪里走呢,无论ITTL还是ITSM这些高大上的理念都是为了指引我们如何达到我们的目标,那我们的目标是什么呢?
当我们还不能异口同声地说出运维工作的目标时,我们不妨可以向古人取取经,看看历史是如何告诉我们答案的。中华武术博大精深,异彩纷呈,当然不是影视里面吊着一根绳子飞来飞去,打起仗来框框响的那种。大道至简,殊途同归,无论你是哪家门派,所强调的要求和方法,最终极的目标是一致的,差异的只在表现形式。
通过武术看我们从事的运维工作:
1.入门只是基础,基本功不可荒废,如何做一个靠谱的美男子
基本功修炼的目的是减小我们和目标之间的差距,降低我们达成目标的难度。
一般在正式练武术之前,所有人都需要经历一段时间的基本功练习时间,什么扎马步,手提重物,倒立等等,这个阶段就是为以后做准备打基础。这个阶段的重要性在于如果基本功练到位而且时常练习的话,就会减少很多伤痛的可能性,而且能够更加容易达到之后更高难度动作对于身形的要求。
运维工作的基本功是什么呢,个人认为是做运维工作需要的最基础的知识,也就是各种培训学校能够教给那些对运维行业感兴趣或者基本功缺失人员的东西。
基本功只是入门前的准备工作,基本功练不到位不影响你去练习一门武艺,但是越练到后面感觉会越困难和痛苦。因为有了一定的功力了,反倒在重新连基本功就不太可能了。这就是为什么我们会经常碰到一些人,这些人有可能从业多年,但是有可能很多基础一问三不知。重要么,重要但是也不是非常重要,如果是某项基本技能或者一些基本常识,如果愿意去学应该也是很容易掌握的。之前看到某个搞培训的哥们写的一篇文章《哥们别逗了,写个脚本那真不叫运维自动化!》(内容拉仇恨过多,已被作者删除,内容贴于后文),道理是没错的,但是文中不乏“你怎么连这个都不会,你怎么连那个也不知道”,最后对应聘者一通“小样就你这点本事还敢要这么高的工资”,虽然自问达不到某些要求,看看别人要的工资,再看看自己感觉甚是惭愧。不过从文中和日常运维同行交流也可以看出,一方面说明,很多人基本功不扎实,问啥啥都知道一点但是啥都讲不清楚,一方面说明,很多人在招聘的时候搞不清楚什么是重点,什么是他们需要的,想着最好你什么都会。
很多人基本功没练好就去练功了,还有一些人基本功刚练好就以为自己已经是一个习武之人,更有甚者以为自己基本功做得足够好就已经天下无敌了,不少培训学校“XX时间学完XX,月薪XX不用愁”宣传的就是这种思想。
2.“内外兼修”“形神兼备”,内功的修炼与外在的身形,如何做一个有深度的美男子
我们都应该从电视或小说中看到过过这样的场景,同样是修习一门武艺的两个人,师从一人,刚开始可能还打得难解难分,最终成败不在于招式的花样,而在于功力的深厚。
武术讲究的是内外兼修,不仅要练刀剑拳脚,还要练呼吸和反应能力,内在的功夫很多时候要比外在的身形更要重要,就像瑜伽的呼吸和冥想相较于标准动作是更应该被关注的,内在功力能让我们更加高效,轻松地完成外在的形体动作。做运维工作,我们“外在”的功力是一方面,“内功”的修炼也是很重要的一面,外在表现于我们做了什么事情,内在在于我们对于所做事情的方法理论和思考的总结。
运维人员的外在身形是什么呢?写个脚本,安装一个什么软件,排查一个什么异常可能是运维人员外在的身形。
运维人员的内在功力是什么呢?私以为,我们在学校里面学到的计算机理论,程序背后的运行原理,业务的架构设计亦或是沟通,归纳,抽象等我们看不到,无法量化,但是能够帮助我们更好地发挥我们的实力的东西是需要我们锻炼的内功。
有些人忽略了内功的修炼,就成为了给开发人员打杂的角色,自己能做的也就是安装下软件,排查下异常,写几个脚本。写个脚本,只能说明写脚本的能力强,仅此而已。
有些人过于强调理论的重要性,我们身边应该不乏这类人,道理说的头头是道但是怎么做他们就不关心了或者说他们就不知道了。
我们可以看到所谓的高手绝对是身形和内功都练到位的行家里手,身形好顶多就是所谓的三脚猫功夫,当然这样说可能会犯了很多人的忌讳,伤了很多人的心。
知其然,更要知其所以然。
与什么都知道相比,把一个东西搞清楚弄明白更值得去做。
3.十八般武器,工具的重要性,如何做一个秒杀疑难杂症,有效率的美男子
在影视中我们可能会看到这样的场面,某某大侠赤手空拳打败了一群手拿精良武器的敌人或者一个超牛逼的高手用刀剑挡开飞来的弓箭,这些有且只能在影视中出现,影视是夸张的,现实是开不得玩笑的。之前跟一个老师傅聊过,如何徒手跟拿一群武器的人打斗,及胜算有几何?老师傅说,你傻呀,碰到这种情况跑还来不及,怎么可能还去跟别人玩命。所谓刀枪无眼棍棒无情,乱拳打死老师傅,不是你功力不够,是玩法不一样了。有武器和没有武器那完全不是同一个层次,这是比拼的就不是实力,而是靠的是运气和技巧。
运维工作中,有工具和没有工具,有单一场景的工具还是平台化的工具,那更差异就更大了。运维的工具一般只能运维人员自己去打造了,一则大部分开发人员基本上不懂运维(能碰上像大众点评里面某些既懂开发又懂运维的开发人员,对很多人而言绝对是人生之幸),二则开发人员一般没有精力去维护运维工具,毕竟在一个以KPI为准绳的时代,很难要求开发资源的投入。如果招新人专门做运维开发,就存在第一个问题,如果让懂业务的开发人员去开发相应的工具就会存在第二个问题。最终只能运维人员自己去学习开发工具,这也就是devops的由来,也是以后的发展趋势。
目前大部分的公司,对于运维人员的人力成本投入方面要比业务开发人员少的多了,一般一个运维人员至少要应对多个业务,处理十几个以上开发人员的需求。如果不是专职做运维开发的运维人员,开发工具一般限制都比较大,由于投入的资源有限,那么开发工具就尽可能的要求可以多次复用,那么就要求工具的设计足够抽象,实施对象足够标准化,否则开发的工作量和设计的难度就会高出多个量级了,但是这又是现实所不允许的。
因此,在打造武器之前,要求我们的业务足够标准,无论是开发环节还是测试,运维环节,任何差异都需要额外的人力成本投入,也会加大处理问题的难度和增加无谓的工作量。
想想,你可能需要手动几个小时才能搞定的一件事情,有了工具你可能分分钟就搞定了,而且还不用返工。在足够标准的环境下,就像古代行军打仗,人就是最标准的环境,一个人和一万个人是没有差异的,有了工具(比如大炮)你就可以很高效的解决战斗。
敌人为我们造粮食和武器的场景在运维这里就不复存在了,而这所有一切,不能依赖别人,只能自己去做。
4.关于阵法:流程和协同组织的重要性,你不是一个人在战斗,如何做一个克敌制胜,无往不利的团队成员?
单兵战斗力强就能决定胜败吗?这里的单兵不是说那些小喽啰,像关羽这样的猛将也在所属之列。想当初关羽温酒斩华雄,最后也落得一个败走麦城的下场,可见单兵的作战力再强也强不过一个有组织的团队或者外部的轮番挑战。
在中国的武术中也有阵法的讲究,可能没有什么七星北斗阵这么吊炸天,在群战中也是非常讲究人与人的协同与互补的。在战争中自然就不必多说了,整体的战略其实就是一个大型的战阵思想的高度抽象,不同兵种的协同作战流程和组织之间的紧密配合。相信再牛逼的武林高手在正规的军队面前都得心惊胆颤,望风而逃,像赵子龙这种七进七出的事情,如果不是曹操下令活捉赵子龙的话,估计都不知道是什么下场了。
扯到运维的工作,其实也有很多相通之处。
个人能力再强,也强不过一个专业化,流程化,高度协同的团队,可能团队中每个人拉出来都不是很牛逼,但是加在一起就是一根筷子和一捆筷子的区别了。
运维应该是由意识(研发人员,包括产品,开发,测试,运维)+ 技术(提升效率,打造工具的关键)+流程(工具是流程的固化手段)
想一想,当业务环境能够在我们的努力下,保持干净,一致,极简,同时在流程固化下不断降低人力成本与人为的失误,极大消灭低级问题,真正碰到的问题是值得我们投入精力去付出的,这才是运维人员的价值所在。碰到问题解决问题,写脚本处理变更需求,解决告警问题,都只是一种低层次的手段,很多事情考虑在业务之前,事后需要做的事情就会少很多,这是运维人员的方向,也是目标。运维的角色被很多地方分为:操作型运维,开发型运维,架构型运维,很多人在操作性和架构之间苦苦挣扎,适时思考下,为什么会存在这种情况,就会明白自己该怎么去做了。
一个人的牛逼不是牛逼,一个团队的牛逼才是真牛逼。
5.关于流程自动化,当我们有了战略武器,所有的一切需要重新开始
哥哥,你想玩去开发测试环境玩吧,好伐?
一个系统最薄弱的因素:人,最终的目标都是运营过程尽可能地减少人为因素的介入。
一个程序的质量是从程序设计之初,写代码之前就决定的了,一个糟糕的程序设计,就算是再牛逼的程序员大婶估计也写不出什么好结果吧。同理,一个天生不良的业务,后天的运维工作做得再好也改变不了多灾多难,故障频发的现实,运维从业务的立项之处就要考虑业务的运维特性,当然如果这个业务只是写出来给老板秀秀功绩,那完全可以不用考虑。
运维工作的流程自动化涵盖了从代码的安全扫描到功能测试,部署到线上运营环境,性能和异常监测,故障的自愈,容量和健康度的反馈,程序的再次修改和业务架构的调整等。所有的环节尽可能减少人为的介入,只有流程出现异常时才需要人的介入,产生的经验应该时刻回馈到流程中,当下次碰到同样的问题流程自动化的工具可以依据经验自行处理掉,这也是故障自愈的一个基础思想。
如果一切都流程化,自动化,配套的工具都到位了,还要运维人员干什么?
可能有很多人会有此一问,我相信对此很多所谓的有经验的人会有一种深深的担心,这将会淘汰掉很大一批写写脚本,删删日志,扯扯淡的人,可能你我就是其中一员。
以前会计都是用算盘的,后来大家都开始用计算机了,使用算盘的就只剩下那些超级大牛了,大部分没有学会计算机,算盘用的一般的人都被社会变革淘汰掉了。任何事务都是在往前发展的,任何行业也将会从边缘行业成为主流行业,再从主流行业变为夕阳行业,有人主动去调整了然后不断适应外界地各种挑战,有人就死在这不断的变革之中,这一切都不以人的意志而转变。
当然,一切流程化和自动化,运维敏捷化,资源精细化,变更精准化都是趋势,等真正完全实现流程自动化,我相信运维的玩法肯定和现在就完全不一样了,就如同在新时代,一切冷兵器时代的玩法就都玩不转了,剩下的就是那些高度抽象出来的思想,比如孙子兵法。那些排兵布阵,刀枪剑戟,战斗经验就都统统被历史淘汰了,如果你不愿意被淘汰,看看晚清时代的历史,你就知道那些用菜刀去砍英法联军的枪炮是什么下场了。
在这一切到来之前,我们需要做的是不断提升自己的意识以及影响他人的意识,运维不是打杂的,就跟搞建筑不是搬砖的同一个道理,不断提升自身的技术和能力,将整个业务流程化,然后打造出工具不断固化和完善已有的流程。
那些不思进取,不能接受挑战的,终将会被淘汰...
运维不会写代码,开发不懂运维,可能现在公司和人员看来无所谓,但是无论是云服务时代的到来还是自主创业,不懂开发的运维和不懂运维的开发,其结果都是一样的,就算你老子是李双刚,都是会被淘汰的。
很多人面临的问题,欢迎大家针对以下问题讨论:
1.业务或企业IT规模过小的情况,需不需要运维自动化?
2.运维自动化会对业务的安全稳定问题造成负面影响??
3.运维自动化就是写脚本或者写python程序?
4.运维自动化受益的只是运维工程师?
个人心里有一些答案,希望再看看其他小伙伴的想法,然后一起交流下。
运维自动化不是简单地会一门程序语言,自己写个脚本或写个程序那不是运维自动化,就算写出来了也顶多是一堆对实际运维工作没有任何实际价值的代码。
运维自动化不是简单的某个开源工具或者开发技能,而是一个整体的综合管理问题。
运维自动化的对象是业务应用,不是运维事务,用户可能是运维,也可能是业务研发过程中的其他环节。
人的意识(认知问题),工具(技术问题),流程(组织问题),结合起来,无往不利......