思科的5人DevOps 團隊是如何打造千萬工件級別,多中心持續交付平臺的?


背景

這是一個真實的故事。大家都知道,思科是一個大型跨國公司,在全球有3萬+開發人員。

雖說人多力量大,但有時候並非如此,人多也可能會製造更多混亂。思科公司內部需要管理的工件已經超過千萬,語言種類繁多,並且在每一個軟件交付過程中,都需要解析依賴,構建,測試,翻譯,發佈,這讓測試,運維的同學感到頭疼不已,每次發佈軟件則如臨大敵,發佈週期總是拖得很長。

思科不得不開始思考,如何搭建一個高效的工件交付平臺,讓全球的開發,測試,運維在這個平臺上協作,統一流程,彌補 Dev 和 Ops 之間的鴻溝,讓跨全球的工件流轉和交付速度更快。想要搭建這樣的平臺,思科面臨以下的問題:

如何支持不同語言的倉庫:Maven, Docker, Ruby, NPM,Yum,Debian,並且支持高可用?
如何建立統一的持續交付的流水線,包含 Jenkins,Artifactory,SonarQub?
如何支持思科全球跨產品線(核心交換機,Webex,IOT)的3萬多開發人員?

所以思科決定成立專門的DevOps 團隊,打造統一持續交付平臺,來解決這些問題,服務全球開發者。這個揹負巨大使命的 DevOps 團隊只有5個人,他們該怎麼辦?

思科 5人DevOps 團隊是怎麼做的

從工件倉庫管理開始

最開始是單一的 Nexus 實例,後來比較了 Nexus 和 Artifactory,選擇了後者。理由很簡單,Artifactory 支持的語言更多,而 Nexus 只支持 Maven,而且 Artifactory 在高可用,高併發,多地複製上有更成熟的方案。

最初的Artifactory單節點倉庫在美國東岸 RTP(Raleigh)。倉庫管理了多種語言開發的工件,開發,測試,運維有了統一的平臺來進行工件的傳遞和交付,在工件的傳遞過程中會附加每個階段的元數據,例如,在測試階段爲工件加上測試的結果和地址,在部署階段爲工件加上部署的目標機信息,這樣大大減少了團隊的溝通成本,提供了發佈速度,並且實現了自動化可重複性發布。

兩地部署工件倉庫

好東西很快被美國西岸(SJC - San Jose)的同事發現了,也要求在西岸有一個工件倉庫管理平臺,於是有了第二個節點。美國西岸的構建工件會實時複製到美國東岸 ,這樣美國東岸的開發者需要使用某個包時,無需從西岸遠程下載,而是在東岸本地下載。

然後,DevOps 團隊使用思科的GSS(ACE Global Site Service),爲東西岸的開發者提供了統一入口,就近服務用戶。

全球4地部署工件倉庫

有了美國東西岸的成功案例,思科把 Artifactory 節點擴展到了英國,印度。美國東岸的倉庫會實時推送工件到英國和印度,進行測試或者翻譯,英國和印度的測試結果和翻譯產出物也推送回美國。

當工件倉庫承載了思科每天 TB 級別的下載量,它已經成爲了公司的核心資產,DevOps 團隊爲它做了熱備份,也就是圖中的SJC-B 數據中心,它作爲 SJC-A 的熱備份,時刻待命工作,一旦 SJC-A 數據中心宕機,請求會通過 Balancer自動轉發到 SJC-B。

最後全球部署的拓撲圖就是這樣。

頻繁使用虛擬倉庫

在主節點創建虛擬倉庫,來代理衛星節點的工件。這樣主節點的視圖裏永遠能獲取到全球所有的工件。

賬戶系統架構

由於某種原因,思科沒有公開構建系統的信息。上圖是賬戶系統的架構圖,和底層解耦,完全通過 API 創建 Jenkins,Artifactory,SonarQube 用戶。

DevOps 團隊構建的賬戶系統的 UI。

成果

平臺底層的Artifactory倉庫已經存儲了全思科公司的8百萬多工件,每天處理1千萬次請求,每天的下載量是3TB(15年的數據)。現在思科每天的下載量更大,核心產品線都依賴於這個平臺進行交付,實現按需分配資源,自動化上線,全球分發。

系統上線之後,爲思科帶來了巨大的效率提升:
至今節省了1800小時,之後會更多。
之前人工發佈平均時間90分鐘,自動化發佈只需2分鐘。
重複發佈無需額外工作。再多發佈需求也不擔心。
恭喜!這個5人的 DevOps 團隊立了大功!

未來計劃

思科 DevOps 團隊正在調研JFrog Mission Control,計劃使用它的 API 來進行全球多地工件倉庫的同步,容災和監控。

參考資料

文中的視頻地址:http://www.jfrogchina.com/#home-videos

下載JFrog Artifactory 開源版(代替 Nexus):
http://www.jfrogchina.com/open-source/

下載JFrog Artifactory 企業版(免費試用):
https://www.jfrog.com/artifactory/free-trial/?lang=zh-hans#High-Availability

任何問題歡迎聯繫我們:[email protected]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章