從藍鯨視角談DevOps
DevOps源於Development和Operations的組合
常見的定義
DevOps是一種重視“軟體開發人員(Dev)”和“IT運維技術人員(Ops)”之間溝通合作的文化、運動或慣例。透過自動化“軟體交付”和“架構變更”的流程,來使得構建、測試、釋出軟體能夠更加地快捷、頻繁和可靠。
下面這個戴明環也是常見的表達形式:
點選此處新增圖片說明文字
藍鯨在深度實踐DevOps後,結合對DevOps理解和經驗總結,重新定義了DevOps。即下圖這6個英文單詞的首字母組成:
Do、Efficiency、Value、Open、Progress、Security。
點選此處新增圖片說明文字
結合這六個詞、結合藍鯨產品團隊在今年6月藍鯨DevOps活動上的分享以及個人理解,我們將從藍鯨的視角展開來談談DevOps:
Do實踐:以實踐為基礎推行DevOps
DevOps文化、理論體系的宣導者眾多,各種大會也會去介紹各種“道、法、術”;大一些的企業基本都會有設立教練的角色,指導各個研發團隊開展DevOps轉型。但一些企業使用者在聽完各種“道、法、術”之後,要麼是講的聽不懂,要麼是懂也不會做、做也做不好。也有企業先找諮詢公司做諮詢,但諮詢完後卻不知道怎麼落地。
藍鯨DevOps認為DevOps的第一要素,就是實踐,即所謂的“事上練”。沒有實踐過DevOps的經歷就沒有感悟,談論再多的文化、理論,還不如貼近業務研發痛點,動手行動,用實踐來驗證想法和理論,點滴積累,繪成逐漸強大的DevOps體系。
Efficiency效能:效能是DevOps追求的目標
在我們開展實踐之後,需要有目標。DevOps 根本的目標就是提升研發效能。
首先,效能體現在可以讓大家可以“Focus On Your Job”。開發人員的職責是寫程式碼和合並程式碼,合併程式碼完就去抽菸,其他的交給平臺自動化執行;而不是去推動打包、申請資源、部署、測試、生產上線。
其次,效能體現在可以讓大家在同一套平臺中進行工作和協同,而不是在不同的工具中做不同的事情。一個企業IT部門有18套研發、測試、運維工具,這代表先進還是落後呢?很顯然,這是一種落後的表現,因為這幾乎將無法實現跨系統自動排程。藍鯨DevOps平臺可以將DevOps工具鏈進行整合,讓不同的角色專注於其本職工作,達到提升效能的目標。
Value價值:DevOps必須輸出價值
DevOps要為使用者不斷的輸出價值,就要為DevOps體系中融入更多的提供價值的功能。例如:
- 在DevOps平臺中加入質量紅線,可以提供給使用者來建立各種質量門禁,如:程式碼准入門禁、迭代驗收門禁、釋出控制門禁;
- 在DevOps平臺中提供編譯加速,幫助使用者提升編譯的效能;
- 在DevOps平臺中提供構建資源池,在構建的時候可以自動排程構建資源,完成構建之後可以自動釋放資源等等;
- 在DevOps平臺中優化流水線的體驗和原子,使用者可以輕鬆組裝出來各種複雜的業務場景……
價值也應該是可以複製的,企業通常有多個團隊同時開展多個專案,我們對某個專案團隊進行了大量DevOps方面的改進,並邀請工信部對專案進行了DevOps能力成熟度評級,我們團隊達到了3級。但是,其他的專案或團隊呢?他們能否達到3級標準?我們在DevOps方面做出的努力,是否可以平行復制到其他團隊?
藍鯨DevOps有一個理念是——價值應被平行復制到各個專案團隊。每一個價值點的輸出,都可以讓使用者真正的感受到DevOps所能帶來的改變,這樣才能把使用者凝聚在平臺上,而不是總是考慮哪裡用得不順,自己建立一套平臺。藍鯨DevOps帶來的體系完善、效能提升,不是針對某個團隊,而是可以平行復制到所有的研發團隊,這就是最大的價值。
Open開放:以開放的心態面對各種場景
不同的企業甚至同一家企業的不同團隊,其DevOps落地的程序和對DevOps的要求都有差異的,我們必須用開放的心態接受這種差異。
例如:藍鯨DevOps平臺裡面有敏捷協同模組,可以管理專案的需求、任務、缺陷、迭代計劃等等,但是許多傳統行業,基於企業的研發管控制度等原因,已經建立了適合自己的需求管理平臺、研發任務管理平臺等工具平臺,我們的解決方案是不斷給使用者洗腦讓使用者放棄現有的協同和管理模式,還是以開放的心態來面對客戶現有的管理體系呢?
藍鯨的選擇是以開放的體系面對不同團隊的需求,提供儘可能靈活的架構和工具,通過工具開放的方式來相容不同團隊的模式。藍鯨本身也是面向CI-CD-CO的研運一體化平臺。
Progress演進:持續交付核心在於不斷演進
DevOps的一個重要理念就在於持續改進。我們可以通過各個子系統的資料進行整體的度量,來發現哪個專案、哪些環節經常出現停滯、失敗率比較高、耗時比較長,並且進行鍼對性的改進。
例如:如果研發效能瓶頸在測試環節,就需要深究導致測試耗時長的問題。如果是因為沒有引入自動化的測試、手工測試耗時較長,就可以逐步補充自動化測試用例;如果研發效能瓶頸需要人工響應才能推進,就可以引入自動化的流水線和優化研發流程,減少人工參與和不必要的稽核節點。
只有通過不斷的改進,企業才能將原來的每月迭代和釋出,縮短為每週迭代和釋出,甚至逐步改進為每天迭代和釋出,最終達到Google、FaceBook等企業達到的1天若干次釋出的效果。
各個團隊可以跟自己比,每一階段都相比前一階段有進步,就是團隊的自我發展。而藍鯨DevOps平臺也是不斷演進的成果。
Security安全:安全是基礎
一個企業級的DevOps平臺,安全是非常重要的。研發人員電腦、程式碼庫、構建機、測試環境、製品庫都可能導致程式碼及軟體包的洩露,這也導致遊戲行業大量私服的出現。而軟體上線之後還要考慮漏洞被利用、跨站攻擊、資料竊取等等問題。
不論DevOps平臺本身,還是從平臺流出的製品,一切要以安全為依歸。DevOps平臺本身應該提供監、管、控手段,可以進行細粒度的許可權控制,避免非法訪問和非法竊取資料、程式碼、軟體包。DevOps平臺也應該提供程式碼掃描、安全掃描、質量紅線等安全工具,可以獨立執行或者結合到流水線裡面自動呼叫,保證交付的軟體的可靠性,給平臺使用者以及產出軟體的使用者一個安全保障。