腾讯云DevOps技术揭秘:新时代运维重器Tencent Hub最佳实践
隨著云計算和容器技術的發展以及微服務架構的興起,服務能夠實現細粒度的部署,維護和伸縮。在使開發人員能快速開發的同時,這些技術也給系統和應用的運維帶來了更大的挑戰。DevOps理念也應運而生,強調研發和運維的流程及工具的自動化,最大程度地減少人工運維的工作量。
\\在上周騰訊“云+未來”峰會的開發者專場上,來自騰訊云的幾位開發者和大家分享了DevOps,數據庫,微服務框架,邊緣計算,機器學習等話題的實踐,為大家帶來了一場技術盛宴。在這里和大家一起分享騰訊云PaaS產品總監鄒輝帶來的Tencent Hub最佳實踐,一窺騰訊云DevOps產品的設計理念和思考。
\\為什么要做DevOps\u0026amp;如何做DevOps
\\從技術的角度來看,隨著業務的發展,業務的場景越來越多也越來越復雜,系統架構越來越龐大,開發人員越來越多,對系統的穩定性要求也會越來越高。所以這些場景催生了技術架構的變革,由此會帶來微服務架構設計理念的產生。微服務架構設計理念能夠解決這些問題,但同時也帶來了很多問題:微服務導致我們的系統模塊越來越多,而這些模塊運維管理復雜度也會增加,同時微服務會讓我們的開發速度得到增加,開發人員對我們發布的效率會有明顯的訴求。所以在運維人員對系統的質量把控,以及開發人員對系統效率的追求上就有了矛盾,這就是DevOps需要解決的一些問題,由此催生了我們DevOps。
\\\\所以DevOps的實質是:我們需要通過DevOps來保證質量,同時,平衡開發的效率。本質上來說DevOps就是一個流程化和工具化的過程,通過工具來固化流程,通過流程來保證運維發布和研發質量,同時降低人工進行操作時候的一些誤操作引發的故障,也提高了整個研發的效率。所以基于這一點,如何去實現我們的DevOps,實際上非常清晰,因為DevOps就是一個流程規范制定和工具化的自動化過程。所以要做好DevOps,我覺得關鍵在于兩步:
\\接下來就給大家分享騰訊云在DevOps工具體系這方面的實踐。
\\Tencent Hub
\\騰訊云DevOps推出了一款叫Tencent Hub的管理平臺,該平臺為存儲研發流程中的文件和代碼以及創建DevOps工作流而打造。Tencent Hub是騰訊云第一款涵蓋了DevOps整個體系的工具體系,主要分成三部分,覆蓋代碼的開發階段,構建階段,一直到代碼的發布階段。
\\Tgait代碼倉庫
\\在代碼開發階段,我們可以提供TAPD的開發平臺,同時我們也推出了一個Tgait的代碼倉庫。基于這個構建組件,我們可以很方便地把整個DevOps流程給串起來,同時也提供了一個全面的倉庫。在這個倉庫里面,我們可以存儲任何的代碼,DevOps任何的存儲,最終我們也會跟運行環境里面的一些服務打通,來支持各種發布,提供各種各樣的查檢。騰訊云在Tencent Hub整體的體系圖如下。
\\\\Work Flow
\\\\在CD的環節,我們有一個核心組件叫Work Flow,大家可以把它簡單理解為一個工廠的流水線,通過這個流水線,我們可以把DevOps開發、測試、發布、代碼自動測試等所有的環節很簡單地串聯起來。因為不同的公司研發流程不一樣,并且隨著業務的發展,流程可能也會不斷地變更,所以我們在設計Work Flow這款組件的時候,一個核心考量就是能否快速地適應多樣化的流程體系和流程的變更。
\\我們在設計Work Flow的時候,把Work Flow分成了三塊:一個是Engine的環境,一個是插件層,還有一個是Work Flow的插件庫,主要是管理調度功能,真正實現任務執行是在下面Work Flow的插件去實現這個功能。
\\在Work Flow Engine這一層也是分成多個階段。我們將一個DevOps完整階段拆分成多個不同的階段,可以串行執行,也可以并行執行。我們可以定義任何DevOps的流程,同時在執行過程中,可以暫停這個stage,也可以啟動這個stage;在完成以后,能根據反饋結果來定義這個流程是該繼續走下去還是該終止。當我們把代碼構建完成之后發布到自動化測試系統中做測試,發現某個自動化測試用例跑不過,這個時候我們可以設計一個終止的環節,然后把這個系統結果給到開發運維人員,或者測試人員。這時候Work Flow Engine同時也寫好YAML文件,把完整的流程導入到Engine里面執行。這就是在Engine這一側我們去做的一些設計和思考。
\\\\在Work Flow插件這一層,Engine可以通過API調動任務,Engine層可以執行指定的一個任務,實際上以容器鏡像的方式定義和運行這個插件,這也是我們在Work Flow做的一個比較大的革新。為什么這樣說?因為我們發現把容器引入到DevOps里面去做會帶來很多的好處:首先DevOps流程里面會執行各種各樣的任務,如果把這個任務通過容器化固化下來,通過容器鏡像可以很方便地傳播,這個時候大家看的可能不是跟Engine相關的插件,而是一個容器鏡像。一旦把插件分裝到容器里面之后,就可以根據大家的喜好和專業程度去開發容器。這就是我們在Work Flow插件這一塊實現的機制。
\\\\另外,如果用戶想要自定義自己的插件,完成一些功能,也只需要定義好簡單的輸入和輸出即可。輸入值可以從前面任何流程獲取,制定本質的輸出參數,輸出參數也可以反饋回來,供后面的流程使用。用戶也可以很簡單地去遵守這個輸入和輸出的規范,開發自己的鏡像插件。
\\另外,我們也針對一些常見的語言庫和流程提供一些通用的插件庫,比如里面的代碼檢查、構建,這些鏡像可以統統在這一層獲取到。這就是我們在Work Flow這里面的一些設計理念。
\\\\Registry
\\除了Work Flow之外,我們還構建了一個Registry。我們發現在Work Flow會產生很多中間產物,比如構建一個Zaar程序,或者發布一些配置文件,這些配置文件發布在哪些地方,包括發布機制,它存在的地方或者最終鏡像存在的地方,這些環節中產生的中間產物往往會存儲到不同的地方,使用不同的協議去獲取。基于這一點,我們開發了一個叫Registry的通用倉庫,可以實現通用存儲,使用這個通用存儲可以很方便的把DevOps里面中間產物給管理起來。
\\另外Registry也提供了多層管理機制,從組織到用戶團隊到個人,通過權限的方式去統計,也提供各種各樣的日記,靜態掃描的功能,讓用戶能夠更方便地使用這些Registry功能。以上就是Registry方面的設計和考量。
\\\\\\最后
\\除此之外,其實騰訊云還會把內部的一些研發實踐,通過服務的方式分裝起來給開發者,讓開發者不光可以使用Work Flow,使用既定插件,同時還可以使用騰訊內部一些比較好的經驗,更好的去支撐他們的DevOps,比如自動化運維、代碼托管、自動化測試等環節。
總結
以上是生活随笔為你收集整理的腾讯云DevOps技术揭秘:新时代运维重器Tencent Hub最佳实践的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL安装时出现的问题
- 下一篇: 没有人会觉得正则表达式难写