DevOps近年來頻頻出現(xiàn)在各大技術(shù)社區(qū)和媒體的文章中,備受行業(yè)大咖的追捧,也吸引了很多吃瓜群眾的圍觀。那么,什么是devops?
什么是devops
DevOps(Development和Operations組合)是一組過程、方法與系統(tǒng)的統(tǒng)稱,用于促進(jìn)開發(fā)(應(yīng)用程序/軟件工程)、技術(shù)運(yùn)營和質(zhì)量保障(QA)部門之間的溝通、協(xié)作與整合。一些國際組織對其定義如下:
DevOps強(qiáng)調(diào)對應(yīng)用進(jìn)行快速、小規(guī)模、可迭代的開發(fā)和部署,以更好地應(yīng)對和滿足客戶的需求。它要求進(jìn)行文化的轉(zhuǎn)變,即將開發(fā)和運(yùn)維只能作為一個合作的整體來看待,注重提高業(yè)務(wù)價值,旨在精簡整個IT價值鏈。
從定義來看,其實devops就是為了讓開發(fā)、運(yùn)維和QA可以高效協(xié)作的流程。(可以把DevOps看作開發(fā)、技術(shù)運(yùn)營和質(zhì)量保障(QA)三者的交集)
DevOps是一套實踐框架,包含了精益、敏捷的理念,各種持續(xù)集成和持續(xù)交付的職能,以及構(gòu)建流水線的工具。它著眼于項目的實踐,在實踐中強(qiáng)調(diào)以業(yè)務(wù)價值來統(tǒng)一所有工作目標(biāo),這個目標(biāo)是不同的團(tuán)隊打破原有的組織考核壁壘,進(jìn)行合作和溝通的基礎(chǔ)。
它的核心思想是把所有的IT交付和運(yùn)維服務(wù)團(tuán)隊統(tǒng)一起來,圍繞一個統(tǒng)一的業(yè)務(wù)價值目標(biāo)及業(yè)務(wù)交付范圍加強(qiáng)溝通,通過頻繁、快速地迭代交付和反饋,達(dá)到加快交付速度和提高交付質(zhì)量的目的。
為什么需要DevOps?
在DevOps之前:
開發(fā)和運(yùn)營團(tuán)隊完全孤立。
測試和部署是在設(shè)計構(gòu)建之后完成的獨(dú)立活動。因此,他們比實際構(gòu)建周期消耗更多時間。
在不使用DevOps的情況下,團(tuán)隊成員將大量時間花在測試,部署和設(shè)計上,而不是構(gòu)建項目。
手動代碼部署會導(dǎo)致生產(chǎn)中出現(xiàn)人為錯誤
開發(fā)和運(yùn)營團(tuán)隊有各自的時間表,不同步導(dǎo)致進(jìn)一步的延誤。
在DevOps 模式下,開發(fā)團(tuán)隊和運(yùn)營團(tuán)隊都不再是“孤立”的團(tuán)隊。有時,這兩個團(tuán)隊會合為一個團(tuán)隊,他們的工程師會在應(yīng)用程序的整個生命周期(從開發(fā)測試到部署再到運(yùn)營)內(nèi)相互協(xié)作,開發(fā)出一系列不限于單一職能的技能。
DevOps對應(yīng)用程序發(fā)布的影響
在很多企業(yè)中,應(yīng)用程序發(fā)布是一項涉及多個團(tuán)隊、壓力很大、風(fēng)險很高的活動。然而在具備DevOps能力的組織中,應(yīng)用程序發(fā)布的風(fēng)險很低,原因如下:
(1)減少變更范圍
與傳統(tǒng)的瀑布式開發(fā)模型相比,采用敏捷或迭代式開發(fā)意味著更頻繁的發(fā)布、每次發(fā)布包含的變化更少。由于部署經(jīng)常進(jìn)行,因此每次部署不會對生產(chǎn)系統(tǒng)造成巨大影響,應(yīng)用程序會以平滑的速率逐漸生長。
(2)加強(qiáng)發(fā)布協(xié)調(diào)
靠強(qiáng)有力的發(fā)布協(xié)調(diào)人來彌合開發(fā)與運(yùn)營之間的技能鴻溝和溝通鴻溝;采用電子數(shù)據(jù)表、電話會議、即時消息、企業(yè)門戶(wiki、sharepoint)等協(xié)作工具來確保所有相關(guān)人員理解變更的內(nèi)容并全力合作。
(3)自動化
強(qiáng)大的部署自動化手段確保部署任務(wù)的可重復(fù)性、減少部署出錯的可能性。
與傳統(tǒng)開發(fā)方法那種大規(guī)模的、不頻繁的發(fā)布(通常以“季度”或“年”為單位)相比,敏捷方法大大提升了發(fā)布頻率(通常以“天”或“周”為單位)