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