摘要:我一直認(rèn)為運維工程師就是讓跳舞的人,當(dāng)我操縱幾百臺機(jī)器,整齊劃一地做一件事情,那種感覺特別棒。技術(shù)人攻略你怎么看待,運維和開發(fā)的關(guān)系應(yīng)該怎樣平衡國內(nèi)大家提得多
技術(shù)人攻略:運維工作普遍很辛苦,你卻能做得如此快樂,有哪些經(jīng)驗可以分享?
流程比補(bǔ)位更重要,方法比拼命更重要。UPYUN運維團(tuán)隊只有3個人,但很早就做了流程規(guī)范和腳本處理,從最初幾臺到現(xiàn)在的五百臺機(jī)器,再到將來的五千臺、五萬臺也都是用同樣的方式管理。國內(nèi)很多公司對運維的認(rèn)知度不高,導(dǎo)致業(yè)務(wù)量上去之后,用堆機(jī)器的方式快速搶占市場,運維也只能靠人力堆,24小時待命,事后救火,自然會覺得辛苦。
運維想做得輕松,首先要做到自動化,其次是監(jiān)控常態(tài)化,然后是性能可視化。服務(wù)器不會無緣無故出問題,犯病之前肯定有征兆。用監(jiān)控系統(tǒng)做連續(xù)的健康檢查,會很容易發(fā)現(xiàn)故障觸發(fā)原因。新出現(xiàn)的問題要及時增加監(jiān)控數(shù)據(jù),例如一臺機(jī)器上發(fā)現(xiàn)CPU過熱報警,處理后會監(jiān)控所有的機(jī)器是否有CPU過熱的情況。
自動化做好之后,再也不怕頻繁部署,而且排查問題變得非常輕松。批量上架10臺機(jī)器,其中9臺沒問題,1臺有問題,那肯定是硬件問題,因為都是跑的同一個腳本,通過人海戰(zhàn)術(shù)部署就無法這么快定位。還有個例子,有段時間我們發(fā)現(xiàn)某兩個機(jī)房的表現(xiàn)不一樣,因為程序是統(tǒng)一的,把正常運作的機(jī)房的程序拷過來,在表現(xiàn)有問題的那個機(jī)房機(jī)器上重新配置生成一下,如果問題仍然存在,那么一定是機(jī)房的原因。自動化的工具和流程可以最大程度地把人和機(jī)器隔離開,減少犯錯誤的機(jī)會,快速定位問題。
運維自動化不只是為了幫運維工程師節(jié)省精力,更重要是實現(xiàn)整個系統(tǒng)的可擴(kuò)展性,這也是BOSS最關(guān)心的。如果某個節(jié)點隨時可以摘掉,運維工程師就沒必要24小時待命,要是不能摘,一旦出問題,哪怕是三更半夜也得爬起來。要做到良好的可擴(kuò)展性,需要運維工程師從架構(gòu)上去設(shè)計它。eBay的工程師曾說過,做任何架構(gòu)都要考慮一個問題:如果負(fù)載擴(kuò)大10倍怎么辦?架構(gòu)的擴(kuò)展性一定要從系統(tǒng)設(shè)計之初開始做。當(dāng)然,不是說一開始就要考慮架構(gòu)擴(kuò)到100倍怎么辦,要用進(jìn)化的思想去看架構(gòu),分階段進(jìn)行容量規(guī)劃。運維工程師雖然不怎么寫程序,但是他們接觸了許多非常優(yōu)秀的軟件,如Apache、Nginx、LVS等,好的運維工程師一定有好的分布式理念。
所有這一切想實現(xiàn),前提是要做好時間管理。當(dāng)你忙得像狗一樣,沒有留下時間思考,就沒有機(jī)會去深入細(xì)節(jié)。有時間以后,就可以去做工作上的優(yōu)化,包括工具的使用、流程的優(yōu)化、執(zhí)行結(jié)果的監(jiān)控等,還可以考慮人員的互備和管理。這一切都是環(huán)環(huán)相扣的,只有把細(xì)節(jié)封裝好了才能在時間、資源、和人員上做到銜接。
技術(shù)人攻略:運維做得這么好,一定和你過去的經(jīng)歷有很大關(guān)系吧?
我運維能做得這么High的前提是對Linux真的很了解。大學(xué)時機(jī)緣巧合,同學(xué)的表哥從美國回來,告訴我們Linux很火。當(dāng)時對未來沒有明確方向,沒有別的選擇,就對準(zhǔn)Linux這個方向努力。四年里看了大量UNIX的書,做了大量實驗,包括編譯內(nèi)核嘗鮮。在大學(xué)里已經(jīng)把系統(tǒng)管理員、網(wǎng)絡(luò)管理員的基礎(chǔ)打扎實了。
2002年畢業(yè)后找的第一份工作是在廣州一家數(shù)據(jù)中心做系統(tǒng)管理員,主要做基礎(chǔ)運維,幫助客戶調(diào)試機(jī)器和上架。那時候服務(wù)器很少,就算在數(shù)據(jù)中心,一個月才會有一、二十臺機(jī)器進(jìn)來。03年回了杭州,做過計算機(jī)老師兼網(wǎng)管,但心里還是割舍不下對Linux的這一份熱愛,于是加入浙大網(wǎng)絡(luò),接觸到應(yīng)用運維,并認(rèn)識了現(xiàn)在UPYUN的創(chuàng)始人。
04年我去了臺灣威盛,開始做嵌入式Linux系統(tǒng)。在這家公司待了5年多,不僅讓我重新認(rèn)識了Linux,并且拓寬了職業(yè)生涯。做到第3年的時候我感覺遇到了瓶頸,一方面不想放棄技術(shù),另一方面又想了解客戶和外面的世界。迷茫的我當(dāng)時向公司總裁請教人生的規(guī)劃,他曾是3COM前30位員工,在他的建議下我轉(zhuǎn)做售前技術(shù)支持。原以為工程師比技術(shù)支持牛,但后來才發(fā)現(xiàn)技術(shù)支持很鍛煉人,不僅要懂技術(shù),還要懂表達(dá),考驗現(xiàn)場發(fā)揮和感染力。通過寫大量的方案,還鍛煉了寫作能力。
做了兩年技術(shù)支持后,被公司提升到技術(shù)管理崗。一開始不懂管理,工作分不下去,我自己也做得很累。于是又去找總裁聊天,才發(fā)現(xiàn)我保護(hù)下屬的做法其實是害了別人不能成長,而自己也成了公司的天花板。好的管理者應(yīng)該做托板,把下面的人托上來。明白了這個道理之后,我改變了策略,把手頭的工作整理成WiKi文檔,交給下面的人去執(zhí)行。多出來的時間用來跟蹤新技術(shù),做前瞻性的研究,并且把學(xué)到的東西分享給大家,幫助下面的人快速進(jìn)步。
常有人問我,你把知識都分享出去了,會不會擔(dān)心被取代。我個人認(rèn)為這種擔(dān)心大可不必,豐富的經(jīng)驗和閱歷是偷不走的。紙上得來終覺淺,絕知此事要躬行,我分享自己思考后的結(jié)果,別人想倒推我思考的過程仍然需要經(jīng)驗。就像大家每天都在吃飯,可為什么只有一小部分人成為美食家呢?因為這些人會用心去思考,深入進(jìn)去,方能總結(jié)一些門道出來。一個真正的強(qiáng)者,不是擺平了多少人,而是看他能夠幫助多少人。我的從業(yè)經(jīng)歷也證明,如果把事情做得漂亮,不讓自己成為公司的瓶頸,反而會獲得更多信任,就算離開依然互相尊重和感激,甚至在以后的人生路上,遇到困難別人也會幫助你。
技術(shù)人攻略:你過去一直在嵌入式領(lǐng)域發(fā)展,為什么會選擇進(jìn)入互聯(lián)網(wǎng)行業(yè)?
互聯(lián)網(wǎng)蓬勃發(fā)展起來以后,圍繞Linux出現(xiàn)了很多創(chuàng)新的技術(shù),我骨子里對互聯(lián)網(wǎng)很憧憬。嵌入式Linux做的往往是實體產(chǎn)品,對性能、并發(fā)性沒有考量,所以體會不到Linux在互聯(lián)網(wǎng)如火如荼情況下的那種威力。我很向往操縱成百上千臺機(jī)器的感覺。2010年加入了國內(nèi)較大的一家在線客服系統(tǒng),對實時性,大并發(fā)要求很高。那時的工作是重新設(shè)計架構(gòu),提升性能,最后用原來一半的機(jī)器實現(xiàn)了同樣的業(yè)務(wù)負(fù)載,但卻離我最初想操控成百上千臺機(jī)器的夢想有點偏差。公司的業(yè)務(wù)規(guī)模無法讓我完全施展自己的才華,于是重新做了選擇。
那時在鳳凰古鎮(zhèn)待了兩個禮拜,想自己未來的方向。98年選擇Linux,是聽了前輩的建議,這條路是選對了。工作多年以后,有了自己的閱歷,就要結(jié)合自己的思考,去想未來在哪里。思考的出發(fā)點其一是興趣愛好,其二是找到自己的自豪感來自哪里。我一直認(rèn)為運維工程師就是讓Linux跳舞的人,當(dāng)我操縱幾百臺機(jī)器,整齊劃一地做一件事情,那種感覺特別棒。
我想清楚了自己未來的方向是做云上的運維,選擇加入UPYUN有幾個原因,一是可以實現(xiàn)我操縱幾百、幾千臺機(jī)器的夢想;二是我過去幫別人做架構(gòu)的項目,都轉(zhuǎn)向了阿里云,我意識到云的發(fā)展一定會給傳統(tǒng)運維帶來打擊;三是我比較擅長做業(yè)務(wù)的抽象和自動化,對DevOps有自己的想法;再加上UPYUN幾位創(chuàng)始人都是浙大網(wǎng)絡(luò)的同事,在正式加入UPYUN之前,我就以顧問的角色幫他們解決運維和架構(gòu)上的問題,彼此之間很信任。如果憑個人能力,可能要等到四五十歲才能出來創(chuàng)業(yè),但尋找到志同道合的人,大家能力互補(bǔ),就可以在年輕的時候去追尋自己的夢想。
技術(shù)人攻略:云計算領(lǐng)域競爭激烈,你怎么看待UPYUN專注的云存儲市場?
UPYUN提供靜態(tài)文件的存儲和CDN加速服務(wù)。單從CDN來說,有老牌的網(wǎng)宿和藍(lán)汛;單從后端存儲來說,網(wǎng)盤大戰(zhàn)早已白熱化了。為什么UPYUN能在夾縫中生存,因為我們走了一條服務(wù)路線。網(wǎng)宿、藍(lán)訊只做CDN,不做后端存儲;網(wǎng)盤只做存儲,但目標(biāo)是做用戶的大數(shù)據(jù)分析,不會為網(wǎng)站做加速。UPYUN將存儲和加速結(jié)合起來,企業(yè)不需要利用多套架構(gòu),把東西放在網(wǎng)盤上,再找網(wǎng)宿和藍(lán)訊去加速。單從CDN角度來說,網(wǎng)宿和藍(lán)訊的帶寬是混合模式,包括了視頻點播、流媒體等服務(wù),導(dǎo)致高峰期帶寬特別擁堵。而UPYUN是針對網(wǎng)站和移動應(yīng)用的靜態(tài)資源做存儲、處理和分發(fā)加速,目標(biāo)人群高度統(tǒng)一,應(yīng)用類型有很多共通性,高峰期不會出現(xiàn)嚴(yán)重的帶寬沖突。
UPYUN早期的創(chuàng)業(yè)方向是做圖床網(wǎng)站又拍網(wǎng),在圖片領(lǐng)域有著7、8年技術(shù)積累。比起大而全,我們更擅長做小而美的事,同時也和專業(yè)的第三方公司合作,例如DNSPod,Takling Data等。我們的理念是,行業(yè)之間要抱團(tuán),專業(yè)的事交給專業(yè)的人做,不然大家都在浪費時間和精力,還要提防被BAT干掉。
技術(shù)人攻略:你怎么看待DevOps,運維和開發(fā)的關(guān)系應(yīng)該怎樣平衡?
DevOps國內(nèi)大家提得多,用得少。難度在于思路上的轉(zhuǎn)換,運維自動化是一個結(jié)果,要做到這一點,首先需要抽象業(yè)務(wù)模型。以業(yè)務(wù)軟件性能監(jiān)控為例,如果軟件工程師在程序中插入很多的鉤子或探針,就可以統(tǒng)計出數(shù)據(jù)來,不需要運維費心監(jiān)控;軟件工程師在設(shè)計程序的時候,考慮到了分庫分表,考慮到了大并發(fā)和分布式的設(shè)計,運維就可以水平擴(kuò)展機(jī)器。開源軟件但凡名氣大的,程序日志信息非常詳盡,可以通過標(biāo)準(zhǔn)的syslog或者日志去監(jiān)控。但根據(jù)我接觸的大多公司和工程師的情況,大家都忙于實現(xiàn)業(yè)務(wù)功能,連個文檔甚至注釋都不愿意寫,更別提能夠考慮這么周全了(UPYUN團(tuán)隊這方面做得不錯),所以才需要做運維的去補(bǔ)位、去優(yōu)化流程。運維苦逼的公司,軟件工程師也幸福不到哪里去,這種負(fù)能量是相互傳遞的。
至于是開發(fā)人員學(xué)會運維,還是運維人員學(xué)會開發(fā),在我看來是殊途同歸。高級軟件工程師會測試自己的程序,知道性能指標(biāo)是什么情況,但如果正好遇上一個三流的運維工程師,程序性能上不去,那么這個軟件工程師可能會自己去找原因,這樣他就做了運維工程師的工作。另一種情況,一個三流軟件工程師的程序到了我手里,因為已經(jīng)做了性能監(jiān)控,第一時間就知道程序跑得好不好,如果程序出現(xiàn)死循環(huán)或者內(nèi)存泄露,我會告訴這位工程師程序有bug。但如果軟件工程師很忙,那么我就要去把這個bug查出來。自己的修煉功底很重要,其次是要去尋找小伙伴,發(fā)現(xiàn)問題的時候如果能坐下來互相學(xué)習(xí)和探索,就能學(xué)到更多知識。
我們現(xiàn)在運維做得很好,可以倒逼開發(fā),讓他們加快新業(yè)務(wù)模型的開發(fā),讓公司加快業(yè)務(wù)增長速度,因為再上一百臺、一千臺機(jī)器都是分分鐘的事情。運維人員的強(qiáng)勢,是要通情達(dá)理,站在全局的角度上,才能說程序員想聽的話,說老板聽得懂的話。我加入UPYUN之后,一方面做了很多內(nèi)部分享,把我的理念毫無保留地告訴大家,幫助大家提升工作的效率。另外用實際行動把運維自動化、標(biāo)準(zhǔn)化做出來,去年花了三個月做嵌入式Linux原型,一個半月測試穩(wěn)定性,然后用一臺新機(jī)器放到集群里,性能監(jiān)控發(fā)現(xiàn)新架構(gòu)的機(jī)器響應(yīng)、負(fù)載都有很大提升,然后就開始逐漸推廣更新。
技術(shù)人攻略:運維領(lǐng)域有什么新趨勢?
虛擬化會越來越大行其道。現(xiàn)在運維能夠讓幾百臺機(jī)器跳舞,但還不能讓幾百個應(yīng)用跳舞。舉個例子,做日志分析的Hadoop集群晚上啟動,而音頻處理或Python服務(wù)器白天會吃緊。要平衡物理機(jī)器上的資源利用率,只有依靠虛擬化,讓同樣的機(jī)器在白天變成Python服務(wù)器,晚上變成Hadoop服務(wù)器。我們打算采用Docker做虛擬化,這個技術(shù)去年才誕生,但業(yè)界已有相當(dāng)多公司對它抱有很大興趣。
運維工程師有必要學(xué)一門能打通前后端的語言,如Node.js加Python。未來的應(yīng)用會越來越輕,后端放在云里,前端是個瀏覽器。要從兩個角度去思考這個問題,首先JavaScript是唯一的瀏覽器原生語言,世界上幾十億的設(shè)備都在運行瀏覽器的時候,想想看它有多么重要。其次,前端用瀏覽器這樣輕巧的東西,后端必須有云的支持,這決定了運維人的職業(yè)生涯應(yīng)該往云端靠。往云端靠有幾個途徑,作為開發(fā)者要了解BAT之類的開發(fā)平臺,或者是加入做云的公司,去做云上的運維和云上的開發(fā)。JavaScript會越來越大行其道,學(xué)一門能打通前后端的語言,能獲得最高的學(xué)習(xí)效率。
技術(shù)人攻略:能不能給新人一些學(xué)習(xí)Linux的建議?
任何技術(shù)都是競技活,一定要多做、多練。我自己學(xué)Linux的時候是什么都玩,一開始的時候裝系統(tǒng)、裝Apache環(huán)境、裝MySQL,也用PHP寫論壇,聊天室程序,踏踏實實做個完整的項目就是最好的鍛煉。印象最深的就是2001年那會,編譯內(nèi)核加入了對reiserfs和ext3文件系統(tǒng)的支持,那時的2.4內(nèi)核可以裁剪到500KB,太有趣了。到了大四那年出來個Soft Raid,我們又開始編譯,硬盤不夠就從同學(xué)的機(jī)器上拆出來一個硬盤,用兩塊硬盤組成陣列做實驗。
學(xué)習(xí)過程中不能老是跟著別人的腳步走,要有自己的思考,才能發(fā)明新東西。所謂的技術(shù)難題就是對未知的茫然,任何你不知道的東西都覺得是天大的東西,捅破了就明白了,但關(guān)鍵是這個捅的過程,是自己捅、還是別人捅。如果遇到問題就搜索,對別人總結(jié)出來的方法不加思考地應(yīng)用,很可能會影響自己的思考和成長。我們那時沒有這么發(fā)達(dá)的網(wǎng)絡(luò),也沒有那么多的教材,很多東西都是要自己反復(fù)做實驗,調(diào)參數(shù),然后走在路上、吃飯時、睡覺時思考琢磨才能整明白。現(xiàn)在條件這么好,我不反對凡事上網(wǎng)搜索,但一定要做好筆記,整理心得,要真正轉(zhuǎn)化成自己理解的內(nèi)在的東西。這跟古人的“學(xué)而不思則罔,思而不學(xué)則殆”是一個道理。
多看書,看好書,如何看書也很重要,要學(xué)會查漏補(bǔ)缺,細(xì)品慢琢磨,我個人建議不光技術(shù)書,還有情商、管理、哲學(xué)的書都要看,做人一定要文藝(我喜歡讀《泰戈爾詩選》《明朝的那些事》)。少抱怨,要懂得感恩和回饋,這樣人生才是精彩的。有機(jī)會盡多參加甚至組織開源活動,鍛煉自己的口才和交際能力,“教”是最好的”學(xué)”。經(jīng)營好自己的影響力,可以交到更多的朋友。推薦看《禪》道和《了凡四訓(xùn)》
《UNIX編程藝術(shù)》這本書要重點推薦,我做了很多年總結(jié)出來的東西,人家30年前就總結(jié)出來了。里面提到的“模塊原則”、“分離原則”、“吝嗇原則”、“生成原則”、“擴(kuò)展原則”,還有很多先進(jìn)的理念都讓人嘆為觀止。如果想要對Linux本質(zhì)有深入理解,推薦去打造一個自己的Linux版本。有個開源項目叫LFS(廚房里的Linux),給你一本菜譜,告訴你打造Linux需要哪些軟件,可以照著這本菜譜把Linux從頭到尾編譯一下。此外,我們還要學(xué)會時間管理(不要告訴我你都會利用好時間),推薦《暗時間》和《把時間當(dāng)作朋友》。
一定要找到自己學(xué)習(xí)的動力是什么,我招聘新人的時候?qū)€人技能看得不重,更關(guān)心他的動力和熱情來自于什么地方。在威盛的時候曾招聘過一個高中生,他之前因為貪玩沒考上大學(xué),知道生活的艱辛后開始學(xué)Linux。公司原來從沒招聘過高中生,他進(jìn)來之后非常努力,成長非常快。我在他身上看到一點自己的影子,高中一開始我成績不錯,以為憑著聰明就可以輕松學(xué)得不錯,直到高三才明白,原來那些表面上的天才背后都下了功夫。那個黑色的七月給了我很多教訓(xùn),我再也不認(rèn)為自己是天才,而明白了要靠腳踏實地努力才能得到自己想要的東西。人在歷過挫折以后,能夠爆發(fā)出的能量是很驚人的。
人生就是一場修行,我們都是半杯水,這才有了人生存在的意義。不自卑,不驕傲,尋找互補(bǔ),越努力,越幸運,做最好的自己!
技術(shù)人攻略訪談是關(guān)于技術(shù)人生活和成長的系列訪問,歡迎和我們有共同價值觀的你關(guān)注“技術(shù)人攻略”,郵箱 devlevelup@gmail.com,新浪微博 @devlevelup,希望能成為技術(shù)人成長的精神家園。
歡迎通過微信公眾賬號關(guān)注技術(shù)人攻略
感謝:
感謝SegmentFault提供博客專欄及推廣支持。
感謝迅達(dá)云成提供云主機(jī)及技術(shù)支持。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/7900.html
摘要:導(dǎo)語本期訪談對象小猴機(jī)器人,清華人工智能專業(yè)博士在讀。或許因為成長于廣袤的內(nèi)蒙,小猴身上帶著大山和草原一般的灑脫與樂觀,在他鐘愛的無人車上,印上了一個美好的我們的征途是星辰大海。技術(shù)人攻略除了規(guī)則挖掘,人工智能遇到的難題還 showImg(https://segmentfault.com/img/bVc1yA); 文:Gracia,攝影:周振邦 (本文為原創(chuàng)內(nèi)容,部分或全文轉(zhuǎn)載均需經(jīng)作...
閱讀 709·2021-11-15 11:37
閱讀 3333·2021-10-27 14:14
閱讀 6131·2021-09-13 10:30
閱讀 2975·2021-09-04 16:48
閱讀 1941·2021-08-18 10:22
閱讀 2139·2019-08-30 14:19
閱讀 741·2019-08-30 10:54
閱讀 1758·2019-08-29 18:40