騰訊織雲:DevOps流水線應用平臺踐行之路

做者丨梁定安,騰訊織雲負責人,目前就任於騰訊社交網絡運營部,任運維技術總監,開放運維聯盟委員,騰訊雲佈道師,騰訊課堂運維講師,EXIN DevOps Master講師,鳳凰項目沙盤教練,復旦大學客座講師。
圖片描述web

前言

國家的「互聯網+」戰略開啓了一個企業業務與互聯網相結合的新業務形態,有愈來愈多的企業將本身的業務以互聯網爲媒介對外輸出。任何一款互聯網產品都會經歷從產品的規劃與設計、開發的功能實現、測試的度量驗收、運維的發佈交付,也是經常被成爲企業的IT價值鏈的全流程,將產品輸出個最終的用戶,以產生商業價值。docker

騰訊的DevOps實踐

在DevOps的理念中,企業的IT價值鏈流轉的速度越快,意味着企業的互聯網產品的交付能力越強,這也意味着企業在同行業的競爭中,憑藉IT能力的優點,可以收穫更大的競爭優點。網絡

圖片描述

騰訊公司誕生於互聯網行業,以海量用戶規模和設備規模著稱社交網絡業務,其DevOps的技術實踐,主要由四大平臺系統組成。架構

圖片描述

四個系統共同組成DevOps流水線,騰訊的海量業務使用這套流水線系統能夠輕鬆完成從需求設計、代碼管理、開發測試、發佈&運維的各階段工做。負載均衡

圖片描述

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

圖片描述

應用架構的可運維性

對於互聯網產品而言,發佈僅僅只是開始,在持續爲用戶輸出價值的運營過程,由運維團隊和系統來保障服務的穩定可靠。以騰訊的應用架構實踐案例,咱們來看下騰訊業務對可運維性的定義。運維

DevOps持續交付的八大原則對可運維性給出了這樣的定義,在企業中研發和運維體系必然須要相互配合,開發團隊負責功能性需求實現的同時,在架構和編碼上注重非功能性需求的實現,測試團隊與運維團隊將圍繞着各自職能的需求,規劃與建設DevOps流水線中對應的工具系統,加速企業IT價值鏈的流轉,覺得企業創造更大的商業價值。socket

圖片描述

有了持續交付方法論的支撐,咱們認爲要實現可運維性的過程可分爲4個階段:統一架構、運維規範、標準操做、運維自動化。分佈式

圖片描述

將互聯網的業務架構抽象成爲三層:接入層、邏輯層、數據層微服務

圖片描述

並在業務架構的技術選型與規劃時,遵循四個原則:框架化、組件化、無狀態、分佈式

圖片描述

框架化的引入,能夠有效的下降開發的工做量,經過有限的編碼便可實現快速業務功能需求。以下圖所述,對於常見的socket通信型的C/S架構,由框架實現了網絡的通信,業務邏輯由動態庫的方式加載到框架中,快速拼裝出知足業務功能需求的軟件程序。得益於框架的支持,可運維性訴求的非功能性的規範亦可被歸入框架中實現,如數據上報、統一日誌、管理工具等。

圖片描述

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

圖片描述

經過對可運維性的思考,在統一規劃與標準化的持續推動實踐中,保障了騰訊的業務架構有序的發展,架構的演變從千人千面進化成千人一面。結合框架與組件的非功能規範的落地實現,將運維保障業務質量與效率的規劃落實。

圖片描述

騰訊織雲的持續部署實踐

要知足企業的長期發展,僅靠堆砌運維工具是不夠的,必須體系化的、全局的考慮標準化、配置化、自動化、智能化的一體化運維管理系統。下圖是騰訊運維平臺——織雲的功能規劃,咱們以此管理着騰訊社交網絡海量的服務。

圖片描述

在運維的過程當中,咱們要面對不少複雜的運維對象,結合可運維性與非功能規範的要求能夠很好的防止業務架構失控,但假若要更好的管理這些運維對象,咱們必需要作好配置管理。
織雲平臺實踐中,咱們將標準化的運維對象配置化,如下圖爲例,每一個微服務集羣在織雲CMDB中被定義成不一樣的模塊名。模塊可被劃分爲兩大類配置屬性:基礎配置與應用配置。

圖片描述

基礎配置中的資產配置,可被用作資產覈算、預算規劃等;硬件配置可被用於虛擬化和機型規劃等方面;分佈信息會記錄設備的上聯交換機與IDC等信息,在優化機房穿越、網絡設備故障的智能分析場景,能夠提供很好的數據支持。
應用配置中的資源配置,可對接鏡像倉庫或製品庫,實現與發佈/變動相關的運維對象關聯,爲自動化提供支撐數據;流程配置將工具或接口經過自定義編排實現操做流或工具鏈,讓運維的工具收斂複用;變動記錄提供了運維操做審計與聯動監控數據的配置信息。
咱們將運維平常關聯生產環境的操做提煉如圖:對資源的傳輸與執行。

圖片描述

從統一規劃、標準化、配置化、自動化到聯動監控,用持續部署的流水線工具串行起來,咱們將獲得一個體系化的運維能力模型,基於此模型,運維團隊可以全局規劃持續部署的能力與工具系統。

圖片描述

經過工具編排功能,自定義運維操做流程、工單審批流程、服務請求流程。並與CMDB的業務、負責人、狀態等數據接口聯動,解決運維操做與配置數據狀態的協同的難題,實現從ITIL離線流程到線上自動化流程的技術升級。

圖片描述

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

圖片描述

基於統一規劃的運維體系,不只能提高運維效率,同時對服務質量的保障也能有不少好處。以下案例是進程自愈的場景,結合CMDB的業務屬性,經過自動化的流程完成配置註冊,從而實現進程監控的自愈。

圖片描述

結束語

在騰訊多年的海量運營經驗中,DevOps是貫穿整個應用軟件生命週期的,發佈完成並不是終點,咱們要全局思考、統一規劃,爲業務的健康發展打造一個標準有序的業務架構,和爲業務提供一套完總體系化的運維解決方案。

圖片描述

相關文章
相關標籤/搜索