新時代運維重器 Tencent Hub 最佳實踐——雲+將來峯會開發者專場回顧

歡迎你們前往騰訊雲+社區,獲取更多騰訊海量技術實踐乾貨哦~微信

演講者:鄒輝 騰訊雲 PaaS 產品總監架構

背景:5月23-24日,以「煥啓」爲主題的騰訊「雲+將來」峯會在廣州召開,廣東省各級政府機構領導、海內外業內學術專家、行業大咖及技術大牛等在現場共議雲計算與數字化產業創新發展。騰訊雲 PaaS 產品總監鄒輝在騰訊「雲+將來」峯會的「開發者專場」作了主題爲「新時代運維重器 Tencent Hub 最佳實踐」的技術內容分享,針對DevOps產品的一些設計理念和思考。

如下內容整理自演講:框架

由於工做關係,我會在平常工做中跟不少企業和運維人員打交道,協做他們作容器化和DevOps化的一些工做。在過程當中,咱們發現你們對於DevOps的價值,以及如何實現DevOps還有一些疑問。因此今天先簡單介紹咱們爲何要去作DevOps,以及怎麼樣去作DevOps。運維

從技術的角度來看,隨着業務的發展,業務的場景愈來愈多,愈來愈複雜,咱們的系統架構也會愈來愈龐大,開發人員也會愈來愈多,同時對系統的穩定性要求也會愈來愈高。因此這些場景催生了咱們的技術架構的變革,由此會帶來微服務架構設計理念的產生。可是微服務架構設計理念的產生可以解決這些問題,可是微服務也帶來不少的問題,微服務致使咱們的系統模塊愈來愈多,而這些模塊運維管理複雜度也會增長,同時微服務會讓咱們的開發速度獲得增長,咱們的開發人員對咱們發佈的效率會有一個明顯的訴求。因此在運維人員對系統的質量把控,以及開發人員對系統效率的追求上有矛盾,這就是咱們DevOps須要解決的一些問題,由此催生了DevOps。微服務

因此DevOps實際上就是咱們須要經過DevOps來保證質量的同時,平衡開發的一個效率,本質上來講DevOps實際上就是一個流程化和工具化的過程,經過工具來固化流程,經過流程來保證運維發佈和研發質量,同時下降人工進行操做時候的一些誤操做引起的故障,也提升了整個研發的效率。因此基於這一點,如何去實現咱們的DevOps,實際上很是清晰,由於DevOps就是一個流程規範制定和工具自動化的過程,因此做爲DevOps,我以爲關鍵在於兩步:工具

一、把咱們的流程梳理清楚,把咱們的軟件開發過程當中的一些步驟,咱們有有哪些步驟,好比咱們有代碼提交、發佈測試化,靜態掃描,把咱們研發過程梳理清楚。咱們也須要把咱們團隊的關係梳理清楚,這個軟件開發過程當中有開發,有測試,有運維,還有一些管理者,須要哪些步驟須要哪些人審覈,在哪些步驟須要通知哪些人。接下來咱們就須要進步第二步;測試

二、經過工具化把所梳理的流程實現自動化的過程。如何去選擇一個合適的DevOps工具體系,把流程規範給自動化起來,接下來就是我今天分享的一個重點,給你們分享一下,咱們騰訊雲在DevOps工具體系這方面的實踐。優化

整個騰訊雲在DevOps這裏實際上推出了一款工具,叫Tencent Hub。Tencent Hub是第一款涵蓋了DevOps整個體系的工具體系,主要分紅三部分,從代碼的開發階段到代碼的構建階段,一直到代碼的發佈階段。在代碼開發階段,咱們能夠提供TAPD的開發平臺,咱們也推出了一個Tgait的代碼倉庫,基於這個構建組件,咱們很方便的能夠把整個DevOps流程給串起來,同時也提供了一個全面的倉庫,在這個倉庫裏面,咱們能夠存儲任何的代碼,DevOps任何的一個存儲,最終咱們也會跟運行環境裏面的一些服務打通,來支持各類發佈,提供各類各樣的查檢。這就是整個騰訊雲在tencent hub總體的一個體系圖。ui

在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,同時也寫好亞碼文件,把完整的流程導入到Engine裏面執行。這就是在Engine方面咱們的一些設計和思考。

在這一層,咱們可以作的一個調度方式,你們能夠看這張圖,第一種調度方式是Engine能夠經過AP調動任務,Engine層能夠執行指定的一個任務,實際上以容器績效的方式定義和運行這個插件,也是咱們在Work Flow作的一個比較大的革新。爲何這樣說?由於咱們發現把容器引入到DevOps裏面去作會帶來不少的好處,首先個人DevOps流程裏面會有執行各類各樣的任務,若是把這個任務經過容器化固化下來,經過容器績效咱們能夠很方便的傳播,這個時候你們看的可能不是跟Engine相關的插件,而就是一個容器績效。一旦把插件分裝到容器裏面以後,咱們公司裏面能夠根據你們的喜愛和專業程度,根據本身的一個喜愛去開發容器。這就是咱們在Work Flow插件這一塊實現的機制。

另外,若是說是用戶想要自定義本身的插件,完成一些功能,也只是須要定義好簡單的輸入和輸出便可,輸入值能夠從前面任何流程獲取,制定本質的輸出參數,輸出參數也能夠反饋回來,供後面的流程使用。用戶也能夠很簡單的去遵照這個輸入和輸出的規範,開發本身的績效插件。​

另外,除了Work Flow以外,剛纔也提到了Registry,咱們發如今Work Flow會產生不少中間產物,好比說我構建一個Zaar程序,或者發佈一些配置文件,這些配置文件發佈在哪些地方,包括髮布機制,它這個存在的地方或者最終績效存在的地方等等,咱們發如今DevOps環節中會產生各類各樣的中間產物,而這些中間產物每每會存儲到不一樣的地方,使用不一樣的協議去獲取。

咱們也針對一些常見的語言庫和流程提供一些通用的插件庫,好比說裏面的代碼檢查、構建,這些績效能夠通通在這一層獲取到。這就是咱們在Work Flow這裏面的一些設計理念。

基於這一點,咱們開發了一個叫Registry的一個通用倉庫,能夠實現通用存儲,使用這個通用存儲能夠很方便的把DevOps裏面中間產物,各類中間產物給管理起來。

Registry也提供了多層管理機制,從組織到用戶團隊,到我的,這樣一個分級管理機制,經過權限的方式去統計,也提供各類各樣的日記,靜態掃描的功能,讓用戶可以更方便的使用這些Registry功能。這就是Registry這邊的一些設計。

除此以外,其實咱們還把騰訊內部的一些研發實踐,經過服務的方式分裝起來給開發者,讓開發者不光可使用Work Flow,使用既定插件,同時還可使用騰訊內部一些比較好的經驗,更好的去支撐他們的DevOps,好比咱們自動化運維、代碼託管、自動化測試,以及咱們最近推出的一個OTFA這樣的安卓平臺,後面是咱們基於APP而開發的測試平臺。

更多相關資料,請點擊下方連接獲取:
鄒輝:新時代運維重器 Tencent Hub 最佳實踐.pdf

問答
如何看待春運票務系統的架構優化?
相關閱讀
張浩:日調度萬億次,微服務框架TSF大規模應用
DevOps的前世此生
如何用日誌助推航旅支付智能運維升級

此文已由做者受權騰訊雲+社區發佈,原文連接:https://cloud.tencent.com/dev...

歡迎你們前往騰訊雲+社區或關注雲加社區微信公衆號(QcloudCommunity),第一時間獲取更多海量技術實踐乾貨哦~

相關文章
相關標籤/搜索