為什么大廠都用DevOps呢?我來告訴你
目前很多大廠如阿里、騰訊、百度、頭條、滴滴、美團(tuán)等公司內(nèi)部都在做DevOps,那么 DevOps是什么 ? 為什么大廠都對其趨之若鶩 ? DevOps到底應(yīng)該怎么做 ?剛好我也負(fù)責(zé)我們公司的DevOps,今天就來講講吧!
前言
提到DevOps這個(gè)詞,我相信很多人一定不會陌生。作為一個(gè)熱門的概念,DevOps近年來頻頻出現(xiàn)在各大技術(shù)社區(qū)和媒體的文章中,備受行業(yè)大咖的追捧,也吸引了很多吃瓜群眾的圍觀。
那么什么是DevOps呢?

DevOPs是一種方法論。
DevOps=Developers+Operators,即開發(fā)團(tuán)隊(duì)和運(yùn)維團(tuán)隊(duì)一體化,盡可能的為公司創(chuàng)造更多價(jià)值。
現(xiàn)在流行的做法是將兩個(gè)職能部門的人融合為一個(gè)職能部門,實(shí)現(xiàn)開發(fā)運(yùn)維一體化,而早期的時(shí)候是兩波人分別承擔(dān)不同的職能,中期的時(shí)候是要求兩波人密切配合、快速迭代,這中間的變化取決于開發(fā)模式的轉(zhuǎn)變。

瀑布開發(fā)模型
早期的時(shí)候是瀑布開發(fā)模型。因?yàn)榛ヂ?lián)網(wǎng)上涌入的網(wǎng)民還不多,大家的關(guān)注點(diǎn)是能用、能解決問題即可,所以早期在需求評審階段產(chǎn)品經(jīng)理給到的是完整、清晰、固定的需求,研發(fā)人員只需要根據(jù)需求在約定的時(shí)間點(diǎn)進(jìn)行交差即可
這種開發(fā)模式存在的問題是需求不能快速得到驗(yàn)證,很有可能團(tuán)隊(duì)花費(fèi)半年的時(shí)間開發(fā)出來的東西早已經(jīng)不適合市場了,也還有種可能是在開發(fā)階段研發(fā)需求理解不到位,等到后期驗(yàn)證時(shí)發(fā)現(xiàn)有問題再去做調(diào)整耽誤整體工期。

敏捷開發(fā)模型
中期的時(shí)候是敏捷開發(fā)模型。因?yàn)榛ヂ?lián)網(wǎng)上涌入的網(wǎng)民開始增多,大家的關(guān)注點(diǎn)開始變成好用、好玩,而此時(shí)一些有遠(yuǎn)見的人開始注意到互聯(lián)網(wǎng)紅利,投身于互聯(lián)網(wǎng),此時(shí)的開發(fā)模式演變成了敏捷開發(fā)模型。
敏捷開發(fā)模型面對的是頻繁的需求變化,要求快速開發(fā)。比較流行的實(shí)際案例則是Scrum、XP極限編程。在新迭代(一般2-6周)開始前,產(chǎn)品經(jīng)理將需求拆分成具體的開發(fā)任務(wù),研發(fā)人員進(jìn)行任務(wù)認(rèn)領(lǐng),每日會進(jìn)行任務(wù)的review,直到開發(fā)完成,發(fā)布新的可用版本。

DevOps
現(xiàn)在最流行的是DevOps。因?yàn)榛ヂ?lián)網(wǎng)上涌入的網(wǎng)民在海量的增加,互聯(lián)網(wǎng)企業(yè)的競爭也開始變得激烈,同一塊蛋糕很多人來搶來分(電商領(lǐng)域的淘寶、京東、網(wǎng)易嚴(yán)選、拼多多、小鵝拼拼等),快速迭代產(chǎn)品,快速占領(lǐng)市場,快速占據(jù)用戶心智成為了各互聯(lián)網(wǎng)公司的目標(biāo),此時(shí)的開發(fā)模型變成了DevOps,需要持續(xù)開發(fā)、持續(xù)集成、持續(xù)測試、持續(xù)部署、持續(xù)監(jiān)控,每一次代碼的改動都觸發(fā)一次校驗(yàn),每天每時(shí)每刻都可進(jìn)行新版本的上線。






DevOps生命周期
在不了解DevOps生命周期的情況下,對DevOps的理解也會片面化?,F(xiàn)在讓我們看看DevOps生命周期,并探討它們?nèi)绾闻c軟件開發(fā)階段相關(guān)聯(lián)。
持續(xù)開發(fā)
這是DevOps生命周期中軟件不斷開發(fā)的階段。與瀑布模型不同的是,軟件可交付成果被分解為短開發(fā)周期的多個(gè)任務(wù)節(jié)點(diǎn),在很短的時(shí)間內(nèi)開發(fā)并交付。這個(gè)階段包括編碼和構(gòu)建階段,并使用Git和SVN等工具來維護(hù)不同版本的代碼,以及Ant、Maven、Gradle等工具來構(gòu)建/打包代碼到可執(zhí)行文件中,這些文件可以轉(zhuǎn)發(fā)給自動化測試系統(tǒng)進(jìn)行測試。?
持續(xù)測試
在這個(gè)階段,開發(fā)的軟件將被持續(xù)地測試bug。對于持續(xù)測試,使用自動化測試工具,如Selenium、TestNG、JUnit等。這些工具允許質(zhì)量管理系統(tǒng)完全并行地測試多個(gè)代碼庫,以確保功能中沒有缺陷。在這個(gè)階段,使用Docker容器實(shí)時(shí)模擬“測試環(huán)境”也是首選。一旦代碼測試通過,它就會不斷地與現(xiàn)有代碼集成。
持續(xù)集成
這是支持新功能的代碼與現(xiàn)有代碼集成的階段。由于軟件在不斷地開發(fā),更新后的代碼需要不斷地集成,并順利地與系統(tǒng)集成,以反映對最終用戶的需求更改。更改后的代碼,還應(yīng)該確保運(yùn)行時(shí)環(huán)境中沒有錯(cuò)誤,允許我們測試更改并檢查它如何與其他更改發(fā)生反應(yīng)。
Jenkins是一個(gè)非常流行的用于持續(xù)集成的工具。使用Jenkins,可以從git存儲庫提取最新的代碼修訂,并生成一個(gè)構(gòu)建,最終可以部署到測試或生產(chǎn)服務(wù)器??梢詫⑵湓O(shè)置為在git存儲庫中發(fā)生更改時(shí)自動觸發(fā)新構(gòu)建,也可以在單擊按鈕時(shí)手動觸發(fā)。
持續(xù)部署
它是將代碼部署到生產(chǎn)環(huán)境的階段。在這里,我們確保在所有服務(wù)器上正確部署代碼。如果添加了任何功能或引入了新功能,那么應(yīng)該準(zhǔn)備好迎接更多的網(wǎng)站流量。因此,系統(tǒng)運(yùn)維人員還有責(zé)任擴(kuò)展服務(wù)器以容納更多用戶。由于新代碼是連續(xù)部署的,因此配置管理工具可以快速,頻繁地執(zhí)行任務(wù)。
Puppet,Chef,SaltStack和Ansible是這個(gè)階段使用的一些流行工具。容器化工具在部署階段也發(fā)揮著重要作用。Docker和Vagrant是流行的工具,有助于在開發(fā),測試,登臺和生產(chǎn)環(huán)境中實(shí)現(xiàn)一致性。除此之外,它們還有助于輕松擴(kuò)展和縮小實(shí)例。
持續(xù)監(jiān)控
這是DevOps生命周期中非常關(guān)鍵的階段,旨在通過監(jiān)控軟件的性能來提高軟件的質(zhì)量。這種做法涉及運(yùn)營團(tuán)隊(duì)的參與,他們將監(jiān)視用戶活動中的錯(cuò)誤/系統(tǒng)的任何不正當(dāng)行為。這也可以通過使用專用監(jiān)控工具來實(shí)現(xiàn),該工具將持續(xù)監(jiān)控應(yīng)用程序性能并突出問題。
使用的一些流行工具是Splunk,ELK Stack,Nagios,NewRelic,Sensu,Promethus。這些工具可幫助密切監(jiān)視應(yīng)用程序和服務(wù)器,以主動檢查系統(tǒng)的運(yùn)行狀況。它們還可以提高生產(chǎn)率并提高系統(tǒng)的可靠性,從而降低IT支持成本。發(fā)現(xiàn)的任何重大問題都可以向開發(fā)團(tuán)隊(duì)報(bào)告,以便可以在持續(xù)開發(fā)階段進(jìn)行修復(fù)。
DevOps發(fā)展現(xiàn)狀


DevOps與微服務(wù),容器化的關(guān)系

單體式架構(gòu)(Monolithic)→ 微服務(wù)架構(gòu)(Microservices)
DevOps總結(jié)
DevOps的目的是更快速,更可靠地創(chuàng)建質(zhì)量更好的軟件,同時(shí)開發(fā),運(yùn)維團(tuán)隊(duì)之間進(jìn)行更多的溝通和協(xié)作。它是一個(gè)自動化過程,允許快速,安全和高質(zhì)量的軟件開發(fā)和發(fā)布,同時(shí)保持所有利益相關(guān)者在一個(gè)循環(huán)中。這就是DevOps獲得越來越多的大型互聯(lián)網(wǎng)公司青睞的真正原因。
時(shí)代發(fā)展到現(xiàn)在,客戶的需求瞬息萬變,市場的風(fēng)向也難以預(yù)測。作為企業(yè),想要生存下去,只有讓自己變得更快。作為員工,必須讓自己眼光更加長遠(yuǎn),內(nèi)心更加包容。
推薦文章
原創(chuàng)電子書
歷時(shí)整整一年總結(jié)的?Java 面試 + Java 后端技術(shù)學(xué)習(xí)指南,這是本人這幾年及校招的總結(jié),各種高頻面試題已經(jīng)全部進(jìn)行總結(jié),按照章節(jié)復(fù)習(xí)即可,已經(jīng)拿到了大廠offer。
原創(chuàng)思維導(dǎo)圖
掃碼或者微信搜?程序員的技術(shù)圈子?回復(fù)?面試?領(lǐng)取原創(chuàng)電子書和思維導(dǎo)圖。



