原文:《DevOps能解決哪些問題?給我們帶來哪些價值》


我們來思考一個問題,我們為什么要關注DevOps,它能為我們帶來什么?

第一個原因是,DevOps已經被證實能在IT和商業兩方面提升效率和質量。

在Puppet實驗室發布的DevOps調查研究報告中,指出使用了DevOps的團隊和沒有使用DevOps團隊對比,部署更改頻率提高30倍,交付周期縮短200倍。在問題質量方面,和其他組織相比,問題故障減少了60倍,在問題恢復上快了168倍。

第二個原因是,DevOps能讓你的日常工作變得更簡單,讓你的工作節奏更加穩定可持續,讓你的工作變得更有價值。

DevOps的目標簡單來說就是幫助產品研發團隊可持續的又快又好的交付價值

可持續性”是指以比較穩定的節奏長期的持續進行交付,比如經常加班趕工就是不可持續的,團隊的交付速率也不穩定,波動性越大,風險越高。

”是指研發效能提升,具備按時可預測交付的能力。

”是指研發質量提升,減少缺陷和返工,降低成本,提升用戶體驗。

交付價值”是指通過持續的頻繁的迭代交付可用的產品,經過市場和客戶的檢驗,持續的將問題和建議反饋給產品開發團隊,進而對產品的功能的演進方向調整,使最終交付的產品更符合用戶需求,最大化交付價值。

DevOps將給我們帶來哪些改變?

DevOps落地由于涉及的內容非常多,所以不同的角色以不同的視角看,基本就是橫看成嶺側成峰,遠近高低各不同。我們從不同角度和層面來看看DevOps將會帶來哪些改變?

從人員管理層面看:

從上圖可以看出,DevOps落地后,人員管理的組織結構會有變化。目前大多數傳統IT企業的開發和運維部門的運作模式是共享的運維團隊,開發完成后的交付物,交給運維團隊負責部署、發布和運維。DevOps推薦的多功能團隊類似于圖中虛擬運維組的形式,每個開發團隊都有自己的運維人員(運維人員少的也要有共享的運維聯絡人)。這里的運維人員指的是一種角色,有些團隊也有全棧工程師,開發測試兼運維。對于中大型的公司,還經常會有基礎設施運維團隊,提供基礎設施即代碼等平臺化能力。未來隨著云原生服務的發展,運維的角色會有更大的轉變(打破部門墻的最高境界,干掉運維部門,一切運維服務都是云原生服務)。

看完組織結構的變化,再來看技術架構的演進。從技術架構層面看(以Java Web應用為例):

隨著IT技術的不斷發展,應用系統的建設經過單體應用、SOA應用、逐步走向微服務應用。微服務的實施必然要具備需求管理、代碼版本管理、質量管理、構建管理、測試管理、部署管理、環境管理等全流程自動化工具鏈,以及開發部門與運維部門的深度協作。因此,DevOps是微服務實施的充分必要條件。

從信息流轉層面看:

從信息流轉來看,DevOps包含了從需求管理到需求開發、代碼管理、基礎設施管理、持續集成、自動化測試、持續部署、持續發布和應用運維管理全流程。

從工具使用層面看:

DevOps落地,研發交付的每個過程都離不開工具的支撐。傳統的方式,是自己搭建零散的弱整合工具系統,比如我們用Gitlab來管理代碼,根據企業的實際情況尋找合適的分支管理方法;我們用Jenkins來做持續集成;使用selenium來做自動化測試;使用ansible來自動化部署;使用chef或者puppet來管理基礎環境等等。這種情況的問題一是系統完全需要自己維護,成本高,不穩定;問題二是子系統之間存在隱性墻,缺少數據共享/權限共享/系統交互等功能。目前大型金融以及互聯網企業普遍采用強整合的統一DevOps平臺。