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