人生苦短,Python如何拯救運(yùn)維工程師的世界
原創(chuàng)【51CTO.com原創(chuàng)稿件】我是51CTO學(xué)院講師Alex,在學(xué)院11.11(全民IT學(xué)習(xí)節(jié))到來之際,和大家分享一下我的IT從業(yè)經(jīng)驗。正文來啦~~~
經(jīng)常有學(xué)員在群里問,運(yùn)維人員需不需要學(xué)開發(fā)?需不需要學(xué)PYTHON?PYTHON和SHELL有什么區(qū)別?因此我總結(jié)我的個人學(xué)習(xí)經(jīng)驗,期待能夠給大家?guī)韺W(xué)習(xí)參考。
現(xiàn)階段,掌握一門開發(fā)語言已經(jīng)成為高級運(yùn)維工程師的必備計能,不會開發(fā),你就不能充分理解你們系統(tǒng)的業(yè)務(wù)流程,你就不能幫助調(diào)試、優(yōu)化開發(fā)人開發(fā)的程序,開發(fā)人員有的時候很少關(guān)注性能的問題,這些問題就得運(yùn)維人員來做,一個業(yè)務(wù)上線了,導(dǎo)致CPU使用過高,內(nèi)存占用過大,如果你不會開發(fā),你可能只能查到進(jìn)程級別,也就是哪個進(jìn)程占用這么多,然后呢?然后就交給開發(fā)人員處理了,這樣咋體現(xiàn)你的價值?
另外,大一點的公司,服務(wù)器都上幾百,上千,甚至數(shù)萬臺,這種情況下怎樣做自動化運(yùn)維?用SHELL寫腳本FOR循環(huán)?呵呵,歇了吧!SHELL也就適合簡單的系統(tǒng)管理工作。到復(fù)雜的自動化任務(wù)還得要用專門的開發(fā)語言。你可能說了,自動化管理有專門的開源軟件\監(jiān)控也有,直接拿來用下就好了,但是現(xiàn)有的開源軟件如Puppet\Saltstack\OpenStack\Zabbix\Nagios等多為通用的軟件,不可能完全適用你公司的所有需求,當(dāng)你需要做定制、做二次開發(fā)的時候,你咋辦?找開發(fā)部門?開發(fā)部門不懂運(yùn)維的實際業(yè)務(wù)邏輯,寫出來的東西爛爛不能用,我自己也做運(yùn)維系統(tǒng),6年運(yùn)維工作經(jīng)驗,開發(fā)出來的第一版照樣爛的不行,這還是懂的運(yùn)維業(yè)務(wù)邏輯的,讓開發(fā)人員來做,跑偏可能更多了,這就是為什么我見過很多公司自行開發(fā)運(yùn)維平臺,最后都扔那了。
其次,不會運(yùn)維開發(fā),你就不能自己寫運(yùn)維平臺\復(fù)雜的運(yùn)維工具,一切要借助于找一些開源軟件拼拼湊湊,如果是這樣,那就請不要抱怨你的工資低,你的工作不受重視了,話說人家FaceBook一個運(yùn)維工程師管2萬臺機(jī)器,運(yùn)維工程師年薪十幾萬USD,你以為人家是蓋的呢?哪個不是身懷絕技,開發(fā)運(yùn)維兼?zhèn)?
為什么要學(xué)PYTHON?
PYTHON第一是個非常牛B的腳本語言, 能滿足絕大部分自動化運(yùn)維的需求,又能做后端C/S架構(gòu),又能用Web框架快速開發(fā)出高大上的Web界面,只有當(dāng)你自已有能力做出一套運(yùn)維自動化系統(tǒng)的時候,你的價值才體現(xiàn)出來,你才有資格跟老板談重視,否則,還是老老實實回去裝機(jī)器吧!
運(yùn)維開發(fā)為什么要用PYTHON?
Good question, 為什么不用PHP,Java, C++,RUBY,這里我只能說,見人見智,如果你碰巧已經(jīng)掌握了除PYTHON之外的其他語言,那你愛用啥用啥,如果你是一個連SHELL都還沒寫明白的新手,想學(xué)個語言的話,請用PYTHON,為什么呢?首先,PHP是跟PYTHON對比最多的,其實他倆根本就不用比,為什么呢?兩個語言適用性不同,PHP主要適用于Web開發(fā),可以迅速的做出中小型,輕量級的Web網(wǎng)站,但后端嘛,基本還是要借助其他語言,借助什么語言呢?SHELL?PYTHON?呵呵。而PYTHON呢,是個綜合語言,前后端都可以,單拿出來比Web,也一點不比PHP差,但為什么Web方向上PHP比PYTHON要火? 先入為主嘛,PHP 90年代誕生就是做Web的,PYTHON2000年后才出現(xiàn)Web框架,但論優(yōu)秀程度上,PYTHON的Web框架基本上無出其左,至少是跟PHP比。
那Java呢?好吧,一個臃腫\中庸\豪無新意的語言,還是老老實實用它來做ERP吧,搞個運(yùn)維小平臺,用Java真心沒啥必要,在我看來,Java就是穩(wěn)定的中年男人,穩(wěn)定\成熟\禿頂,而PYTOHN代表的就是青春,簡潔\快\干凈\帥!
C++\C,這個嘛,我只能說,如果你會了PYTHON,又會C的話,那你會更吃香,但是不會C的話,其實也無大礙,基本上做運(yùn)維的人,搞搞C就是為了來裝B的,因為多數(shù)情況下,你都到不了看系統(tǒng)底層源碼的程度,不過如果你學(xué)好了PYTHON之后,還是建議你學(xué)習(xí)下C++,畢竟相比PYTHON這個動態(tài)語言來講,C++的效率還是高很多的,但對新手來講,不建議做為第一門語言開始學(xué)習(xí),為什么呢?打擊自信心。。。。呵呵,你懂的
RUBY,小日本開發(fā)的,還不錯,風(fēng)格跟PYTHON有點像,因為ruby onrails出了名,國外用的比較多,國內(nèi),放心吧!沒戲,PYTHON已經(jīng)把它的想象空間都占死了。
當(dāng)然還有新的語言GO,有些搞運(yùn)維的看見做開發(fā)的人員搞GO,也想湊熱鬧,覺得是未來,我想說,別瞎沒事跟風(fēng),GO再成功,也不會變成運(yùn)維開發(fā)語言。
有些人覺得PYTHON效率底,說他不能支持多線程,OH,好吧,這個還有點說對了,但是我想問,看我這篇文章的有幾個做過搜索引擎開發(fā)?有幾個做個上億PV的并發(fā)網(wǎng)站開發(fā)? 有幾個看過LINUX內(nèi)核源碼?如果沒有,請別瞎跟著傳了,知道PYTHON為什么不支持多線程嗎?這句話問錯了,其實PYTHON支持多線程,只是不支持多CPU多線程,也就是一個程序spawn出來的多線程只能占用一個CPU,但是為什么呢?噢,因為GIL,GIL是什么東東,請自行補(bǔ)腦。。。但是你非得用多線程嗎?你可以用多進(jìn)程呀!再牛B你還可以用協(xié)程呀,這些PYTOHN支持的都很好呀,如果你的程序邏輯不好,搞個多線程也快不起來。我認(rèn)識一個博士講過一句話,我覺得不錯,他說,程序效率高低,80%都是寫程序的人決定了,語言本身就占20%,所以下次有人再說PYTHON效率低的時候,請讓他先回去自己檢查下自己的程序多了多少無用的邏輯、循環(huán)等等。這個博士自己用PYTHON寫的Web程序,一臺服務(wù)器每天能處理上億請求,一秒并發(fā)近兩萬,什么Web框架這么牛B? 別問它是誰,它叫tornado。
PYTHON能否自學(xué)?
當(dāng)然可以,什么都可以自學(xué),前提是你得能學(xué)得會,見過N多菜鳥踏上自學(xué)的不歸路,他媽的什么都能自學(xué)的話,還用大學(xué)干什么?自己在家鱉不就行了?動不動就說PYTHON是個腳本語言,自己看看不就會了,說這話的只可能有兩種人,一種是高手,一種是SB,對于高手來講,他肯定已經(jīng)會其他語言,PYTHON在這種情況下,自學(xué)當(dāng)然就很容易學(xué)會,幾年前我剛接觸PYTHON時,代碼遇到問題,找了個開發(fā)的哥們幫調(diào)試,哥們幫調(diào)了十幾分鐘就搞定了,結(jié)果人家以前一句PYTHON代碼也沒寫過,為什么,因為語言都有相通之處,一門掌握好了,其他門自己學(xué)學(xué)就會了。但對于新手來講,沒任何語言基礎(chǔ)就開始自學(xué),那么恭喜你,菜鳥們見此文章為證,從今天開始自學(xué),一年后,你要是能自己做出個軟件來,來找我要一千塊錢。哈哈,真的?;旧献詫W(xué)是屬于專業(yè)人員干的事情,就像會一門樂器了,自己學(xué)下就可能學(xué)會另一門,但我之前沒音樂基礎(chǔ),跟著老師都沒把吉它學(xué)會。
所以奉勸沒基礎(chǔ)又想學(xué)PYTHON的同學(xué),花點錢去買個課程學(xué)吧,拿錢換時間,時間是生命,錢沒了可再掙錢,時間過去了就再也不會回來,如果你不信邪,非要自己學(xué),那我佩服你的勇氣,不過自己試試就知道了。
當(dāng)然天下沒有絕對的事情,我大天朝牛X的人多了去了,很多人也能過自學(xué)編程,最后變成高手了,我的PYTHON也是自學(xué)的,但是我可以說自學(xué)過程中走過了N多坑好么,好多時候糾結(jié)在一個簡單的小問題上好幾天都卡住,當(dāng)時如果不是因為工作需求,估計早放棄了,這還是PYTHON,就別說其他復(fù)雜的語言了,選擇自學(xué)的同鞋們,一路珍重?;蛟S有一天,在踩過N多坑\走過N多彎路,一轉(zhuǎn)眼到了30歲,卻發(fā)現(xiàn)自己雖然很努力卻還是混的很平庸,于是你在一個黃昏的下午,坐在窗邊,點上一根煙,長吸一口,煙霧繚繞中突然想明白了一句話,“除了時間,你的一切都有可能升值”,但當(dāng)年輕狂無知的自己卻把錢看的比時間重要,這也自學(xué),那也自學(xué),最后浪費(fèi)了大把時間在踩坑和彎路上,卻也沒把自己變成一個優(yōu)秀的人,為此荒廢了的美好青春,再也不會回來,當(dāng)年跟自己處在同一個起跑線上的同學(xué),很多都混到了各領(lǐng)域的上層,為什么選擇了同樣的方向,有的人走的這么快,有的人卻如此緩慢?即使看上去走的慢的人付出的努力也不少,原來,人與人的差距不是看表面上你多努力,而是如何高效率讓自己用最少的時間掌握各項技能,你的技能越多,你的機(jī)會就越多,你的機(jī)會越多,你走的就越快,相反,那些沒想明白什么是對自己最重要的人,左邊轉(zhuǎn)轉(zhuǎn),右邊看看,等他下決心往前走的時候,發(fā)現(xiàn),當(dāng)時跟他一起出發(fā)的伙伴早已甩他N條街了。
好了,不扯雞湯了,請各位看官看到此,開始靜靜思考5分鐘,為什么大家都知道要努力才能過上好生活,且很多人也照著這個教條去努力奮斗了,卻依然混成了后來那個自己年輕時討厭的沒什么本事且長相猥瑣的中年人?
最后借用國外一位python大牛說過的話, Life is short,you need Python! 人生苦短,我用Python.
推薦課程
Python運(yùn)維自動化開發(fā)視頻課程套餐
http://edu.51cto.com/pack/view/id-291.html
Alex(李杰),51CTO學(xué)院特級教師,在學(xué)院有58門精品課程。CrazyEye,MadKing,TriAquae三款開源軟件作者,老男孩教育Python教學(xué)總監(jiān),多年IT自動化運(yùn)維及開發(fā)經(jīng)驗。曾就職于松下、國政通網(wǎng)絡(luò)、飛信、中金公司、Nokia等公司,維護(hù)過少至幾十臺,多至數(shù)萬臺設(shè)備的IT系統(tǒng)。
【51CTO原創(chuàng)稿件,合作站點轉(zhuǎn)載請注明原文作者和出處為51CTO.com】