Linux运维:现状、入门和未来之路
今天想谈谈“运维”这一行,我将从以下五个部分来和大家分析一下目前Linux这个行业的现状以及如何学好Linux、成为专业运维人员和云服务对运维的影响。
一、linux行业现状
我们知道Linux诞生于1991年,它在国外的发展是非常迅速的,即使目前国内越来越多的应用转向linux平台,但Linux在大多数人的眼中还是不太了解,甚至一个多年从事windows平台下的开发人员,可能也从未使用过。究其原因主要有以下几点:
1.入行门槛较高
由于linux是类UNIX操作系统,我们都知道UNIX是一个相对早期的操作系统,它的设计本身就不是针对普通大众的而是从事计算机的专业人员。虽然linux相对UNIX对大众已经相对友好,但仍然不是普通人能够轻松掌握的操作系统。由于很多人受Microsoft的windows操作系统影响太深,对于linux这种主要以命令行形式操作的系统非常不习惯。所以Linux这行的门槛还是较高。
另一个重要的因素是由于绝大多数的发行版中对中文的支持并不好,其实换句话说是没办法对中文的支持太好。由于Linux涉及的知识相对底层,除去GUI所能提供的中文界面,基本上我们看到的都是英文。如果你是一个Linux运维人员,你很清楚的知道,你每天打交道的linux很少能够看到中文。所以英文是学习Linux一大障碍,尤其是计算机英语与我们上学所学的英文完全是两码事。为什么这么说呢?
应试英语着重语法,考过CET-4的人都知道,几乎每一题都是变着法的考语法。而计算机英语其实是非常厚道的,计算机告诉你的一定是一个陈述句而不是作死的提示你一个反问句或者复杂的语句。比如,你在输入一个命令执行时,如果这个命令计算机没有找到,它会直接的告诉你:xxx command is not found 它不会问你: 这个命令难道真的存在吗?这种想抽它的语句。所以计算机英语关键在于需要掌握大量的名词和术语。
2.精通难
国内目前的状况是大家都知道windows的运维相对不如Linux运维的薪资水平。所以很多想做运维和windows运维的人员都想选择Linux运维,目前也有很多的相关培训机构,网上的书籍视频层出不穷。但是真正想要深入到高级的linux运维却并非一件容易的事情,究其原因主要如下:
能力与工作成正比。“能力有多大,责任就有多大”,在运维这一行,没有人一毕业就是大神,要知道运维不同与其他行业,运维需要的不是“天赋异禀”而是“经验丰富”。运维这行要的是一个稳字,一个好的运维人员应该是一个好管家,他最好的状态是保证家里一切正常的前提下“无所事事”。没有情况就是最好的情况,但我们通常无法决定能不能出问题,所以出现问题第一时间找到解决方案并实施是一个专业运维人员所需具备的。在这种大前提下,越是有大项目经验越是能力越强,说白了越有经验越能hold住场面。而这种能力的成长与你工作的环境息息相关,如果你是一个小公司,你再怎么做可能也无法接触大集群运维,如果你在一个大公司,一个大项目就能带领你提升一个档次。想要精通难的不是学习的能力而是磨练的机会。
3.前景好
十年前所有的公司都注重网络技术,所以那个时候网络工程师大热。如今大公司的网络都早已成形,市场上的CCIE到处可见,网络技术的门槛越来越低。如今,linux行业崛起,在云计算大环境下,市场上对linux高级运维人员的需求将越来越大。这样的人才是不可批量生产的,高级运维不是你想做,想做就能做的。一个职位最怕的是从事其他职位的人可以轻松取代你,如果是这样,这个职位就不值钱。如果你是不可取的的,那么薪资自然也是不可取代的。在Linux运维的初级阶段,其实是可以取代的,Linux毕竟是一个操作系统,只是一个工具。一个经常在linux下做开发的开发人员就可以取代一个linux初级运维人员。但如果高级运维,开发人员是无法取代运维人员的。高级运维是一个非常专业职位,高级运维需要掌握相当多的知识,包括但不限于网络技术、系统编程、运维流程及思想、虚拟化、自动化运维体系构建、数据库管理,云计算平台应用,大数据等。一个运维人员需要具备有开发人员的思想,但一个开发人员是否能够掌握常年积累下来的运维流程、思想和经验体系就不是一朝一夕的事情了,所以高级linux运维绝对是目前大公司的稀缺人才。可能有人会反驳我的话说:一个高级的开发人员是更稀缺的。没错,我同意你的观点,那么我会为你分析为何我认为linux高级运维更加稀缺。
分析:一个行业从业人员是否稀缺我们要从供需的角度来看,我们首先看需求。
需求。目前国内越来越多的应用应用在linux上,某些大公司更是将整个平台从原来的windows转移到Linux上,windows运维也许你可以找一些别的人员兼做,但我相信不管你是大公司还是小公司,绝不会对Linux运维不重视。大公司不差钱,小公司压根就不懂,你不懂的东西你越想找个专业的人帮你打理。所以虽然需求基数不大,但需求意愿强烈。
供给。现在哪个大学没有开设编程课程,但是Linux相关课程却少之又少。而目前从事Linux运维的多半是半路出家,一出校门就去做Linux运维的太少,这是因为运维是一门以经验为主导以能力为辅助的行业,由于是高级Linux运维,不经过多年的锻炼达不到较高的境界。而linux高级运维人员往往随着公司的项目一同成长,而这种人往往都是公司中的关键岗位,试想一个公司的高级Linux运维掌握了公司的大量运维资料和项目经验,公司不想轻易放人,个人也不会轻易跳槽。每家公司不一样,换一家公司你要适应新的运维团队,开发新的运维工具和平台,这种风险个人也不会轻易尝试,所以高级Linux运维的人员流动性不大。
还有一个很重要的原因,一流高手不屑于做运维,确实运维是一个后勤部门,就像大家踢足球都喜欢踢前锋,很少有人喜欢当后卫,毕竟这种吃力不讨好的事情大家都不喜欢做。而且在同一水平线上开发确实比运维的工资高。然而正是因为如此,像我们这种普通人才有机会做大神不愿做的事,不用和那些学霸大神们竞争。
所以,我个人觉得,linux高级运维将是云计算大环境下的稀缺人才,注意我说的是高级。
二、学习Linux两种人
就我身边的圈子而言,大多数学习Linux的其实分为两种情况:
1.兴趣
这种情况下以学生居多,有一些是通过老师了解到linux觉得很感兴趣,然后去学习linux。由于学生时间多,大多数不会去报专门的培训班,所以以自学居多。我身边的这种例子很少有学的好的,多半会进入一个误区,去研究GUI哪种好看哪种绚丽去了。导致这种情况的原因是在学习了linux的基础知识后,很多人会进入一个瓶颈,由于没有工作实践的机会,不知道该用自己所学的知识做哪些事情。一旦我们所学的知识不知所用,那便会对所学的知识产生排斥心理,觉得没用,产生了玩GUI的误区。不过我认识的也有学的好的例子,不过这个学生是做开发的,学习linux只是因为需要在linux下开发,所以学的很快很好,但他将来会是一个优秀的后端开发人员,却不一定会做运维。
关于linux的GUI,我想啰嗦几句。GUI是一个好东西,但对于linux的初学者来说并不好。学习Linux第一要克服的一点就是摆脱windows的所长久影响的使用习惯。对于linux来说,GUI其实也是一个shell,只不过是图形化的shell,所以说不能说命令行就好,GUI就不好。如果你真的是做GUI方面的开发,那么研究GUI无可厚非,如果你只是个菜鸟,也就是玩玩壁纸,换换主题,这些东西对于学习linux毫无用处。
2.工作需要
这种情况下多半是工作中需要使用Linux系统,不得不学。有一些会选择自学,不过由于上班了大多数还是有一些经济基础,也有不少人上培训班以达到短时间的速成。这些人员入门会较快,有不少人都能够学好,并慢慢发展为一名不错的linux运维人员。
以上这两种情况,后者其实更容易学好linux,根本原因在于:如果是兴趣使然,学与不学不会对你的生活有很大的影响,你该上课上课,该上班上班,没有人督促你学习,没人迫使你学习。即使对Linux失去兴趣,也可以去学别的感兴趣的知识,这其实是一个爱好问题。
但后者不同,公司要求的,不会就没法交代,不会就没法干活。老板吩咐的任务就在那,学会了就能干活,学不会就走人,你说这种压力下你能学不会吗。我相信你加班加点不睡觉也想学会Linux,不会就没工作,没工作就没饭吃,这是一个生存的问题。所以两者本质上是不同的,由于后者是由于实际工作需求来驱使学习,所以学到的东西马上就可以在实际的工作中应用,所以会觉得学到的东西很有用,那么学习就更加的有动力,当你的boss给你加工资的时候,你就会更有动力,这一切都是学习Linux带给我的财富,有什么理由不更好的学习它呢?
三、如何入门
这其实是一个老生常谈的问题,说的简单一点:只要功夫深铁杵磨成针。学习不是一朝一夕的事情,长时间的坚持才会给你汇报。但我依然想给那些想自学linux的同学一点建议:
1.不管你基础多差,找一本系统的书籍从头到尾的看一遍,不管能不能看懂至少混个脸熟。如果你觉得很吃力,可以去找找网络上的视频教程。切记看视频是效率最低的学习方法但却是最容易入门的自学方法。如果看书我强力推荐《鸟哥的Linux私房菜》,很系统很详细很深入。
2.不要碰GUI
3.多提问多思考,自己寻找答案不要轻易求助于他人。你问的问题都不会是国家机密,百度以及google上都会有大把的资料供你学习,要知道你求教的那个大神他也是从网络上获取的这些知识,你不想有一天能成为和他一样的大神吗?
4.不要担心英文,只要你坚持看英文文档,不会的单词去查字典,用不了多久你会发现看英文比看中文理解的更好。(即使你和我一样CET-4都没过^_^)
5.坚持就是胜利,半途而废不如不学,想好了就走下去,否则请不要迈出第一步。
6.多和别人交流讨论,帮助别人也是一件开心的事情同时也能够提升自己,也许他问的问题就可能是你下一个要遇到的问题。
7.关于培训班,如果想了解RHCE证的话请移步我的另一篇博文《关于红帽RHCE考试的那些事儿》http://blog.csdn.net/apache0554/article/details/7740405
四、如何成为一名专业的linux高级运维人员
如果你有机会和条件,请大胆的做你从未做过的项目,每一个项目都是对自身的极大提升,环境能够磨练一个人的能力和意志。有好的环境资源不要浪费,好好把握,慢慢进步。
如果你暂时没有这些机会,请努力提升自己的能力,做一个有准备的人,也许机会不久后就会来临。
如果你感到毫无发展的空间,尝试改变现状,安逸的环境不会使一个专业的运维人员进步。
不管何时何地始终保持好的心态,细心、冷静、自信、上进、谦逊,性格决定命运,习惯影响成就。
五、云服务对linux运维的影响
地球人都知道,未来至少十年都是云计算的黄金时期。一个事物的发展必定要弃旧迎新,尤其在互联网时代,设备与技术的更新日新月异。云服务不仅改变了中小公司的运营方式,同样对大公司也起到了冲击作用。中小公司传统情况下,一个互联网项目在开始阶段需要网络设备,服务器设备,机房设备,CDN和线路设备,线上运维人员、IDC机房运维人员等。也许一个项目还没开始赚钱,光这些乱七八糟的设备和流程就已经耗费了相当多的人力和财力,项目成本自然提高,项目压力也就越来越大。如果项目成功,自然苦尽甘来;但若项目失败这些投资也就全打了水漂,也就大大增加了开发和创业的成本。而大公司虽然不差钱,但这些机构在长年的人员流动、机构扩充的影响下也越来越臃肿。
如果企业使用云服务,那么线下运维将由云服务商全程统一负责,极大的精简了一个项目开始阶段的投入。虽然多数大公司目前并不会使用公有云,转而开发自身的私用云。但本质上是一样的,都是将线下运维进行集中和整合,通过云技术提供给各个项目人员使用,达到资源的最大化合理利用。
如果云服务被越来越多的企业应用,那么对传统运维的影响是非常巨大的。
1.运维人员精减
公司不需要为买个项目单独配置设备和人员,运维人员更多的情况下需要的是线上运维而不需要再去机房干苦力。第一批被淘汰的就是IDC线下运维人员,因为你的活已经被云服务商做了,当然大公司的IDC机房还是不可或缺的。
2.运维人员要求提高
由于第一个影响,运维人员虽然不需要做线下运维,但线上运维的难度将更大。首先,如果是使用Amazon aws或者Microsoft Azure这种大型公有云,对于平台的配置和使用就具有比较高的专业性。由于云服务带来的资源整合,自动化运维势必是以后高级运维的发展趋势。运维人员不仅需要掌握公有云的熟练配置,某些情况先下还需要掌握OpenStack这种私有云。配合这些云服务需要开发和管理新的自动化运维平台,这就对运维人员提出了相当高的要求。
3.大胆的猜想—第三方运维
就传统运维而言,没有公司会放心将涉及核心业务的运维部门交给第三方外包,但如果云服务发展到一个相当成熟的阶段,大部分的企业都采用云服务,那么对于高级运维的人员的需求将非常大。我们都知道使用云服务是没有地域限制的,就算你在一个小山沟只要有网络,你同样可以使用云服务,而线上运维同样也可以摆脱地域限制。举一个小例子:在小城市一个公司使用云服务,想要招到符合云服务要求的专业运维人员是比较困难的,因为这些人员大部分都集中在发达城市。但公司又不得不需要这些专业的人员,只能寻找线上运维。(目前其实国内已经出现了一些第三方运维团体,但只针对于小公司和个人。)一旦线上运维的需求发展到一个程度,势必会形成产业链。也许不久的将来国内会有专门做运维的公司出现,当然这只是我的个人猜想,脑洞大开而已。
总结:只是随心的一些想法,说出来只为自娱自乐,只希望那些想做运维和已经成为运维的朋友们在这一行能够越走越好,毕竟运维目前在国内不是一个被重视的行业,走一步算一步吧。
PS:以上言论为个人观点,仅作参考和建议,如观点不同,请一笑而过,不必深究。