歡迎您光臨本站 註冊首頁

兩位資深運維談人生:開發和運維之間要形成你退我進的節奏

2013年4月的QCon北京會場上,兩位在運維界打拚多年的技術男聚首專訪間,就「運維人員的終極發展目標」這個話題展開了深入的討論。他們是:

    邵海楊(個人頁面),網名「海洋之心」,系統架構師,業餘撰稿人,十多年來一直致力於開源軟體及前沿科技的研究和探索,目前在又拍雲存儲任運維總監。杭州LUG組織者之一。
    趙建春(Coati),騰訊業務運維T4專家工程師,總監,技術運營通道委員。04年大學畢業后加入騰訊,先後參與過交友、音樂、賀卡、QQ空間等業務的開發。06年後和團隊一起專註於技術運維,負責騰訊社交網路事業群社區類WEB業務的運維和建設工作至今。經歷了業務規模從數十台設備到數萬台設備的快速發展歷程。過程中Coati在運維環境標準化,業務Set化,運維自動化及多地分散式部署等方面積累了豐富的實戰經驗。

運維工程師的終極目標是什麼?運維人員在職業發展上有哪些選擇?在DevOps趨勢滾滾而來的當下,運維應該如何應對,如何與Dev團隊形成和諧的步調?下面的對話將嘗試對上述問題進行解答。

InfoQ:今天的話題是海楊選的,整個談話也由海楊主持。我們今天不談那些沉悶的話題,而是聊聊運維應該如何規劃自己的職業和人生。那,海楊開始吧:)

邵海楊:首先我想說,我們做運維的一定要傳遞一種正能量給別人。網上很多文章描述運維都用到「苦逼」這個詞,有的還編了一個運維的藍精靈之歌,都是講運維要做搬機器,修修網路,修修電腦之類的苦活兒,但是我認為這不是運維的精髓。

我們是不是應該先把「運維」這個詞重新定義一下?作為騰訊T4 level的運維工程師,你能否講一講你所經歷的運維人生,給剛剛上路的運維者一些啟示?

趙建春:我這邊主要是比較偏軟體層面的運維,硬體層面運維接觸的比較少。另外,我是做開發出身的,所以和開發溝通起來比較好。

我的團隊都是做偏軟體層面的事情的。歸根到底,我們是做什麼的呢?我認為,我們是讓軟體活起來的人。開發把軟體開發出來以後,它只是一個程序。我們運維把它部署到線上去,這才讓它真正的運轉起來。我們是讓軟體真正的活起來的、有生命的一群人。

邵海楊:我同意。運維工程師真正的終極目標就是讓機器能夠跳躍起來,能夠滾動起來,能夠把我們業務的美好的一面給展現出來。運維工程師最大的成就是什麼?能夠操作成千上百台機器……

趙建春:成千上萬台。

邵海楊:而且還能夠和睦相處。機器與機器之間也可以團結互助,比如你的機器這裡有問題的,其他機器自動過來幫你分攤一下。

趙建春:是的。而且這樣的狀態是要軟體來實現的。

邵海楊:是這樣的。對於有些團隊來說,可能軟體工程師的技能有限,無法在交付軟體的時候就考慮到機器和諧共處的這些問題,這種時候就必須要靠運維工程師進行一些工作,如水平擴展、分庫、分表,從業務層面上去輔助軟體,做一些軟體開發的工作。

你可以在開發和運維之間自如切換,這一點我真的很佩服你。我自己原來是做PHP的,沒有接觸過大型的軟體開發的經歷,開發方面還是偏弱一點。

趙建春:這也是和自己的機遇相關的。這個是平台機遇,很難每個人都碰到一樣的平台機遇。

我覺得,每個人出去找到的第一份工作肯定是各式各樣的,有的人可能一不小心就成為軟體工程師了,有的人一不小心就進入到了運維工程師的行業。那個時候我就告訴他,你不管進哪個行業都沒有關係,因為我們前進、發展的道路是一樣的——比如,都要往架構師走。架構師說白了,就是以軟體為基礎。運維做到一定程度,你會用更多時間去想軟體要怎麼改進,運維的工作量就會減少。同時,軟體開發師在設計軟體的時候,也會更多考慮如何讓運維更加智能。無論你是在這兩種崗位中的哪一個崗位上,只要能夠有這種跨領域的交流,其實慢慢都會走到架構師這條路。

InfoQ:我打斷一下。我覺得剛才你們說的是一種理想的狀態,而現實是很骨感的。你們看到的現狀離這種理想的狀態還有多少差距?

趙建春:在我看來,做運維分兩類人:一類就是找了份工作,一類是真心喜歡技術。

找了一份工作的人,他對技術的痴迷以及研究沒有那麼深刻。當他在運維過程中遇到問題時,協調能力好的人就能夠通過協調的方式把這個問題解決了;協調能力不好的人,就只能打醬油。這兩種人都會有一個問題:長遠發展會有瓶頸。打醬油的那個肯定是不行的。有協調能力的人,他會把一個目標任務通過協調資源做好,但是對技術深度的積累就會比較差,這樣他在做一些偏技術型的推進、推廣的時候,就不能夠去勝任,因為和他合作的人會不太信任他。

對技術特別感興趣的人,遇到了問題,或者出了一些故障,他就會找各種各樣的辦法解決它,看看業界對這個問題有什麼研究結果,用各種辦法把它弄明白。這個時候如果有一個快速發展的平台,經常面臨爆髮式增長的業務,他就會在很短時間內遇到很多不同種類的問題和異常,很快成為一個很有積累的人,每個事情他都鑽的很深,他會積累到別人幾年時間都積累不到的經驗,然後會有很多深刻的體會和感受。

這種人又分兩種:一種協調能力很好;一種不怎麼說話。不怎麼說話的人,會成為運維領域專家,能夠解決很深的技術問題。協調能力很好的人,慢慢會有自己的想法,從根本上去反推開發,和開發講道理,探討這個問題應該怎麼樣來解決。因為很深入技術,所以和開發的溝通是對等的,他認為你說的有道理。長此以往,你對開發會越來越有影響力,給整個的業務和架構帶來控制和影響。

我以前招聘的時候常說,也許你做過開發,也許你沒做過開發,長遠的發展都是運維架構師。我們是不寫代碼的架構師,通過規範和約束產品的架構使它變得更好。

邵海楊:騰訊是大公司,高手多,分享又多。你們有騰訊大講堂,淘寶有阿里大學,只要努力積極的向別人去學習,成長的空間和機會就很多了。像我們小公司呢,一方面要積極的向自己的同事去學習,另外還要多去參加社區活動。因為在小公司,畢竟個人的能力有限,你旁邊有個高手,把他學到手了,還是井底之蛙。要不斷的走出去。

對於現在正在運維路上掙扎的那些人,他可能想讓自己的工作變得輕鬆一點。你對他們有什麼技能上的建議?

趙建春:讓工作變得輕鬆一點?

我覺得運維這個崗位和研發不太一樣,他要的知識面是廣度加深度。研發往往更要求深度,除了架構師之外,大部分研發工作需要有很好的深度才能完成。運維是軟體和硬體之間的一個橋樑,所以你就要懂得技術,懂得軟體,懂得開發,還要懂操作系統,懂硬體,所以聽上去對你的要求就會比較多,很難樣樣都很精深。

要讓自己做得比較輕鬆,你要能清楚的認識自己是一個什麼樣特點的人。

如果你是一個技術深度沒那麼深的人,那就建議多做一些技術項目的推動工作。其實團隊裡面,很多東西都是要持續的去花一年、兩年時間去推動的,把它從沒有做到百分之百,這個過程中,需要很多溝通、推動的技巧。一個很悶的工程師要把一個方案推銷出去,難度是很高的。但是一個很會打交道的人,他去推動這個事情就會很容易。雖然你對技術沒那麼精通,要做管理決策的時候會有問題,但是適合做項目的推進。

如果你對技術非常感興趣,尤其是如果你覺得自己對協調、推動這種事情不感興趣,那最好是走技術專家的道路,比如資料庫專家,軟體架構專家等等。

這兩個也可以結合起來。深、廣結合的人適合做管理。大多數這樣深度也還不錯、協調能力和溝通能力也還不錯的人都走到管理上去了,這樣的人發展的前景會更好一些。

不管怎樣,你應該很好的認識自身的特點。

邵海楊:你剛才提到的運維人員必須表達能力要好,這一點我非常贊同。運維工程師做的兩個事情,第一個是機器要聽話:我們要讓自己閑下來,用自動化的工具,統一管理,把流程規範掉,這樣我就可以批量的去操作機器。

第二個事情就比較難了,我需要問老闆要資源。身邊十台機器,用完了就用完了;再要十台的時候,就要考察你的表達能力。這一點我覺得非常痛苦。

我有個經驗,老闆他其實是對錢比較關心,或者對數據比較關心,你口頭跟他去講,他是沒有感覺的。如果老闆是懂技術的,我們就直接拿生產線上的監控圖給他看,說負載已經這個樣子了,他就能理解。如果老闆是不懂技術的,你給他看這個數據他還真的看不懂,所以必須給他業務報表,圖形化的業務報表給他看。總之,還是要動一些小聰明,去轉換成老闆能夠理解的方式去問他要資源。你只要能夠做到這兩點,這個事情就能夠做得很好。

趙建春:一般這樣的人的思維會比較清晰,說事情也會說的比較清晰。你要把一個技術問題讓別人聽懂,有些人還真做不到。

邵海楊:你今天上午演講的話題,我個人感覺還是偏大,大公司里用的多。小公司,比如說我們,還是用小的自動化加Puppet用的比較多一點。

趙建春:但是我覺得小公司也要非常注意,因為我們就是從小變大的。在這個過程中,我們最終選擇了這樣一個路,其實回過來看也是有很多的教訓,為什麼早不做?為什麼在很小的時候不做?在小的時候不意識到這個在大了以後會帶來的麻煩和困惑有多大,你就沒有這個壓力和動力去做;但是等它大了以後,資源永遠是有限的,尤其是咱們搞互聯網的,整天都在加班處理故障,哪有時間回過頭來做打掃清掃的工作。

你越早做,以後越不需要你去回過頭去把這個不標準的變成標準的。

InfoQ:我插一個問題:你也不知道你會不會變大,萬一白做了怎麼辦?

趙建春:當然是希望變大了。

邵海楊:我相信你做了標準化組件以後還真的會變大,因為你有這種想法以後,這個公司想不強大都不行。

趙建春:也不一定一開始就要做標準化組件,但是一開始你要多想,最好是根據長期對比選擇一兩樣的技術方案,而不是說什麼技術方案都有。不同的人進來就會帶來一套不同的技術架構,這是很不應該的,因為人員會迭代,會更替,他會走,也會來新的人。一旦人員發生更替變化之後,原來那堆系統就沒人管了。開發不用管,運維你得管,因為要對用戶服務。這時候痛苦的是你。

邵海楊:是的,必須要流程化。

我想問一個我比較關心的問題,當我進入一個公司以後,運維要去做一些事情,然後會牽扯到跟研發的爭議。怎麼去協調運維跟研發之間的節奏?

趙建春:這也不見得是我個人的經驗了,是公司的經驗,包括我的一些體會。

我總結就是有張有弛:開發進的時候我們退,開發退的時候我們進。

我們是要服務產品、服務用戶的,最終是要為用戶服務好。開發進的時候,他們可能會有很多很緊急的事情,要保證這個產品按時上線,或者說搶佔市場,他會產生很多需求。這個時候我要開下綠燈,那我們就退一下,全力支持好開發,去把這個做好。

但是呢,產品也會有周期,也會有波峰低谷,它有的時候比較閑,在這個時候你退我進,和開發造成一個很好的一個互動。

正式的做法是這樣子的:我們運維線每年都會制訂一個年度規劃的大目標,比如說我們今年要做容錯容災的跨Site分佈,這是我們的一個年度的計劃。當然這一年也許完成不了,如果完成不了就延後到下一年,但是我們提前就告訴你我們要做這樣的事情,明年我們在產品上做一些優化的項目,後年我們要支持一下IPv6,這些項目我們在年初的時候就會有一些優先的一些思考,今年應該做什麼,明年重點做什麼。這個時候和開發溝通,最好是讓兩邊都把這個任務考慮進去,排到自己的KPI裡面去。這個時候我們就會和開發協商,在一年的間裡面協商一些重要的事情,包括我們做這種規範化的建設,可能也會要他們來配合,那我不是說一年時間,你肯定是有忙的時候有閑的時候,忙的時間我肯定全力支持你,閑的時候你全力支持我,你進我退,我退你進,就是這樣。

邵海楊:你是說運維和研發是要充分交流的?

趙建春:我們是交流很多的,很多任務是共同協商裡面就要認同去做的。說白了,我們是支持開發的,是服務他們的,但我們要爭取他們的服務,在理論上要是對等的,不能我們一味的服務你,你不服務我。如果形成良好的互動以後,他就會互相支持。

邵海楊:不過,在我公司里也有這種情況:技術員有點水平,就開始有點脾氣了,我們運維人員還得去遷就。

趙建春:這是有可能的。但是,這也跟我們中午討論的一個話題有關,就是看能不能和開發形成良好的互助互信任的一個機制。而且我覺得除了剛才說的,也要高層來制訂一些在技術線上的一些長遠的目標。

邵海楊:我曾經在一個公司做的很開心,就是因為有高層支持。我們特別成立了一個研究組——我不知道你那邊騰訊叫什麼?類似技術委員會?

趙建春:技術委員會是做直接晉陞那種。

邵海楊:我們成立了一個研究組,這個研究組有個運維總監,就比如說我,然後還有個研發的頭,還有一個就是做業務這一塊的,還有一個就是產品經理。我們發現我們四個人坐在一張桌子上辦公的時候效率特別高,因為溝通只要跟上面的Leader溝通就好了。最怕就是什麼呢?就是前期沒溝通,等到要上線了再跟你來說,每個人心裡都會抵觸一下。我發現那個時候坐在一起的時候效率特別高,而且我們互相之間都學到了東西,一些好的Idea,好的技術,馬上就可以去做一些研究跟進。

趙建春:我們運維和研發Leader在和總監一起的時候就經常會討論一些問題,最近運維需要我們支持幫你們做什麼推動和改進。然後過年的時候交換一下信息,你明年重點做什麼,然後互相留下時間。但是呢,不要在開發很忙的時候去強制他做一些事情,這樣會使他會反感很大,他覺得你不理解他,他壓力也很大。

邵海楊:下一個問題,我想問一下,你認為運維工程師最需要的一種品質是什麼?

趙建春:我先說一個非技術的,就是能夠受委屈。為什麼這麼說呢?因為不管什麼地方發生了故障,都和運維有關,你都逃不了干係,都是你有一定的責任。所以有時候,你覺得自己很委屈,這個事真的和自己沒關係,甚至是公司有些處罰或者什麼的時候,他一定會把你涵蓋進去,這時候覺得做這個工作很沒意義,很痛苦。

但這個也不能這麼想。實際上,確實是所有的問題都可以歸結為一條:監控不到位。

還有,胸懷是被委屈撐大的,心胸放開闊了以後,那這些問題都不是問題,每一個問題都是一次學習的機會。

第二,我比較喜歡技術,我認為還是要有鑽研精神,要去學習深入了解技術。因為我們做運維的純粹是做技術的,我們不是做產品,不是做銷售。剛才我講的這個協調項目型的人,團隊里確實需要,但是不需要太多,一個團隊有那麼幾個就夠了。還是希望團隊的同事更多去更深入的研究和學習技術,然後這樣我們和開發才能有一個對等的溝通和交流,否則開發可能真的是會懶得跟你討論問題,他覺得我們兩個不在一個頻道上,溝通起來會很難。

我們每雙周都有團隊內部的分享。我曾經嘗試過兩次,第一次失敗了,組織了一堆人要去分享,讓你第一次講,他第二次講,他第三次講,這樣安排的發現不行,分享了三四節課以後斷了。第二次做的時候,我就親自出馬,自己提前準備了四門課,組織起來以後,如果哪裡沒人講了,我就講。同時我在底下去找一些Leader,找一些骨幹的同事,和他們討論他們有什麼可以貢獻的,希望他們來講。這時候再去大方向的撒網說,誰願意講來找我,給大家來提前準備,我就去提前把兩、三個月的分享的議題先統計下來。你可能沒做好PPT,那我就問他你要不要講,他說要講,溝通一個大概時間,他給我一個承諾以後他就去準備,這個時候等快斷糧的時候再去收集一下。

現在這個機制保持的比較好,我們已經堅持了兩年時間,有時候一周不止一次。

邵海楊:這點說到我心坎里去了。運維人員要不斷的學習新技術,同時還要分享,我一直認為一個人的學習是有限的。

趙建春:而且這樣的一個氛圍會帶動周圍的人去學。那些剛開始沒有想著去分享的人,看到別人都在分享,如果這個人有上進心,他會覺得自己落後了,是不是考慮要分享一下。

邵海楊:而且可以幫助他們鍛煉口才,就把交際能力這一塊也給提上去了。

趙建春:很多人很樂意分享。我們團隊裡面有很多同事分享了好幾次,他有些課題他要一次講不完,他要分好幾次講,比如Hadoop,或者是Linux Container,一次講不完,他就分幾個章節來講。

邵海楊:所以我對運維工程師只強調兩點,第一點就是運維自動化,一定要讓自己閑下來,才有更多的時間和精力去學習新知識;第二個,一定要堅持學習,尤其是Linux,因為很多新技術都是先在Linux上被實現的,所以你要堅持每天學習一點點。最關鍵的是一定要學會分享,因為你一旦會分享了以後,你會發現你的交際能力也變強了,你的口頭能力也變強了。

趙建春:也提升了影響力。

邵海楊:這些能力提升以後,以後我們去問老大要資源,就會變得很Easy。

[火星人 ] 兩位資深運維談人生:開發和運維之間要形成你退我進的節奏已經有402次圍觀

http://coctec.com/docs/service/show-post-246.html