运维人员需不须要学开发?需不须要学Python?PythonN和Shell有什么区别?每天问这种好水的问题,我实在受不了,决定帮你们扫扫盲。ios
现阶段,掌握一门开发语言已经成为高级运维工程师的必备计能,不会开发,你就不能充分理解大家系统的业务流程,你就不能帮助调试、优化开发人开发的程序,开发人员有的时候不多关注性能的问题,这些问题就得运维人员来作,一个业务上线了,致使CPU使用太高,内存占用过大,若是你不会开发,你可能只能查到进程级别,也就是哪一个进程占用这么多,而后呢?而后就交给开发人员处理了,这样咋体现你的价值?编程
另外,大一点的公司,服务器都上几百,上千,甚至数万台,这种状况下怎样作自动化运维?用Shell写脚本for循环?呵呵,歇了吧,Shell也就适合简单的系统管理工做。后端
到复杂的自动化任务还得要用专门的开发语言。你可能说了,自动化管理有专门的开源软件监控也有,直接拿来用下就行了,可是现有的开源软件如Puppet、Saltstack、OpenStack、Zabbix、Nagios 等多为通用的软件,不可能彻底适用你公司的全部需求,当你须要作定制、作二次开发的时候,你咋办?找开发部门?服务器
开发部门不懂运维的实际业务逻辑,写出来的东西太烂不能用,我本身也作运维系统,6年运维工做经验,开发出来的初版照样烂的不行,这仍是懂的运维业务逻辑的,让开发人员来作,跑偏可能更多了,这就是为何我见过不少公司自行开发运维平台,最后都扔那了。多线程
其次,不会运维开发,你就不能本身写运维平台复杂的运维工具,一切要借助于找一些开源软件拼拼凑凑,若是是这样,那就请不要抱怨你的工资低,你的工做不受重视了,话说人家FaceBook一个运维工程师管2万台机器,运维工程师年薪十几万USD,你觉得人家是盖的呢?哪一个不是身怀绝技,开发运维兼备?架构
为何要学Python?并发
Python第一是个很是牛B的脚本语言,能知足绝大部分自动化运维的需求,又能作后端C/S架构,又能用WEB框架快速开发出高大上的Web界面,只有当你自已有能力作出一套运维自动化系统的时候,你的价值才体现出来,你才有资格跟老板谈重视,不然,仍是老老实实回去装机器吧。框架
运维开发为何要用Python?运维
Good question, 为何不用PHP,JAVA, C++,RUBY,这里我只能说,见人见智, 若是你碰巧已经掌握了除Python以外的其它语言,那你爱用啥用啥,若是你是一个连SHELL都还没写明白的新手,想学个语言的话,请用Python,为何呢?tornado
首先,PHP是跟Python比的最多的,其实他俩根本就不用比,为何呢?两个语言适用性不一样,PHP主要适用于Web开发,能够迅速的作出中小型,轻量级的WEB网站,但后端嘛,基本仍是要借助其它语言,借助什么语言呢?Shell?Python?呵呵。而Python呢,是个综合语言,先后端均可以,单拿出来比Web,也一点不比PHP差,但为何Web方向上PHP比Python要火?
先入为主嘛,PHP 90年代诞生就是作Web的,Python2000年后才出现Web框架,但论优秀程度上,Python的Web框架基本上出其无左,至少是跟PHP比。
那JAVA呢?好吧,一个臃肿、中庸、豪无新意的语言,仍是老老实实用它来作ERP吧,搞个运维小平台,用JAVA真心没啥必要,在我看来,JAVA就是稳定的中年男人,稳定、成熟、秃顶,而Python表明的就是青春,简洁、快、干净、帅!
C++/C,这个嘛,我只能说,若是你会了Python,又会C的话,那你会更吃香,可是不会C的话,其实也无大碍,基本上作运维的人,搞搞C就是为了来装B的,由于多数状况下你都到不了看系统底层源码的程度, 不过若是你学好了Python以后,仍是建议你学习下C++,毕竟相比Python这个动态语言来说,C++的效率仍是高不少的,但对新手来说,不建议作为第一门语言开始学习,为何呢?打击自信心…呵呵,你懂的
Ruby,小日本开发的,还不错,风格跟Python有点像,由于Ruby onrails出了名,国外用的比较多,国内,放心吧,没戏,Python已经把它的想象空间都占死了。
固然还有新的语言GO,有些搞运维的看见作开发的人员搞GO,也想凑热闹,以为是将来,我想说,别瞎没事跟风,GO再成功,也不会变成运维开发语言。
有些人以为Python效率底,说他不能支持多线程,OH,好吧,这个还有点说对了,可是我想问,看我这篇文章的有几个作过搜索引擎开发?有几个作个上亿PV的并发网站开发?
有几个看过LINUX内核源码?若是没有,请别瞎跟着传了,知道PYTHON为何不支持多线程吗?这句话问错了,其实Python支持多线程,只是不支持多CPU多线程,也就是一个程序spawn出来的多线程只能占用一个CPU,可是为何呢?噢,由于GIL,GIL是什么东东,请自行补脑。。。可是你非得用多线程吗?你能够用多进程呀,再牛B你还能够用协程呀,这些Python支持的都很好呀,若是你的程序逻辑很差,搞个多线程也快不起来。
我认识一个博士讲过一句话,我以为不错,他说,程序效率高低,80%都是写程序的人决定了,语言自己就占20%,因此下次有人再说PYTHON效率低的时候,请让他先回去本身检查下本身的程序多了多少无用的逻辑、循环等等。这个博士本身用Python写的WEB程序,一台服务器天天能处理上亿请求,一秒并发近两万,什么WEB框架这么牛B? 别问它是谁,它叫tornado。
Python可否自学?
固然能够,什么均可以自学,前提是你得能学得会,见过N多菜鸟踏上上自学的不归路,他妈的什么都能自学的话,还用大学干什么?本身在家鳖不就好了?
动不动就说Python是个脚本语言,本身看看就不会了,说这话的只可能有两种人,一种是高手,一种是SB,对于高手来说,他确定已经会其它语言,Python在这种状况下,自学固然就很容易学会,几年前我刚接触Python时,代码遇到问题,找了个开发的哥们帮调试,哥们帮调了十几分钟就搞定了,结果人家之前一句Python代码也没写过,为何,由于语言都有相通之处,一门掌握好了,其它门本身学学就会了。
但对于新手来说,没任何语言基础就开始自学,那么恭喜你,菜鸟们见此文章为证,从今天开始自学,一年后,你要是能本身作出个软件来,来找我要一千块钱。哈哈,真的。
基本上自学是属于专业人员干的事情,就像会一门乐器了,本身学下就可能学会另外一门,但我以前没音乐基础,跟着老师都没把吉它学会。
因此奉劝没基础又想学Python的同窗,花点钱去报个班学吧,拿钱换时间,时间是生命,钱没了可再挣钱,时间过去了就不再会回来,若是你不信邪,非要本身学,那我佩服你的勇气,不过本身试试就知道了。
固然天下没有绝对的事情,我大天朝牛X的人多了去了,不少人也能过自学编程,最后变成高手了,个人Python也是自学的,可是我能够说自学过程当中走过了N多坑好么,好多时候纠结在一个简单的小问题上好几天都卡住,当时若是不是由于工做需求,估计早放弃了,这仍是Python,就别说其它复杂的语言了,我相信除了少数的大牛以外,多数人不比我聪明到哪去,选择自学的同鞋们,一路珍重。
说了这么多,只想告诉那些迷茫不知所措该学什么语言的新手们, 在你还没学好走路的时候,不要老想着,未来我当上老板了,我是开宝马呢?仍是开奔驰呢?先学会骑自行车吧!