【大咖講堂-172期】三瘋:從應(yīng)用運(yùn)維到Devops你只差一點(diǎn)點(diǎn)
大家好,我是今天主播的“主播” — 三瘋,今天由我來給大家做《從應(yīng)用運(yùn)維到Devops你只差一點(diǎn)點(diǎn)》分享,希望期間大家保持安靜,有問題我們?cè)诜窒斫Y(jié)束后統(tǒng)一有Q&A環(huán)節(jié),Let’s begin。
個(gè)人簡(jiǎn)介:
我是馬哥教育的三瘋老師,之所以取名“三瘋”,是因?yàn)椤叭偂庇兄?dú)特的含義,也算是激勵(lì)自己趁著年輕“瘋狂一把”
* “瘋狂”的學(xué)習(xí)
* “瘋狂”的總結(jié)
* “瘋狂”的提升,所以“三瘋”又蘊(yùn)含著“野蠻生長(zhǎng)”。
年輕人要對(duì)自己狠點(diǎn),如果你按照平常的步伐就輸了。本人7年Linux一線經(jīng)驗(yàn),歷任我圖網(wǎng),百勝,阿里巴巴開發(fā)運(yùn)維相關(guān)工作,目前主要負(fù)責(zé)移動(dòng)互聯(lián)網(wǎng)技術(shù)及運(yùn)維平臺(tái)開發(fā);
個(gè)人對(duì)于自動(dòng)化運(yùn)維、Linux系統(tǒng)架構(gòu)、MySQL數(shù)據(jù)庫(kù)管理、集群、緩存系統(tǒng)、移動(dòng)互聯(lián)網(wǎng)技術(shù)、電商業(yè)務(wù)架構(gòu)、運(yùn)維體系建設(shè)略有研究,能獨(dú)立運(yùn)維的開發(fā),會(huì)寫點(diǎn)代碼的運(yùn)維。

上圖是我今天分享的主要內(nèi)容。
這六部分其實(shí)也是一個(gè)運(yùn)維人員逐步轉(zhuǎn)為運(yùn)維開發(fā)的過程,最后通過一定的方式來踐行DevOps,DevOps大家都不陌生了,這幾年一直比較火熱,其實(shí)對(duì)于DevOps一出來,大家都最直觀的感覺是“開發(fā)&運(yùn)維”綜合體,其實(shí)從我個(gè)人理解他更像一種文化。
任何概念和事物的出現(xiàn)都有其背后的含義。
舉個(gè)簡(jiǎn)單例子:
- 四流的企業(yè)賣苦力;
- 三流的企業(yè)賣產(chǎn)品;
- 二流的企業(yè)賣品牌;
- 一流的企業(yè)賣標(biāo)準(zhǔn);
而DevOps出來其實(shí)只是出了個(gè)標(biāo)準(zhǔn),然后各家公司借助這個(gè)概念在自己內(nèi)部公司實(shí)現(xiàn),這也和Java里面的接口和實(shí)現(xiàn)關(guān)系。很多公司也在極力的去追隨,尤其是一些小公司連CI/CD都還未解決的,就在往概念上靠攏,其實(shí)是有些為時(shí)過早,甚至不切實(shí)際,而對(duì)于中等以上規(guī)模的公司他其實(shí)是一項(xiàng)新挑戰(zhàn),畢竟對(duì)于運(yùn)維來說,他們的痛苦也只有自己知道,他們也需要自我救贖,即使你找個(gè)沒干過運(yùn)維的開發(fā)來,雖然能短暫的解決運(yùn)維的痛,但是長(zhǎng)久的苦還需要運(yùn)維自己去吞咽。當(dāng)然開發(fā)也是一樣,他們也必須知道運(yùn)維體系,畢竟在一個(gè)有著道德底線的社會(huì)時(shí)代,還是要“有娘生就要養(yǎng)”的。
好的,接下來開始正式的分享,回顧一下我們做應(yīng)用運(yùn)維的都干了點(diǎn)什么?時(shí)間都花費(fèi)在什么地方?自己在這些地方又有哪些成長(zhǎng)?未來你去下一家又有哪些東西可以讓你在日益競(jìng)爭(zhēng)激烈的社會(huì)中獲得更多的機(jī)會(huì)。

這張PPT上的我相信大家都做過,而且還不止一次的做,基本上大部分時(shí)間都消耗在這上面,因?yàn)檫@部分算是運(yùn)維日常工作中最占時(shí)間的部分,有些人甚至70-90%的時(shí)間都在這上面,然而這些事情對(duì)你自己來說又有什么成長(zhǎng)呢?這也是很多做運(yùn)維時(shí)間長(zhǎng)的會(huì)覺得沒有成就感,甚至認(rèn)為沒有價(jià)值的地方,這也就給運(yùn)維帶來了很多痛苦。

從圖中可以看到其實(shí)時(shí)間被打斷,半夜還在處理故障,個(gè)人的收獲有哪些呢?
- 機(jī)械重復(fù)
- 繁瑣無趣
- 沒時(shí)間學(xué)習(xí)
- 沒時(shí)間陪女票,甚至沒時(shí)間找女票
- 沒時(shí)間休息
- 沒有成就感
ROI太低,那如何擺脫現(xiàn)狀,尋求新的突破呢?
對(duì)于傳統(tǒng)運(yùn)維來說,他更像是照顧研發(fā)開發(fā)產(chǎn)物的線上維護(hù)的“后媽”,原本是誰(shuí)生誰(shuí)養(yǎng),但是規(guī)模變大后就有了專人維護(hù),對(duì)于這個(gè)“后媽”,他養(yǎng)活的可不只是一個(gè)兩個(gè)小孩,而是一群,甚至幾百上千的,要想管理好他們?cè)趺崔k呢?所以運(yùn)維不能算是一個(gè)工種,他應(yīng)該算是一種立足線上規(guī)范、穩(wěn)定,而以一種新的方式來驅(qū)動(dòng)研發(fā),提高研發(fā)效率,業(yè)務(wù)發(fā)展速度的“助推劑”

發(fā)個(gè)小圖調(diào)侃一下。
設(shè)想:如果你負(fù)責(zé)的東西沒有一個(gè)規(guī)范,沒有約束,十條業(yè)務(wù)線都難管理,所以這里就顯得運(yùn)維制度,規(guī)范化,自動(dòng)化,標(biāo)準(zhǔn)化的重要性了,很多小公司沒有標(biāo)準(zhǔn)化,因?yàn)樗麄儧]有遇到海量運(yùn)維的場(chǎng)景,隨便一個(gè)應(yīng)用幾千臺(tái)服務(wù)器,如果還停留在單臺(tái)維護(hù)的階段,那基本上沒得玩,畢竟2%的宕機(jī)率也夠你好好的“喝一壺了”,所以個(gè)人理解運(yùn)維應(yīng)該具備“四像兩學(xué)”的能力。“四像兩學(xué)”是什么?
“四像兩學(xué)”
* 像PD一樣指導(dǎo)開發(fā)
*運(yùn)維不是一個(gè)工種,而是一種文化,他是照顧線上業(yè)務(wù)的“后媽”
*既然要批量照顧,就要徹頭徹尾的按照運(yùn)維的規(guī)范來,否則自己養(yǎng)。
* 像運(yùn)營(yíng)一樣數(shù)據(jù)化運(yùn)維
*關(guān)注線上核心數(shù)據(jù)指標(biāo)和鏈路依賴關(guān)系
* 像PM一樣統(tǒng)籌全局
*關(guān)注穩(wěn)定性,容量,成本,效率,性能
* 像商人一樣“販賣”技術(shù)能力
*技術(shù)服務(wù)化,產(chǎn)品化
* 學(xué)會(huì)懶人思想去自動(dòng)化
*運(yùn)維從機(jī)器啟動(dòng)開始就已經(jīng)不需要人為介入
* 學(xué)會(huì)庸人模式去規(guī)范化
* 簡(jiǎn)單即是美,簡(jiǎn)單反而更容易管理
簡(jiǎn)單來說應(yīng)該把運(yùn)維日常的能力綜合起來,并能對(duì)外提供服務(wù),那么除了日常運(yùn)維工作,還有哪些是運(yùn)維需要經(jīng)常去做的呢?

大家先看半分鐘上圖,然后結(jié)合自己的工作看看自己實(shí)際情況。我將稍后分享我個(gè)人體會(huì)。
好了,我們繼續(xù),與其說運(yùn)維是一個(gè)工種,倒不如說運(yùn)維是一種文化,而這種文化其實(shí)貫穿著整個(gè)線上服務(wù)運(yùn)行甚至運(yùn)營(yíng)周期,比如:故障梳理和日常自動(dòng)化這算是運(yùn)維基本必備能力,當(dāng)然這背后不只是運(yùn)維經(jīng)驗(yàn)的沉淀,還需要借助工具平臺(tái)來支撐。再比如對(duì)于業(yè)務(wù)梳理、資源成本、應(yīng)用穩(wěn)定,這部分算是一名高級(jí)運(yùn)維必備技能,如果想做好一名應(yīng)用運(yùn)維,這部分是必不可少的,畢竟在這個(gè)過程中才能逼迫一名普通的系統(tǒng)運(yùn)維熟悉整個(gè)業(yè)務(wù)流程和服務(wù)穩(wěn)定性;對(duì)于服務(wù)化、數(shù)據(jù)化運(yùn)營(yíng),這部分就要求我們具有全局意識(shí),并能結(jié)合我們負(fù)責(zé)的業(yè)務(wù)提供必要的產(chǎn)品改進(jìn)支撐,做到數(shù)據(jù)驅(qū)動(dòng)運(yùn)維,數(shù)據(jù)驅(qū)動(dòng)業(yè)務(wù),數(shù)據(jù)驅(qū)動(dòng)產(chǎn)品。當(dāng)然從運(yùn)維角度來講,終極目標(biāo)是:“運(yùn)籌維幄,決勝千里”。
好了,這些是我對(duì)運(yùn)維的理解,接下來我將選擇幾個(gè)主要的關(guān)鍵點(diǎn)詳細(xì)說明一下。
首先,梳理業(yè)務(wù):把負(fù)責(zé)的業(yè)務(wù)想象成一個(gè)人,那么硬件就是支撐起這個(gè)人的骨架,網(wǎng)絡(luò)就是血管,各個(gè)應(yīng)用就是人身上的各種器官,各個(gè)器官間存在著某種聯(lián)系,只有各個(gè)器官都工作的正常,人才會(huì)健康,業(yè)務(wù)的整體結(jié)構(gòu)也一樣,各個(gè)系統(tǒng)間存在千絲萬(wàn)縷的聯(lián)系,理清各個(gè)系統(tǒng)間的關(guān)系,這個(gè)是運(yùn)維最重要的事情,也是很多工作的前提,并且這個(gè)工作開發(fā)做起來很麻煩,大部分的開發(fā)只是了解自己編寫的部分而沒有一個(gè)系統(tǒng)的概念。
其次,故障處理:解決線上的問題首先是要了解業(yè)務(wù)邏輯,如果線上業(yè)務(wù)不熟悉,你的監(jiān)控覆蓋率就更難提高,進(jìn)而故障發(fā)現(xiàn)率也很低,解決線上問題根本無從下手。那么運(yùn)維面對(duì)故障該怎么做呢?
1、運(yùn)維思路轉(zhuǎn)變:由出問題了找報(bào)警 轉(zhuǎn)變?yōu)?任何一個(gè)報(bào)警都會(huì)出什么問題。
2、功夫在平時(shí):平時(shí)多思考每個(gè)報(bào)警的意義和想象著可能出現(xiàn)什么問題?出問題了怎么解決。
3、必要的業(yè)務(wù)日志是否完善?
解決故障的能力是一項(xiàng)基本的必備能力,其中有自己的套路和方法,我們之前的公開課也做過分享,這邊就不再累贅了,后期大家感興趣的話可以再做分享。
然后,自動(dòng)化和服務(wù)產(chǎn)品化:技術(shù)能力的輸出需要有服務(wù)平臺(tái)產(chǎn)生,這樣一方面能借助平臺(tái)規(guī)范操作,規(guī)范平臺(tái)架構(gòu),甚至定義標(biāo)準(zhǔn),另一方面自動(dòng)化的前提是先標(biāo)準(zhǔn)化,所以標(biāo)準(zhǔn)的規(guī)則定義其實(shí)是由運(yùn)維來主導(dǎo)的,這也對(duì)運(yùn)維提出了新的挑戰(zhàn),畢竟未來“養(yǎng)娃”的活要靠自己,你想怎么帶就要先制定標(biāo)準(zhǔn)。
最后,穩(wěn)定和性能優(yōu)化:這部分其實(shí)主要發(fā)力點(diǎn)在強(qiáng)弱依賴,容災(zāi)方案,降級(jí)方案,限流,業(yè)務(wù)解耦,監(jiān)控完善方面,很多同學(xué)找到我然我?guī)涂春?jiǎn)歷,寫了很多關(guān)于性能優(yōu)化的東西,簡(jiǎn)單的描述了幾個(gè)參數(shù)就覺得是優(yōu)化了,其實(shí)不然,優(yōu)化遵循:監(jiān)控—>分析—>優(yōu)化—>監(jiān)控,整個(gè)是一個(gè)閉環(huán),你的任何變動(dòng)都是需要有數(shù)據(jù)支撐的,否則談優(yōu)化那就有點(diǎn)牽強(qiáng)了。
由此可見,隨著工具平臺(tái),自動(dòng)化,包括現(xiàn)在比較火熱的DevOps概念的發(fā)展,甚至包括AIops的發(fā)展,傳統(tǒng)運(yùn)維的發(fā)展道路越來越受限,當(dāng)然很多人也借助DevOps去做一些事情,畢竟“站在互聯(lián)網(wǎng)的風(fēng)口上,豬也能飛起來”嘛,所以瞅準(zhǔn)時(shí)機(jī),緊跟潮流,并能果斷涉足進(jìn)去也不至于英雄末路,中道崩殂,如果有機(jī)會(huì)還是去做一次轉(zhuǎn)型,畢竟運(yùn)維經(jīng)驗(yàn)是單純的開發(fā)不可替代的。
既然提到單純的開發(fā),那我們來看看單純的開發(fā)他們究竟在做什么?
- 方案
- 代碼
- 改BUG
- 優(yōu)化
其實(shí)開發(fā)來說更關(guān)注業(yè)務(wù)的發(fā)展,而如果讓一個(gè)業(yè)務(wù)開發(fā)來寫運(yùn)維平臺(tái),工具平臺(tái)寫出來通常會(huì)有兩種情況:
一、自我感覺是這么回事,但是實(shí)際操作不太像樣;
二、不懂運(yùn)維的整體操作流程,寫的工具平臺(tái)不符合運(yùn)維使用習(xí)慣,最終被吐槽,然后運(yùn)維還是回到最原始的方式,打開Terminal,shell腳本處理。
鑒于以上的情況,一個(gè)運(yùn)維平臺(tái)必然是具備運(yùn)維,研發(fā)能力的人去承擔(dān),而不是單一方面的人去處理,自然運(yùn)維做運(yùn)維開發(fā)貌似成了順理成章的事情了,那這時(shí)候就需要我們運(yùn)維同學(xué)去跨界學(xué)習(xí)一項(xiàng)新的技能—“研發(fā)能力”。
對(duì)于一門語(yǔ)言的學(xué)習(xí),這里我就不再累贅,畢竟“程序=算法+數(shù)據(jù)結(jié)構(gòu)”這個(gè)大家都知道,數(shù)據(jù)結(jié)構(gòu)通常指表結(jié)構(gòu),對(duì)象等,而算法也通常是指業(yè)務(wù)處理流程,對(duì)于運(yùn)維平臺(tái)的業(yè)務(wù)處理流程,其實(shí)更多的是運(yùn)維的經(jīng)驗(yàn)流程化。所以,對(duì)于新學(xué)開發(fā)的運(yùn)維同學(xué)來講,通常看看基礎(chǔ)語(yǔ)法和一個(gè)簡(jiǎn)單的web框架其實(shí)就可以去寫起來了。
這時(shí)就有很多同學(xué)開始問:我究竟學(xué)什么語(yǔ)言呢?什么語(yǔ)言更適合運(yùn)維入門呢?
每一門語(yǔ)言入門都不難,語(yǔ)言類的學(xué)習(xí),其實(shí)就是基礎(chǔ)語(yǔ)法+后期多練習(xí),很多同學(xué)寫Python,Java,Go,Ruby這些后端語(yǔ)言學(xué)習(xí)的知識(shí)點(diǎn)都差不多,當(dāng)然還有一些像BootStrap,React,VUE.js,AngularJS前端框架語(yǔ)言等,雖然前端的東西比較多,但是認(rèn)真對(duì)比其實(shí)可以和后端一起通學(xué)的。不管哪門語(yǔ)言,只要即刻著手,寫起來,不要等到需要了你才現(xiàn)學(xué),時(shí)間不我待,抓緊時(shí)間。
好了,鑒于開發(fā)學(xué)習(xí)方法各異,我就不在此過多描述,如果后期有關(guān)于開發(fā)學(xué)習(xí)理論的需要,可以再做分享,那我們今天最后一個(gè)主題是DevOps的賦能,究竟什么是DevOps呢?
大家有了解java的同學(xué)都知道接口和實(shí)現(xiàn)的關(guān)系,DevOps就相當(dāng)于接口,然后各家公司根據(jù)自己的情況去實(shí)現(xiàn),實(shí)現(xiàn)的過程和方式其實(shí)是不同的,比如說對(duì)于一些連CI/CD都沒有的,也想去借助DevOps去建立運(yùn)維流程,其實(shí)是有一些盲目的,畢竟未來是沒有單純的運(yùn)維和單純的開發(fā),有的是這兩者的結(jié)合,運(yùn)維的對(duì)開發(fā)的支撐方式由原來的手工支持編程了平臺(tái)能力支持,開發(fā)由原來委托式維護(hù)變成借助現(xiàn)有的運(yùn)維工具平臺(tái)去自助運(yùn)維。
如果說對(duì)于DevOps賦能,其實(shí)從我個(gè)人角度來講前期模式就是“運(yùn)維會(huì)開發(fā),開發(fā)會(huì)運(yùn)維”,這是所有的先決條件,當(dāng)然兩個(gè)角色側(cè)重方向不一樣,對(duì)于開發(fā)來講能把基礎(chǔ)的操作搞明白,比如簡(jiǎn)單的shell,常用的服務(wù),知道DNS,LVS,Nginx等的管理和維護(hù),而對(duì)于運(yùn)維來說就需要懂開發(fā),懂產(chǎn)品,懂交互,懂設(shè)計(jì),當(dāng)然如果懂一點(diǎn)用戶體驗(yàn)就更好了。

DevOps終極目標(biāo)其實(shí)就是他的實(shí)踐,提高綜合能力,打破職業(yè)邊界,讓公司技術(shù)迭代的速度更快,當(dāng)然也能讓自己的人生更有價(jià)值。“掙錢是你追著錢跑,值錢是錢追著你跑”,所以不管什么概念出來,建議大家透過現(xiàn)象去看本質(zhì),趁著年輕去拿到該拿到的東西,每個(gè)人的時(shí)間都是一樣的,但是時(shí)間利用率就取決于自己,如果要個(gè)DevOps附能的話,我覺得兩個(gè)維度:
* 個(gè)人維度:時(shí)刻保持激情提升自己的技能,對(duì)新生事物的保持好奇并堅(jiān)持學(xué)習(xí)。
* 公司維度:把運(yùn)維的技能產(chǎn)品化并服務(wù)化的方式提供出來,讓運(yùn)維的文化普及到公司,讓每個(gè)研發(fā)同學(xué)都有自我運(yùn)維的意識(shí)。
————廣告時(shí)間————
《馬哥Linux云計(jì)算及架構(gòu)師》課程,由知名Linux布道師馬哥創(chuàng)立,經(jīng)歷了8年的發(fā)展,聯(lián)合阿里巴巴、唯品會(huì)、大眾點(diǎn)評(píng)、騰訊、陸金所等大型互聯(lián)網(wǎng)一線公司的馬哥課程團(tuán)隊(duì)的工程師進(jìn)行深度定制開發(fā),課程采用 Centos7.2系統(tǒng)教學(xué),加入了大量實(shí)戰(zhàn)案例,授課案例均來自于一線的技術(shù)案例。
開課時(shí)間:11月06號(hào)
課程咨詢請(qǐng)長(zhǎng)按即可咨詢

