技術人攻略訪談二十五:運維人的野蠻生長

請輸入圖片描述
文:Gracia(本文爲原創內容,部分或全文轉載均需通過做者受權,並保留完整的做者信息和技術人攻略介紹。)html

導語:本期採訪對象邵海楊@海洋之心-悟空UPYUN運維總監。第一波互聯網潮流興起以來,Web運維做爲一份職業已經存在了十幾年。在廣泛的印象裏,運維人老是和「辛苦」這個詞劃上了等號。飛增的流量帶來網站規模和複雜性的提高,在高壓環境下生存的運維人,誰未曾爲服務上線徹夜堅守?誰不曾被半夜報警緊急叫醒?誰不是問題出現後第一個知道,問題解決後最後一個離開?O'Reilly出版的《網站運維:保持數據實時的祕密》這本書的第一章,對運維職業作了這樣的描述:Web運維沒有定義好的職業路徑,也沒有教育可以造就懂得運維Web基礎結構的人才。追求Web運維這個職業,你將成爲一名拓荒者。前端

想征服這塊荊棘叢生的領地,成功的拓荒者不只須要掌握堅實的基礎,更少不了長期的堅持和探索的勇氣。從毫無章法到遊刃有餘,邵海楊用了差很少10年時間,當他能夠把Linux玩得如同庖丁解牛(把Linux裁剪到12M),天然也能輕鬆玩轉運維。因而咱們看到了一個快樂的運維人,在UPYUN這家以雲服務爲核心業務的公司,3人的運維團隊用高度自動化的方式管理着500臺服務器,不只能保證系統的可擴展性,還能實現平滑的升級和問題的快速定位。在荒地上闢出新路,和邵海楊對Linux的熱愛密不可分。見面那天,咱們不幸選擇了一家很是吵的餐館。爲保證錄音效果,他扯着嗓子、眉飛色舞地吼了兩個多小時,說他怎麼看幾百臺Linux在他的控制下跳舞,我眼前也瞬間浮現出幾百只小企鵝跳舞的奇妙畫面。他但願能傳遞運維的正能量,就和攻略君一塊兒來看這段運維人的拓荒歷程吧!程序員

  • 技術人攻略:可否介紹一下你是如何把嵌入式Linux的思想應用到了運維領域?

我98年進大學開始接觸Linux,到04年加入臺灣威盛以前,已經玩了6年Linux。包括各類服務器配置,IDC機房的網絡,LAMP組合都得心應手,自認爲玩得還不錯。可接觸了嵌入式Linux以後,才發現原來Linux還有不少奇妙的玩法和專用領域。以前只瞭解上層應用,對Linux自己的印象還停留在幾百兆的一張光盤和一堆服務配置,其實根本沒有入道。編程

在威盛的工做是作車載嵌入式系統,屬於定製化的Linux系統,去掉了不須要的硬件模塊和驅動,封裝出一個很小的、精幹穩定的操做系統。作完這個系統以後,我對Linux的每一部分都瞭解得很清楚,像庖丁解牛同樣,能把Linux作到12M(2005年用16MB的DOM盤)。segmentfault

加入UPYUN之後,發現業務和硬件都是自由、自有且可控的,很適合爲它打造一個專有系統。因而我把嵌入式的思想用到了運維中,打造了一個86M的專有Linux系統。這個系統能夠灌到4G或8G的U盤裏,當上架新機器時,只需插上U盤,配合執行一些腳本,機器就搖身變成存儲或CDN服務器。UPYUN的500臺機器都採用這種方式管理,如今哪怕一天部署300臺也不成問題,極大提高了運維效率。後端

採用U盤系統的好處不只在於快速安裝,更重要是實現系統的平滑升級。有了U盤之後,能夠把系統鏡像寫到U盤裏,升級以後,再把鏡像寫回到磁盤,經過兩種媒介的切換,能夠保證3分鐘內整個系統面目一新。採用光盤網絡安裝的方式雖然也能提高效率,但只有硬盤一個載體,沒法及時給正在運行的操做系統升級。咱們的CDN分佈在全國,數量多又分散,光盤網絡安裝的方式更適合集中式機房。瀏覽器

更酷的是,因爲系統和安裝的標準化程度很是高,系統又很基礎,沒有敏感數據,咱們規範化和簡化了上架流程。後續採購新機器,只需將定製好的U盤快遞給經銷商,經銷商用程序生成一個硬件檢測報告,截圖發給咱們確認,證實這臺機器OK,直接就能夠發到機房上架。這省卻了原來經銷商先檢查一遍硬件,打包快遞給咱們,咱們拆封檢查、灌系統,再打包發給機房的中間環節。運維作到連機器都不碰,把人解放了出來。服務器

  • 技術人攻略:運維工做廣泛很辛苦,你卻能作得如此快樂,有哪些經驗能夠分享?

流程比補位更重要,方法比拼命更重要。UPYUN運維團隊只有3我的,但很早就作了流程規範和腳本處理,從最初幾臺到如今的五百臺機器,再到未來的五千臺、五萬臺也都是用一樣的方式管理。國內不少公司對運維的認知度不高,致使業務量上去以後,用堆機器的方式快速搶佔市場,運維也只能靠人力堆,24小時待命,過後救火,天然會以爲辛苦。微信

運維想作得輕鬆,首先要作到自動化,其次是監控常態化,而後是性能可視化。服務器不會平白無故出問題,犯病以前確定有徵兆。用監控系統作連續的健康檢查,會很容易發現故障觸發緣由。新出現的問題要及時增長監控數據,例如一臺機器上發現CPU過熱報警,處理後會監控全部的機器是否有CPU過熱的狀況。網絡

自動化作好以後,不再怕頻繁部署,並且排查問題變得很是輕鬆。批量上架10臺機器,其中9臺沒問題,1臺有問題,那確定是硬件問題,由於都是跑的同一個腳本,經過人海戰術部署就沒法這麼快定位。還有個例子,有段時間咱們發現某兩個機房的表現不同,由於程序是統一的,把正常運做的機房的程序拷過來,在表現有問題的那個機房機器上從新配置生成一下,若是問題仍然存在,那麼必定是機房的緣由。自動化的工具和流程能夠最大程度地把人和機器隔離開,減小犯錯誤的機會,快速定位問題。

運維自動化不僅是爲了幫運維工程師節省精力,更重要是實現整個系統的可擴展性,這也是BOSS最關心的。若是某個節點隨時能夠摘掉,運維工程師就不必24小時待命,要是不能摘,一旦出問題,哪怕是三更半夜也得爬起來。要作到良好的可擴展性,須要運維工程師從架構上去設計它。eBay的工程師曾說過,作任何架構都要考慮一個問題:若是負載擴大10倍怎麼辦?架構的擴展性必定要從系統設計之初開始作。固然,不是說一開始就要考慮架構擴到100倍怎麼辦,要用進化的思想去看架構,分階段進行容量規劃。運維工程師雖然不怎麼寫程序,可是他們接觸了許多很是優秀的軟件,如Apache、Nginx、LVS等,好的運維工程師必定有好的分佈式理念。

全部這一切想實現,前提是要作好時間管理。當你忙得像狗同樣,沒有留下時間思考,就沒有機會去深刻細節。有時間之後,就能夠去作工做上的優化,包括工具的使用、流程的優化、執行結果的監控等,還能夠考慮人員的互備和管理。這一切都是環環相扣的,只有把細節封裝好了才能在時間、資源、和人員上作到銜接。

  • 技術人攻略:運維作得這麼好,必定和你過去的經歷有很大關係吧?

我運維能作得這麼High的前提是對Linux真的很瞭解。大學時機緣巧合,同窗的表哥從美國回來,告訴咱們Linux很火。當時對將來沒有明確方向,沒有別的選擇,就對準Linux這個方向努力。四年裏看了大量UNIX的書,作了大量實驗,包括編譯內核嚐鮮。在大學裏已經把系統管理員、網絡管理員的基礎打紮實了。

2002年畢業後找的第一份工做是在廣州一家數據中心作系統管理員,主要作基礎運維,幫助客戶調試機器和上架。那時候服務器不多,就算在數據中心,一個月纔會有1、二十臺機器進來。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早期的創業方向是作圖牀網站又拍網,在圖片領域有着七、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提供博客專欄及推廣支持。
感謝迅達雲成提供雲主機及技術支持。

相關文章
相關標籤/搜索