閱讀106 返回首頁    go 騰訊雲


騰訊雲海量社交網絡業務下的DevOps架構應用實踐

在 DevOps 的理念中,企業的 IT 價值鏈流轉的速度越快,意味著企業的互聯網產品的交付能力越強,這也意味著在同行業的競爭中,企業憑借 IT 能力的優勢,能夠收獲更大的競爭優勢。也因此,DevOps 框架的落地與實踐,成為時下非常熱門的話題。

以海量用戶規模和社交網絡業務著稱騰訊公司,在多年前便開始著手的部署 DevOps。在前不久騰訊雲 + 未來開發者專場,騰訊雲的資深工程師和架構師,通過 DevOps 敏捷開發工具集、DevOps 流水線應用實踐、雲端架構與部署、無服務器架構等主題內容介紹,詳細講解了騰訊雲海量業務下的 DevOps 架構探索與實踐,InfoQ 將其中精彩內容做了整理,希望給更多人提供參考和借鑒。

騰訊雲 DevOps 敏捷開發工具集

一般的軟件產品開發,包含用戶需求分析、架構設計、設計模型、編碼、測試幾個過程。而 DevOps,就是這些過程實現的紐帶,通過開發運營的一體化,可以將軟件開發流程無縫的銜接在一起。

為了順利完成項目的實施,騰訊雲開放了 TAPD(騰訊敏捷研發平台)、TGit(騰訊 Git 源代碼管理)、CCI(持續集成服務)、SODA(遊戲持續集成)、織雲(雲端運維)等 DevOps 係列工具集,通過這些平台,開發者可快速完成產品的交付與運維。

TAPD 是長期服務於騰訊自有業務的敏捷開發平台。自 2006 年騰訊推行敏捷開發開始,TAPD 在十年時間內服務了騰訊內部上千團隊的敏捷研發,並梳理出迭代模型、大象模型、極速模型等三種典型研發模型。

TGit 是一款基於 Git 的代碼管理工具。支撐了騰訊各個業務的代碼的編寫和代碼的存儲、積存、部署流程。TGit 支持多客戶端支持,並能提供類 Github 的操作體驗,支持在線代碼檢測與評論等。

CCI 持續集成服務是一款針對 Web 部的前端後台的數據集成的產品。目前,CCI 可以支持 JAVA,C++、PHP 等語言的構建,並能和 TGit、織雲原生兼容。開發者可以將代碼寫在 TGit,又能非常方便的把代碼拉到 CCI 上麵去做構建,同時,CCI 還支持定時構建,以及代碼提交時間觸發構建功能。

織雲是源自於騰訊的企業級運維管理平台。亦被稱為一站式新態企業運維平台,它支持公有雲、私有雲、混合雲管理,能一鍵式運維操作,靈活高效。通過智能構建,織雲已能實現無人工值守、多觸發器支持和代碼自動掃描等持續集成功能,整合開發與運維過程。

騰訊雲 DevOps 流水線平台應用實踐

前麵說到了騰訊的 DevOps 工具集,那麼,這些工具集在具體的開發流程上都起著怎樣的作用呢?騰訊織雲負責人梁定安從騰訊 DevOpsy 應用實踐、應用架構的可運維性以及織雲產品的部署實踐三個角度做了詳細的闡述。

騰訊雲 DevOps 應用實踐

如圖以下為騰訊雲的 DevOps 流水線,開發人員錄入需求,經過 TAPD 項目評審,分解成一個個的直接開發實現的特殊功能,存放在騰訊雲內部,進入到持續集成的階段,做自動化的編譯、集成、自動化測試、代碼的近態掃描,如果有一些不合規範的代碼,主幹測試無法通過。這時候需要 CIS 解決問題,問題解決以後會形成一個製品庫,和織雲係統進行對接,織雲係統拿到製品庫,按照騰訊標準的發布、管理的方案,把製品、軟件發布到生產環境,進而去做灰度測試,再上線的一個過程。騰訊的海量業務使用這套流水線係統可以輕鬆完成從需求設計、代碼管理、開發測試、發布 & 運維的各階段工作。

這其中,TAPD 支持敏捷項目管理,實現產品需求與開發分支關聯;TGit 支持代碼管理,通過 webhook 鉤子觸發持續集成係統的能力;CIS 負責自動化完成編譯、測試等任務,以輸出製品庫:軟件包或 docker 鏡像;織雲對接 CIS 獲取製品,以自動化的方式完成業務的發布 / 變更任務。

應用架構的可運維性

統一框架:將互聯網的業務架構抽象成為三層:接入層、邏輯層、數據層,框架化的引入,可以有效的降低開發的工作量,通過有限的編碼即可實現快速業務功能需求。

運維規範:組件可以將共性的服務統一化,如騰訊內部大量應用的軟件路由服務,可以幫助實現負載均衡、名字服務、容錯、過載保護、流量調度的功能特性。除了為業務解決了路由的難題,也使日常的運維管理變得更加簡單高效。

標準操作:將工作人員的操作標準化,避免因為崗位人員的流動而導致產品重構,造成重複造車現象的發生。

運維自動化:自動化運維的方案,就是統一規劃、標準化、配置化、自動化、監控,這裏不能漏了監控。

通過雖以上可運維內容的統一規劃與標準化,可以保障了業務架構有序的發展,架構的演變從千人千麵進化成千人一麵。然後結合框架與組件的非功能規範,使運維保障業務質量與效率的規劃落實。

騰訊雲織雲的持續部署實踐

隨後,梁定安著重介紹了騰訊雲織雲平台的部署實踐。下圖為騰訊織雲功能的一覽圖,在織雲平台中,將標準化的運維對象配置化,每個微服務集群在織雲 CMDB 中被定義成不同的模塊名。從統一規劃、標準化、配置化、自動化到聯動監控,用持續部署的流水線工具串行起來,用戶將得到一個體係化的運維能力模型,基於此模型,運維團隊能夠全局規劃持續部署的能力與工具係統。

以織雲的自動化擴容流程為例,將原子運維工具或係統接口以運維的最優操作流程組織起來,自動化的完成擴容操作,並且保證每個步驟都會被嚴格執行到位,不會受個人的經驗深淺或文檔的新舊影響。從而解決運維團隊“文檔即過期,離職即消失”的難題。

雲端架構規劃與應用案例

如果說 Devops 是保障產品開發順暢的通行證,那麼,雲端架構的規劃就是產品順利進行的指南針。一個好的架構規劃,往往能夠使產品在開發的過程中少踩很多“坑”。騰訊雲架構師張興華認為,企業在雲端架構設計時一般麵臨以下幾大架構痛點,並且根據這些痛點提出解決方案:

第一,高可用挑戰。如果產品在架構設計上或者在容災方麵考慮不周,將麵臨高可用的挑戰。解決方案上可以利用雲的資源做多地域的容災,在架構層麵可以進行不同層級的拆分,比如講將核心服務和非核心服務進行分級,同時還可以一些做灰度或者迭代的改進。

第二,性能瓶頸。在數據庫的調用過程中,高並發的交互可能會導致數據庫完全無法及時響應。解決方案可以根據需要推出不同的數據庫版本或者針對不同的場景或業務類型,選擇不同的雲服務進行不同的優化。

第三,數據庫設計。自建或者自己維護自有的數據庫是比較難的,企業需要提前做好業務上長期規劃,提前做好業務分庫、分表的設計。

第四,安全。目前 DDos 攻擊流量最新數據超過了 600G,抗 DDos 需要借助雲服務未雨綢繆;同時在操作、容災、數據、權限等安全層麵都需要在架構上提前規劃。

騰訊雲架構規劃案例實踐

現場,張興華以摩拜單車為例,詳細解讀了騰訊是如何幫助用戶做架構規劃的。摩拜今年年初從其他雲遷到騰訊雲,開始摩拜的架構包括流量相對比較小,架構也相對簡單。但是這裏有一個問題是在邏輯層沒有做拆分,隻做了單一 Region 的部署。隨著業務的發展,這樣的架構已經無法滿足需求。

騰訊雲對摩拜單車進行了整體架構優化,將整體安全接入摩拜架構體係,並在路由層及業務邏輯層進行了核心功能業務拆分,做到微服務化;在數據層麵,實現了 Mongo 定製化優化,Mysql 性能定製優化,同時深度整合了騰訊雲的雲 API,構建了摩拜的 Devops 係統,快速穩步發展。在運營管理上,騰訊雲給摩拜推出黑石 + 大數據的方案,黑石 +Docker 的解決方案,能夠快速的去構建、部署和擴展,形成了一個比較通用的高可用架構設計。張興華表示,對於快速成長企業來說,隨著技術架構的演進,企業需要提前做業務的拆分與規劃,支持高可用、可擴展,做到多地域雙活與多活部署。

讓雲端開發更簡單的無服務架構

在微服務還方興未艾的時候,無服務架構就以其彈性伸縮、按需付費以及無維護等特點得到了很多開發者的青睞。騰訊架構平台部技術專家陳傑表示,無服務架構的核心理念就是給整個服務提供一種公共的架構,針對性解決服務的接入、安全、擴容、容災、分布等一係列問題。

騰訊雲的無服務器架構包含兩個部分組成,第一個是 FAAS(函數即服務),提供可計算的雲服務,這是無服務器的核心部分。第二個是 BAAS(後端即服務),包括雲對象存儲、雲數據庫、雲消息隊列等。企業可以在雲函數裏麵執行還可以訪問各類的雲服務,這樣的話,雲函數不僅是一種定製的計算,還可以作為整個雲平台的融合器,大家可以把雲函數加上後台服務當成一個有機的整體。

雲函數價值主要體現在四個方麵。1)簡化架構,雲函數是以函數粒度來組織的服務,是一種天生的微服務架構;2)簡化開發,無需關注底層硬件配置、OS 等,隻需撰寫最核心業務邏輯,實現代碼及服務;3)簡化運維,對於雲函數而言,無須關心服務器的運維和服務本身的配置,它又是一種天然的 Devops;4)是減少支出,雲函數可以解決雲主機 80% 以上的成本閑置的問題,因為它隻有了請求才分配資源。

無服務架構 VS 傳統開發模式

那麼,無服務架構和傳統開發模式項目,有哪些優劣呢?下圖從架構設計、代碼開發、代碼調試等六個角度分析了這二者的收益或不足。

從以上對比不難看出,雲函數的特點包括按需實時分配函數實例、函數實例擴縮容速度很快、按實際使用計費等,比較適合用於構建無狀態微服務,對於有明顯波峰波穀效應的服務,有明顯的成本優勢。但不太適合延時非常敏感(5 分鍾)的場景。目前,騰訊推出了 SCF 無服務器雲函數,雲函數會為大家準備一個免費額度包,如果是低頻調用的服務,很大可能無須支付任何費用,感興趣的開發者可以前往體驗。

寫在最後

DevOps 雖然火熱,但它的落地卻也並非是一蹴而就的,需要通過全局思考、統一規劃,在反複實踐中逐步改進和完善,最終才能根據不同的業務特性,提供一套完整體係化的運維解決方案。在騰訊多年的運營經驗中,DevOps 雖是貫穿整個應用軟件生命周期的,現在的發布完成依然並非終點。

最後更新:2017-08-30 09:18:47

  上一篇:go 東鵬特飲對抗羊毛黨,騰訊雲天禦係統助力節省3000萬
  下一篇:go 騰訊雲存儲突破Gartner魔力象限,落地政企打造智能雲生態