在我们的认知中,运维工程师就是一个背锅侠,那么咱们怎么样来避免做背锅侠那?
可能有人会告诉你,你需要去懂一门开发语言,其实在现价段,掌握一门开发语言已经成为高级运维工程师的必备计能。不会开发,你就不能充分理解你们系统的业务流程,开发人员是很少关注性能的问题,他们只会把功能开发完成就可以了,那么性能问题就需要运维人员来做。一个业务上线了,导致CPU使用过高,内存占用过大,如果你不会开发,你可能只能查到进程级别,也就是哪个进程占用这么多,然后呢?然后就交给开发人员处理了,这样咋体现你的价值?如果是这样的话,那么你活该做背锅侠。
回到咱们的问题:
运维工程师是要学python还是学go那?
答案是显而易见的:必须是python,那么为什么是python那?为什么不用PHP,JAVA, C++,RUBY,这里我只能说,仁者见仁智者见智, 如果你碰巧已经掌握了除Python之外的其它语言,那你爱用啥用啥,如果你是一个连SHELL都还没写明白的新手,想学个语言的话,请用Python,为什么呢?
首先,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,好吧,这个还有点说对了
但是你知道PYTHON为什么不支持多线程吗?其实Python支持多线程,只是不支持多CPU多线程,也就是一个程序spawn出来的多线程只能占用一个CPU,但是为什么呢?噢,因为GIL,GIL是什么东东,请自行补脑。。。但是你非得用多线程吗?你可以用多进程呀,再牛B你还可以用协程呀,这些Python支持的都很好呀,如果你的程序逻辑不好,搞个多线程也快不起来。
那如果说python效率低,那么为什么这么多的软件都在用python开发那?运维同学们所熟知的软件,如ansible、saltstack、openstack哪一个不是python开发的?你能说这些软件效率都很差吗?
这个时候可能就会有人说了:GO的效率高,这点我不得不承认,GO的效率高。那么我想问问GO有这么多成熟的第三方的库让你来调用吗?你当然可以使用GO来操作zabbix,那不好意思,你可能需要自己去写request请求了,而python有很多的第三方的库已经帮你实现了这个功能,你只需要拿过来直接使用就可以了