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