DevOps(Development和Operations組合)是一組過程、方法與系統的統稱,用於促進開發(應用程序/軟件工程)、技術運營和質量保障(QA)部門之間的溝通、協做與整合。一些國際組織對其定義以下:架構
DevOps強調對應用進行快速、小規模、可迭代的開發和部署,以更好地應對和知足客戶的需求。它要求進行文化的轉變,即將開發和運維只能做爲一個合做的總體來看待,注重提升業務價值,旨在精簡整個IT價值鏈。框架
從定義來看,其實devops就是爲了讓開發、運維和QA能夠高效協做的流程。(能夠把DevOps看做開發、技術運營和質量保障(QA)三者的交集)運維
DevOps是一套實踐框架,包含了精益、敏捷的理念,各類持續集成和持續交付的職能,以及構建流水線的工具。它着眼於項目的實踐,在實踐中強調以業務價值來統一全部工做目標,這個目標是不一樣的團隊打破原有的組織考覈壁壘,進行合做和溝通的基礎。它的核心思想是把全部的IT交付和運維服務團隊統一塊兒來,圍繞一個統一的業務價值目標及業務交付範圍增強溝通,經過頻繁、快速地迭代交付和反饋,達到加快交付速度和提升交付質量的目的。工具
若是將IT系統提供的業務服務做爲一個交付的產品來看,就存在一條在IT軟件開發和交付領域等造成的流水線。爲了建設這樣一條流水線,須要弄清楚如下問題:測試
- 流水線的內容是什麼?它的起點在哪?終點在哪?設計
- 如何搭建這條流水線?指針
- 如何管理這條流水線?blog
DevOps的生命週期以下圖所示:生命週期
在其生命週期中,包含如下幾個核心理念:資源
技術人員所作的軟件系統是爲業務部門的業務發展服務的,此是將全部IT交付團隊統一塊兒來的共同目標和原始驅動力。只要對比一下本身團隊的KPI和業務目標的關係,就能發現傳統的分隔式項目交付管理是多麼官僚和浪費。因此,DevOps流水線包含開發、測試、部署和運維等整個項目過程,這些直接關係到最終的業務價值的實現,所以必須做爲一個總體進行管理。
俗話說,無規矩不成方圓。在踐行DevOps的時候也須要標準化的交付流程,且這個流程不是簡單的管理規範,而是要用持續交付的流水線來取代冗長的開發運維流程,實現高效,高質。
除了開發測試交付部分,從運維的角度來看,在DevOps裏強調的是輕量化的ITSM流程和架構,即根據保證業務運行連續性的須要來裁減流程,並造成標準化的流程。所謂標準化指的是在需求、開發、測試、維護的過程當中將流程最小化。流程過於複雜是形成IT資源浪費的最重要緣由,因此應該將流程最小化,同時將更多的精力、勞動、資源投入真正創造業務價值的生產中。
開發運維流程標準化是自動化的前提,若是流程不是標準化,那麼自動化也是沒有根基的。只有將流程標準化,自動化纔能有定義的標準。
自動化能提高效率,還能使效率和質量透明化,讓整個交付過程更加可控。
DevOps是一種文化,它提倡團隊成員圍繞共同的業務目標,進行互相理解、信任、溝通和協做,在交付過程出現問題後,從中分析緣由和吸收教訓,而不是互相指責和推卸責任。
總的來講,DevOps涵蓋CALMS(自動化、精益、可衡量和分享)文化,以下圖:
從項目實踐來看,DevOps是指導軟件系統交付的一系列實踐方法,貫穿於項目的計劃、需求、設計、開發、部署、運維及終止的整套過程當中。
從傳統的IT項目交付的角度來看,DevOps實踐框架包括:敏捷管理、持續集成、持續交付和自動化測試。
# 敏捷管理
指將需求以用戶故事的方式進行拆解,而後以最小化、快速迭代的方式進行開發管理。
# 持續集成
指針對開發人員的代碼提交過程,以單件流的方式進行流水線式的自動化管理。
# 持續交付
預先定義、規劃從代碼生成到產品產出的流水線,並以自動化、模板化方式進行交付。
# 自動化測試
根據測試流程,以模板化、自動化的方式實現測試的手段。