編輯導(dǎo)語:隨著互聯(lián)網(wǎng)的發(fā)展,用戶對(duì)于產(chǎn)品的需求越來越高,更多的用戶追求“好看”和“好用”。本文作者分享了一種新的開發(fā)模式——DevOps開發(fā)模式的發(fā)展和開發(fā)模式,感興趣的一起來看看吧。
【資料圖】
瀑布開發(fā)大家肯定大學(xué)都學(xué)過吧,敏捷開發(fā)大家肯定工作中都聽過吧,現(xiàn)在又搞出來個(gè)DevOps開發(fā),這個(gè)估計(jì)就知道的不多了吧~
來,一起來接受知識(shí)的洗禮吧,知識(shí)就是力量,就是金錢,奧利給!
先告訴大家兩句話,第一句話是趨勢(shì),第二句話是概念。
趨勢(shì):目前很多大廠如阿里、騰訊、百度、頭條、美團(tuán)等公司內(nèi)部都在用DevOps開發(fā)模式。
概念:DevOps=Developers(開發(fā))+Operators(運(yùn)維),即開發(fā)團(tuán)隊(duì)和運(yùn)維團(tuán)隊(duì)一體化。
哈,只看概念啥感覺?是不是感覺概念是不可能看懂的,這輩子都不可能看懂的。
沒關(guān)系,在這里只記住兩件事即可:第一件事就是,DevOps是把開發(fā)和運(yùn)維綁定到一起了;第二件事就是,DevOps不是工具什么的,而是一種方法論。
其他的交給我,往下看,保證給你講解的明明白白的。
一、發(fā)展歷史
想要了解一個(gè)新的事物為什么會(huì)出現(xiàn),就比如DevOps,那么最好的方法,就是去了解他的過去,他的歷史。
前面說了,DevOps是一種開發(fā)模式,提到“開發(fā)模式”這四個(gè)字,你能想到什么?是不是瀑布開發(fā)和敏捷開發(fā)?
好,我們就先來扒拉一下,這兩種開發(fā)模式的演進(jìn)歷史。
二、瀑布開發(fā)
1. 背景
在互聯(lián)網(wǎng)初期,程序員還是科學(xué)家一樣的存在,當(dāng)時(shí)程序員的辦公室還被稱作實(shí)驗(yàn)室。
當(dāng)時(shí)的網(wǎng)民,也還沒有那么多,大多數(shù)時(shí)候,他們都是帶著敬畏之心提需求的。
并且開發(fā)出來的產(chǎn)品,只要能解決他們的問題,他們都是爭(zhēng)先恐后地給程序員燒高香、送錦旗,對(duì)研發(fā)周期,自然不敢有太多的要求,需求也自然是不變的。
在這種大背景下,就誕生了瀑布開發(fā)的模式,如下圖所示:
2. 特點(diǎn)
瀑布開發(fā)模式,最大的特點(diǎn)有三個(gè):
需求是固定的;
開發(fā)周期是固定的,可能為3個(gè)月,也有可能是1年;
設(shè)計(jì)、開發(fā)、測(cè)試、運(yùn)維各個(gè)環(huán)節(jié)是獨(dú)立的,當(dāng)前一個(gè)環(huán)節(jié)完全搞定,下一個(gè)環(huán)節(jié)才開始介入。
3. 弊端
這種模式的弊端,相信大家都知道,總結(jié)一下就是:需求不能快速得到驗(yàn)證!
有可能花了1年開發(fā)出來的東西,早已時(shí)過境遷,不再適合市場(chǎng);也有可能你搞了半年之后,發(fā)現(xiàn)搞出來的東西跟用戶的需求完全驢唇不對(duì)馬嘴,只能完全推翻,一切重頭再來。
這個(gè)時(shí)候啊,敏捷開發(fā)出現(xiàn)了。
三、敏捷開發(fā)
1. 背景
隨著時(shí)代的發(fā)展,互聯(lián)網(wǎng)的網(wǎng)民越來越多了,而且這些網(wǎng)民的口味也越來越刁了。
搞出來的產(chǎn)品,只是“能用”,已經(jīng)滿足不了他們的胃口了,更多的網(wǎng)民越來越追求“好用”以及“好看”。
而且這些人也變得越來越“朝三暮四”了,可能今天覺得這個(gè)好,明天就覺得那個(gè)好了,軟件開發(fā)的周期,也被壓縮的越來越短。
時(shí)代的大背景下,總有那么幾個(gè)腦子進(jìn)化的比較快的,于是乎,敏捷開發(fā)模式,登上了歷史的舞臺(tái):
2. 特點(diǎn)
最大的特點(diǎn)就是一個(gè)字:更快!
具體來說,敏捷開發(fā)可以更快地發(fā)現(xiàn)問題,產(chǎn)品被更快地交付到用戶手中,團(tuán)隊(duì)可以更快地得到用戶的反饋,從而進(jìn)行更快地響應(yīng)。
另外一個(gè)特點(diǎn),就是將開發(fā)與測(cè)試從對(duì)立關(guān)系,變成了同一戰(zhàn)線。
瀑布模式的時(shí)候,測(cè)試的工作,就是為了盡可能地挑開發(fā)搞出來東西的毛病,妥妥的你死我活。而敏捷開發(fā),則將二者目標(biāo)進(jìn)行了統(tǒng)一,都為了能夠更快更好地開發(fā)出產(chǎn)品而共同努力。
從敏捷宣言中,我們可以窺見其中的真諦:
十二條敏捷宣言:
我們的首要任務(wù)是通過盡早地、持續(xù)地交付可評(píng)價(jià)的軟件來使客戶滿意。
樂于接受需求變更,即使是在開發(fā)后期也應(yīng)如此。敏捷過程能夠駕馭變化,從而為客戶贏得競(jìng)爭(zhēng)優(yōu)勢(shì)。
頻繁交付可使用的軟件,交付間隔越短越好,可以從幾個(gè)星期到幾個(gè)月。
在整個(gè)項(xiàng)目開發(fā)期間,業(yè)務(wù)人員和開發(fā)人員必須朝夕工作在一起。
圍繞那些有推動(dòng)力的人們來構(gòu)建項(xiàng)目。給予他們所需的環(huán)境和支持,并且信任他們能夠把工作完成好。
與開發(fā)團(tuán)隊(duì)以及在開發(fā)團(tuán)隊(duì)內(nèi)部最快速、有效的傳遞信息的方法就是,面對(duì)面的交談。
可使用的軟件是進(jìn)度的主要衡量指標(biāo)。
敏捷過程提倡可持續(xù)發(fā)展。出資人、開發(fā)人員以及使用者應(yīng)該總是共同維持穩(wěn)定的開發(fā)速度。
為了增強(qiáng)敏捷能力,應(yīng)持續(xù)關(guān)注技術(shù)上的杰出成果和良好的設(shè)計(jì)。
簡(jiǎn)潔——最大化不必要工作量的藝術(shù)——是至關(guān)重要的。
最好的架構(gòu)、需求和設(shè)計(jì)都源自自我組織的團(tuán)隊(duì)。
團(tuán)隊(duì)?wèi)?yīng)該定期反思如何能變得更有戰(zhàn)斗力,然后相應(yīng)地轉(zhuǎn)變并調(diào)整其行為。
敏捷宣言是為銀河系帶來和平以及維護(hù)各自的平衡所邁出的很重要一步。
在很長(zhǎng)的時(shí)間里,相比此前基于流程和機(jī)械化的方式,這是第一次基于文化和“人性”來將不同的關(guān)鍵項(xiàng)目干系人連接在一起的方式。
人們開始互相交流,進(jìn)行基本的碰頭會(huì)議,并開始不斷的交流意見和看法。
他們開始意識(shí)到他們是有著很多比想象中還多的共同點(diǎn),客戶也開始成為他們之中的一員,而不再是像以往一樣只是往項(xiàng)目砸錢然后開始求神拜佛祈求一切順利如愿。
3)弊端
雖然敏捷開發(fā)大幅提升了軟件開發(fā)的效率和版本更新的速度,但是它的效果僅限于開發(fā)環(huán)節(jié)。我們發(fā)現(xiàn),運(yùn)維那邊,非常落后的手動(dòng)部署上線,就成了新的瓶頸。
運(yùn)維工程師,和開發(fā)工程師有著完全不同的思維邏輯。運(yùn)維團(tuán)隊(duì)的座右銘,很簡(jiǎn)單,就是“穩(wěn)定壓倒一切”。運(yùn)維的核心訴求,就是不出問題。
什么情況下最容易出問題?發(fā)生改變的時(shí)候最容易出問題。所以說,運(yùn)維非常排斥“改變”。
于是乎,矛盾就在兩者之間集中爆發(fā)了。
這個(gè)時(shí)候,神秘的主角DevOps,隆重登場(chǎng)了。
三、DevOps開發(fā)
1. 背景
到了當(dāng)今時(shí)代,互聯(lián)網(wǎng)的網(wǎng)民在海量增加,在這種背景下,誕生了眾多的互聯(lián)網(wǎng)大廠,以及多款現(xiàn)象級(jí)產(chǎn)品,比如微信、淘寶、抖音等等,互聯(lián)網(wǎng)的競(jìng)爭(zhēng)也越來越激烈。
快速迭代產(chǎn)品,快速占領(lǐng)市場(chǎng),快速占據(jù)用戶心智成為了各互聯(lián)網(wǎng)公司的目標(biāo),這個(gè)時(shí)候,就對(duì)產(chǎn)品開發(fā)提出了更高的要求,需要能夠?qū)Ξa(chǎn)品持續(xù)開發(fā)、持續(xù)集成、持續(xù)測(cè)試、持續(xù)部署、持續(xù)監(jiān)控,需要每天每時(shí)每刻都可進(jìn)行新版本的上線。
開發(fā)團(tuán)隊(duì)與運(yùn)維的矛盾,是時(shí)候環(huán)節(jié)一下了,怎么緩解呢?那就把它們也搞到同一戰(zhàn)線吧:
2. 特點(diǎn)
這種模式下,將“更快”,又提升了一個(gè)層次:用戶可以很早地就得到最終產(chǎn)品或服務(wù)的一部分進(jìn)行實(shí)際體驗(yàn),從而可以盡快的把發(fā)聵傳遞回需求管理團(tuán)隊(duì)和產(chǎn)品研發(fā)團(tuán)隊(duì)。
而這的一切,都需要?dú)w功于:DevOps將開發(fā)、測(cè)試、運(yùn)維都拉到了同一戰(zhàn)線!
敏捷有自己的宣言,而DevOps也有著自己的清單:
DevOps清單:
開發(fā)團(tuán)隊(duì)和運(yùn)維團(tuán)隊(duì)之間沒有障礙,兩者皆是DevOps統(tǒng)一流程的一部分。
從一個(gè)團(tuán)隊(duì)流轉(zhuǎn)到另一個(gè)團(tuán)隊(duì)的工作都能夠得到高質(zhì)量的驗(yàn)證。
工作沒有堆積,所有的瓶頸都已經(jīng)被處理好。
開發(fā)團(tuán)隊(duì)沒有占用運(yùn)維團(tuán)隊(duì)的時(shí)間,因?yàn)椴渴鸷途S護(hù)都是處于同一個(gè)時(shí)間盒里面的。
開發(fā)團(tuán)隊(duì)不會(huì)在周五下午5點(diǎn)后把代碼交付進(jìn)行部署,剩下運(yùn)維團(tuán)隊(duì)周末加班加點(diǎn)來給他們擦屁股。
開發(fā)環(huán)境標(biāo)準(zhǔn)化,運(yùn)維人員可以很容易將之?dāng)U展并進(jìn)行部署。
開發(fā)團(tuán)隊(duì)可以找到合適的方式交付新版本,且運(yùn)維團(tuán)隊(duì)可以輕易的進(jìn)行部署。
每個(gè)團(tuán)隊(duì)之間的通信線路都很明確。
所有的團(tuán)隊(duì)成員都有時(shí)間去為改善系統(tǒng)進(jìn)行試驗(yàn)和實(shí)踐。
常規(guī)性的引入(或者模擬)缺陷到系統(tǒng)中來并得到處理,每次學(xué)習(xí)到的經(jīng)驗(yàn)都應(yīng)該文檔化下來并分享給相關(guān)人員,事故處理成為日常工作的一部分,且處理方式是已知的。
總體來看,在人力成本如此之高、市場(chǎng)競(jìng)爭(zhēng)如此之激烈、用戶需求變化如此之頻繁的情況下,DevOps是大廠必須選用的一條路。
四、結(jié)語
好了,以上就是今天為大家總結(jié)的內(nèi)容了,你問我了解這些有啥用?
作為互聯(lián)網(wǎng)界走在最前沿的產(chǎn)品經(jīng)理,你說你該不該了解這些個(gè)玩意;然后作為顏值與智商兼?zhèn)?,然后日夜期盼世界和平的碼農(nóng)們,有這樣一個(gè)機(jī)會(huì),擺在你們面前,你們難道不應(yīng)該珍惜么?
#專欄作家#
曉莊同學(xué);公眾號(hào):曉莊同學(xué)產(chǎn)品筆記,人人都是產(chǎn)品經(jīng)理專欄作家?;ヂ?lián)網(wǎng)老兵,各大平臺(tái)專欄作者。
本文原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來自Unsplash,基于CC0協(xié)議。
關(guān)鍵詞: 敏捷迭代已過時(shí) 現(xiàn)在大廠都在用DevOps開發(fā)模式