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