加速企業敏捷的DEVOPS平臺的開發與建設

天府雲創發表於2017-09-07


大家好,本次內容我在我司上個月的PWorld大會上分享過,線下會議參與人數有限,這次應邀在微信上向更廣泛的人群分享。希望對大家能有幫助,謝謝!

今天分享的主題是加速企業敏捷的DevOps平臺。DevOps在2009年提出,經過雲端計算、微服務、容器等技術概念的推動,DevOps已經被大多數的企業接受並開始付諸實踐。

根據我們的實踐,接下來我從四個維度為大家分享DevOps:

一:對DevOps的理解與認知

二:和大家分享我們DevOps實踐的一些總結

三:通過構建DevOps平臺支撐企業DevOps的快速引入

四:和大家探討下,實施DevOps從哪裡開始


我們先來看個問題,看下企業實施DevOps的情況:

第一個問題,應用上線(哪怕是改動一行程式碼)需要多長時間?


大家的週期通常是月、周、天、小時?


如果大家釋出週期在周級別,還有大量的工作靠人工執行,我們需要儘快引入DevOps了。


目前業界對DevOps的瞭解可謂千人千面,我們先看下維基百科給出的定義:



DevOps是一組過程、方法與系統的統稱,用於促進開發、運維部門之間的溝通、協作與整合。


DevOps是提倡開發和IT運維之間的高度協同,從而在完成高頻率部署的同時,提高生產環境的可靠性、穩定性、彈性和安全性。


從廣義的角度來講,我們認為DevOps應該從支援專案敏捷到支撐企業敏捷。



我們認為:DevOps不僅是打通開發運維之間的部門牆,更多的需要從應用的全生命週期考慮,實現應用全生命週期的工具鏈路打通、跨團隊的線上協作能力。


縱向整合中DevOps強調的重點是跨工具鏈的「自動化」,最終實現全部人員的「自助化」服務。


橫向整合中DevOps強調的重點是跨團隊的「線上協作」,也即是通過IT系統,實現資訊的「精確傳遞」。


對於DevOps的理解,目前業界存在不少的誤區,希望大家在實踐的時候能夠快速跳過這些誤區,成功實施DevOps。



採用了雲端計算(IaaS、容器)才能開展DevOps,確切的講應該是採用雲端計算有助於加速DevOps的落地,雲端計算決不是實施DevOps的先決條件,傳統的基礎設施一樣可以支撐DevOps的落地;


微服務架構開發的應用實適合;實施DevOps與應用架構無關,無論是採用微服務架構、SOA架構,都可以開展DevOps工作;


採用自動化工具本身不是DevOps,只有將這些工具與持續整合、持續交付、持續的反饋與優化進行端到端的整合時,這些工具才成為DevOps的一部分;


設定獨立的DevOps部門,在責任沒有清晰定義的情況下,這麼做會導致更多的豎井,創造更多的混亂。


自動化是DevOps非常重要的一部分,但不是唯一的部分。


我們認為實施DevOps需要從敏捷、持續、協作、系統性、自動化五個維度進行建設與改進



敏捷、自動化大家已經比較熟悉,大部分企業也已經付諸了實踐工作。


另外我們還需要實現跨部門與組織的協作,從技術、流程維度實現系統化的改進;最後我們認為實施DevOps是一個持續的過程,需要不斷的進行總結、反饋、優化。



實施DevOps,可以參考總結的“DevOps實踐模型”,從組織、技術、流程三個維度中選擇部分開始實踐。


根據我們的實施經驗,在傳統企業中,技術方面的實踐最容易在團隊中實現、流程次之、組織的優化與變革最為艱難;大家嘗試的時候,可以由易入難。


接下來我們看如何在組織方面實現敏捷。



全棧團隊,而非全棧員工,按照「兩個披薩原則」進行團隊組建;團隊分組是需要基於特性而非技術維度進行團隊劃分,確保每個團隊開發出來的都是可用產品;


特性團隊,是指在大型專案中,根據功能特性進行團隊的劃分與元件,而不是根據技術特性,根據功能特性元件的團隊每次交付的都是使用者可用的產品,可以提前進行確認,避免專案結束時候發現交付的產品是不可用的。


通過全棧和特性團隊的磨練,逐漸形成自治的、自交付的團隊組織。



在技術層面,我們實施了基礎設施即編碼的能力,將基礎環境可程式設計化,專案團隊成員可以自助獲取;


形成持續編譯、自動化測試、持續部署的能力;


另外我們正在做一件比較有意義的事情,ChatDevOps。ChatDevOps是基於對話驅動的,將開發、運維工具植入對話中的,一批的開發運維機器人為我們提供各種服務。大家如果有興趣,可以關注下hubot。




在流程方面,我們實施了看板文化。看板通常被當作任務協調溝通的機制;我們把看板作為在製品管制平臺,量化組織生產能力;


在產品交付上採用MVP模式,快速交付產品原型,通過市場來驗證,修正產品,最終適應市場的需求;


每個專案必須建立持續釋出機制,形成自動化、自助化兩種能力;


建立度量體系,讓資料說話,建立組織的各種資料基線,一方面可以掌控組織的生產力水平,另一方面通過度量資料,反向優化組織瓶頸點;


基於上面的最佳實踐,總結了企業DevOps宣言:


我們認為實施DevOps的終極目標是加速企業的敏捷轉型,從根本上提升IT的生產效率,加速部門、企業的業務創新能力。讓團隊從IT支撐部門,轉向為IT創新部門。

針對技術、流程我們通過平臺進行了最佳實踐的固化,形成了支援DevOps的平臺。


在平臺建設時,一個非常重要的思路是建設“以應用為中心的DevOps平臺”。大家如果關注業界DevOps平臺的話,會發現市面上的DevOps平臺更多的是偏向“以資源為中心的”,提供更多是建立容器、VM的能力。


DevOps平臺通常具備的幾個核心特性:

完整的DevOps平臺至少提供統一的工作臺,支援部門的協同工作;

打通工具鏈,做到自動化和自助化;

實現研發過程的度量,建立組織基線資料;

無縫支援多種環境公有云、私有云,常見的容器、VM;

執行期提供應用高可靠、伸縮漂移等能力;


大家可以看下我們在DevOps平臺打通的工具鏈。

如果團隊要自主掌握龐大的工具需要大規模的團隊,而使用統一的工作臺可以簡化整個工具的使用。



基於容器雲的DevOps平臺主要分為三層:


基礎設施層:包括IaaS,CaaS,我們分別是基於Kubernetes、Docker實現,上層有一層不同環境的適配,可以無縫對接私有云、公有云、混合雲;


基礎服務層:包括服務管理與排程的基礎能力,如註冊中心,編排,伸縮漂移;還有一堆具體的企業級或網際網路式的雲服務;


DevOps層:提供支撐全生命週期的18大領域系統更多的是工作流程(需求、設計、開發、測試、釋出等)的串接,看板等文化的體現。


為大家展示下一鍵釋出能力,通過DevOps平臺,可以一鍵從原始碼獲得可訪問的環境(自動根據應用的部署編排,實現了自動化的編譯、整合、打包、部署、啟動等)。

實施DevOps後的改變,首先團隊變得更自治,成為使命型組織;溝通協作更順暢;實現了開發人員的自助化服務;開發運維機器人提供更多的輔助功能。


大家可能非常關心,如何在各自的企業中如何落地DevOps平臺那?



在企業進行DevOps落地時,我們給大家推薦兩個原則:

1、尋找痛點,從痛點入手;

2、將重複的、無價值的事情儘快自動化;


基於這兩個原則,我們認為持續的部署,是目前企業實施最大的痛點,因此推薦實施DevOps從持續釋出開始,後續可以建設量身定製的DevOps平臺。逐漸搭建企業的雲端計算平臺、採用微服務架構進行應用的拆分。


最後,我們回顧下今天的分享,一共分享了三方面的知識。

第一:我們對DevOps的狹義和廣義的理解;

第二:在實施DevOps過程中,需要從組織、技術、流程三個維度進行改進;

最後:我們討論了實施DevOps從持續釋出開始。


天就分享到這,謝謝大家!


相關文章