今天準備初步分析下當前主流的三大公有雲平臺的雲原生解決方案,以作為企業實施雲原生和上雲策略選型的一個參考。在前面我整理過關於企業應用雲端遷移和雲原生相關的一些文章,今天則重點從多個方面對三個主流公有雲平臺提供的雲原生解決方案和能力進行一個總結。
在前面一篇文章我就已經談到過,實際上當前公有雲已經從傳統的提供彈性計算和存儲能力的IaaS雲資源池過渡,核心是提供PaaS雲平臺能力,同時又圍繞雲原生的核心要求來為企業提供一整套的協助企業上雲和雲遷移的IT基礎設施,技術服務,方法工具和技術。
對於Cloud Native翻譯為雲原生,是Matt Stine提出的一個概念,它是一個思想的集合,包括DevOps、持續交付(Continuous Delivery)、微服務(MicroServices)、敏捷基礎設施(Agile Infrastructure)、康威定律(Conways Law)等,以及根據商業能力對公司進行重組。
Cloud Native既包含技術(微服務,敏捷基礎設施),也包含管理(DevOps,持續交付,康威定律,重組等)。因此雲原生是一系列Cloud技術、企業管理方法的集合。
CNCF將「雲原生」定義的更為狹窄,意味著使用開源軟體堆棧進行容器化,其中應用程式的每個部分都打包在自己的容器中,動態編排,以便每個部分都被主動調度和管理,以優化資源利用率和面向微服務的應用程式,以提高應用程式的整體靈活性和可維護性。
雲原生應用程式開發通常包括DevOps,敏捷方法,微服務,雲平臺,Kubernetes和Docker等容器,以及持續交付,簡而言之,每種新的和現代的應用程式部署方法。
CNCF給出了雲原生應用的三大特徵:
實際上我們看到對於完整的DevOps是包括了持續交付方面的內容的。因此對於雲原生的概念完全和我前面經常談到的微服務,容器化PaaS和DevOps相吻合。
即雲原生 = 微服務+ DevOps + 容器化PaaS
CNCF 是一個開源軟體基金會,致力於使雲原生計算具有普遍性和可持續性。 雲原生計算使用開源軟體技術棧將應用程式部署為微服務,將每個部分打包到自己的容器中,並動態編排這些容器以優化資源利用率。 雲原生技術使軟體開發人員能夠更快地構建出色的產品。
因此我們先看下三大廠商對CNCF的貢獻。
華為雲雲原生服務棧目前已覆蓋CNCF的技術全景圖,包括:雲容器引擎CCE、雲容器實例CCI、微服務引擎CSE等7大類別、16款雲上應用服務,可以全面覆蓋支撐企業應用上雲前後的全生命周期環節。其中,華為雲和雲容器引擎CCE更是全球首批拿到了Kubernetes Certified Service Provider和Certified Kubernetes兩項認證。
參考:https://www.stackalytics.com/cncf
華為這兩年在雲原生開源社區相當活躍,對整個雲原生開源社區的貢獻,可以看到華為已經從19年的第7位上升到第4位,Code Commits 從19年的963上升到2492,這個數據遠遠超過了阿里和騰訊。
對於華為,阿里,騰訊都屬於當前CNCF基金會金牌會員,而華為是頂級會員,也可以說是CNCF在國內的唯一初創成員,因此在CNCF整體地位還是最高。
在18年華為作為亞洲首家公司進入CNCF基金會TOC技術監督委員會,也是亞洲首家。而作為個人,阿里雲資深技術專家李響在19年也入選了CNCF的TOC技術監督委員會。
李響擁有浙江大學本科和卡耐基梅隆大學碩士學位,是CoreOS最早期的工程師之一,參與創建了etcd、operator framework、rkt等開源項目。而在開源社區中,李響作為etcd作者被開發者所熟知。該項目吸納超過400名貢獻者、14000個提交,發布超過150個版本,廣受開發者認可。
當然騰訊也在17年就加入了CNCF和Linux開源基金會,也是基金會的金牌會員,但是實際對開源社區的貢獻相當華為和阿里來說要小很多。雖然騰訊也陸續開源了類似Tars微服務框架,藍鯨自動化運維平臺等一系列開源項目。
在我們比較整個雲原生解決方案的時候,還是先看下微服務開發和治理框架。
對於微服務開發大家談的比較多的就是SpringCloud全家桶和Dubbo,對於阿里推出的Dubbo大家都比較熟悉,核心還是高性能的基於rpc的底層調用,但是Dubbo還不能算做一個完整的微服務開發和治理框架。
阿里Spring Cloud Alibaba
因此阿里又做了一件重要的事,就是推出了Spring Cloud Alibaba,這是阿里提供的微服務開發一站式解決方案,是阿里巴巴開源中間件與 Spring Cloud 體系的融合。
依託 Spring Cloud Alibaba,您只需要添加一些註解和少量配置,就可以將 Spring Cloud 應用接入阿里微服務解決方案,通過阿里中間件來迅速搭建分布式應用系統。即阿里在SpringCLoud基礎上整合了自己一系列的開源組件,形成一整套的解決方案,如下:
這些組件都和SpringCLoud進行了很好的整合。也就是說即使你原來採用的SpingCLoiud開發框架開發自己的微服務,你也很方便將這些開源組件引入到自己的微服務體系裡面。
華為ServiceComb
而對於華為,則是完全自己搞了一套完整的微服務開發和治理框架ServiceComb,當前一件開源和貢獻給CNCF基金會。ServiceComb基於華為內部的CSE(Cloud Service Engine)框架開源而來,這個框架在華為內部已經存在了2年多,支撐了多個大型的商業項目。
ServiceComb與業界流行生態互通:Zipkin、Skywalking、Prometheus等Tracing/APM生態,Apollo配置中心生態,Istio生態,K8S生態,Spring、SpringCloud等流行開源框架。可以看到ServiceComb具備從服務契約涉及,服務註冊發現,鏈路監控,限流熔斷,分布式事務等一系列能力,同時支持Java和Go多語言。
2018年10月24日, Apache軟體基金會宣布Apache ServiceComb 畢業成為Apache頂級項目,在整個社區活躍度也很高,也有類似國內大型網際網路公司的實踐應用案例。
騰訊Tars
Tars是騰訊開源的一套微服務開發治理框架,底層基於Go語言,核心是支持多語言和高性能。Tars是騰訊從2008年到今天一直在使用的後臺邏輯層的統一應用框架TAF(Total Application Framework),目前支持C++、Java、PHP、Nodejs、Go語言。
該框架為用戶提供了涉及到開發、運維、以及測試的一整套解決方案,幫助一個產品或者服務快速實現開發、部署、測試,以及上線。它集可擴展協議編解碼、高性能RPC通信框架、名字路由與發現、發布監控、日誌統計、配置管理等於一體。通過它可以快速用微服務的方式構建自己的穩定可靠的分布式應用,並實現完整有效的服務治理。
Tars支持五大程式語言,其中包括C++和JAVA、nodejs和PHP和GO,也可以擴展其它語言。從上圖也可以看到,大家常用的服務註冊、負載均衡、熔斷、服務配置等服務治理能力也都具備。從服務治理能力和多語言支持上好過Dubbo,但是整體開源社區的活躍度一般。
我們將敏捷研發管理,代碼託管,流水線,持續集成,容器雲集成,持續交付等全部納入到DevOps持續集成能力中進行分析和評估。
華為軟體開發平臺 DevCloud
DevCloud是集華為研發實踐、前沿研發理念、先進研發工具為一體的研發雲平臺面向開發者提供研發工具服務,讓軟體開發簡單高效。可以看到,我們常說的DevOps支撐平臺能力,包括敏捷研發管理,代碼託管,流水線,編譯構建,部署,灰度發布,自動化測試等華為雲的DevCloud平臺全部具備。
軟體開發平臺(DevCloud)是集華為近30年研發實踐、前沿研發理念、先進研發工具為一體的一站式雲端DevOps平臺,面向開發者提供的雲服務,即開即用,隨時隨地在雲端進行項目管理、代碼託管、流水線、代碼檢查、編譯構建、部署、測試、發布等,讓開發者快速而又輕鬆地開啟雲端開發之旅。
在官網可以看到詳細的功能演示視頻可以參考,核心特點主要包括:
支持雲上開發
DevCloud提供基於Git的在線代碼託管服務,支持代碼管理、分支管理、CodeReview等功能,並增加多重安全防護功能,保證核心資產安全。
DevCloud推出雲端開發環境CloudIDE,集成代碼託管服務,支持全容器化開發環境的快速按需獲取,支持40+語言在線編碼,支持主流語言(Java、C/C++、Python、Node.js等)的在線調試和運行。
實現DevOps持續交付
DevCloud提供可視化、可定製的自動交付流水線,將代碼檢查、編譯構建、測試、部署等多種類型的任務納入流水線,並納管子流水線,實現任務的自動化並行或串行執行,並充分利用雲上資源的彈性能力,大大縮短流水線的執行時間,實現雲端可持續交付。
覆蓋軟體研發全生命周期
DevCloud覆蓋軟體交付的全生命周期,從需求下發、到代碼提交與編譯、驗證、部署與運維,打通軟體交付的完整路徑,提供軟體研發端到端支持,全面支撐落地DevOps。
騰訊雲-Coding DevOps
對於騰訊雲,實際上原來在DevOps持續集成和交付能力上支撐是比較多的,雖然有類似藍鯨等平臺,但是重點還是偏持續集成和運維管理方面。而對于敏捷研發和項目管理能力基本沒有。
而騰訊在收購Coding後,基本補足了這塊的短板。
當時實際上做敏捷研發管理和DevOps流水線的就Coding和Ones兩家公司做的都不錯,而騰訊則是直接對Coding進行了收購,但是整體Coding的運營和管理還是相當獨立。
可以看到,我們常說的基於Scrum思路的敏捷研發管理,自動化測試,代碼託管,流水線,製品庫管理,雲端IDE等基本都具備。而對於Coding本來原來也沒有做容器雲平臺部分,因此這塊整合和騰訊雲的容器雲PaaS平臺對接形成一個完整的持續集成和交付的解決方案。
單純從敏捷項目管理和協同角度,當然Coding比華為的DevCloud功能更加強大,但是從DevOps和容器雲集成能力上,華為DevCloud集成的更加好。而對於Coding當前騰訊推的力度也很大,對於基礎的項目管理,代碼託管,持續集成等功能都可以免費使用,以實現到騰訊雲平臺的引流。
阿里雲-雲效DevOps平臺
雲效是阿里推出的企業級一站式DevOps平臺,支持公共雲、專有雲和混合雲多種部署形態,通過人工智慧、自動化技術的應用提升開發者的研發效能,持續交付有效價值。
從整理來看,雲效仍然是基於Scrum敏捷研發的思路,實現敏捷項目管理,包括我們常說的項目管理,需求管理,缺陷管理,任務跟蹤,任務看板等場景功能。
對於DevOps持續集成則通過是雲效流水線實現,其提供靈活易用的持續集成、持續驗證、 持續發布功能,幫助企業高質量、高效率的交付業務。流水線是持續交付的載體,通過構建自動化、集成自動化、驗證自動化、部署自動化,完成從開發到上線過程的持續交付。通過持續向團隊提供及時反饋,讓交付過程高效順暢。
但是從整體幫助文檔來看,對於雲效流水線和研發管理兩個部分的內容結合的比較生硬,流水線本身的編排界面和我們常用的使用習慣也存在差異,整體感覺和阿里雲平臺綁定的很緊。
整體分析評估
就敏捷研發和DevOps支撐上,整體還是感覺華為雲提供的DevCloud能力最強,而且本身和華為雲底層容器沒有完全綁定死,具備足夠的開放性。而對於騰訊雲Coding,當前最主要的還是收購的產品和自己的容器雲平臺的集成性,這點沒有進行驗證。而對於阿里雲的DevOps支撐,整體感覺一般,當然阿里雲本身也沒有重點去推這塊的內容。
阿里雲-雲原生架構白皮書
作為雲原生解決方案的重要推廣廠商,阿里雲今年發布了一個重要的解決方案文檔,即《雲原生架構白皮書》。
下載地址:https://developer.aliyun.com/topic/cn-architecture-paper
阿里雲以自身實踐與服務百萬付費用戶的豐富實踐經驗為基礎。從雲原生架構定義出發,構建基於實際業務場景的完整雲原生架構體系。為企業CTO/CIO提供戰略參考,為廣大研發工程師提供業務洞察,助力雲上客戶建立最具業務價值的雲原生架構。
該文檔對當前主流的類似微服務,ServiceMesh,Serverless,DevOps,容器技術,Kurbernetes等都進行了詳細的描述,值得所有學習雲原生架構和解決方案的人員參考。
在該書裡面,阿里還給出了一個雲原生的4+1架構設計模型。
ACNA 是一個 「4+1」 的架構設計流程,「4」 代表架構設計的關鍵視角,包括企業戰略視角、業務發展視角、組織能力視角和雲原生技術架構視角;「1」 表示雲原生架構的架構持續演進閉環。4 個架構視角和一個閉環的關係如下圖。
ACNA 除了是一個架構設計方法,也包含了對雲原生架構的評估體系、成熟度衡量體系、行業應用最佳實踐、技術和產品體系、架構原則、實施指導等。
華為雲全棧雲原生解決方案
華為云云原生技術平臺Vessel涵蓋以容器引擎、容器網絡、容器存儲為核心的基礎設施技術層,結合華為雲擎天架構軟硬協同的技術優勢,能充分釋放華為雲基礎設施的性能潛力,為業務提供高性能的運行平臺;同時提供開放、易用的雲原生應用技術層,包括應用網格、調度、監控、治理、雲邊協同等組件。
華為雲基於雲原生技術平臺Vessel,率先於業界推出了第二代裸金屬容器、混合雲容器、容器批量計算、邊緣容器四大解決方案。華為雲先後將Vessel的核心組件Volcano和KubeEdge開源,並貢獻給雲原生計算基金會CNCF,成為社區首個容器智能邊緣項目和容器批量計算項目,引領了雲原生技術與產業結合的發展方向。
注意華為最新雲原生解決方案,對於容器,容器網格,存儲,調度等已經全部實現自主研發,而非基於Docker容器定製。
另外對於雲原生的推廣,華為本身也出版大量的雲原生相關技術書籍,例如:
以上兩邊可以作為重要參考。
對於ServiceMesh服務網格,當前主流的解決方案即Istio來實現。而對於華為雲也自研了自己的服務網格解決方案Mesher。
Mesher是華為公司自研的Service Mesh的具體實現,它是一個輕量的代理服務,以Sidecar的模式與微服務一起運行,使用Mesher可以實現異構系統快速改為微服務,成為雲原生應用。
通過Mesher可以很好的實現微服務架構下的去中心化服務治理能力,同時我們看到Mesher當前可以更好的和華為微服務開發框架,華為DevOps持續集成和容器雲環境進行集成。即實現整個Mesher實際的注入對用戶是無感的,在整個DevOps持續集成過程中自動完成。
阿里雲ASM-託管服務網格
服務網格(簡稱ASM)是一個託管式的微服務應用流量統一管理平臺,兼容Istio,支持多個Kubernetes集群統一流量管理,為容器和虛擬機應用服務提供一致性的通信控制。整合阿里雲容器服務、網絡互連和安全能力,打造雲端最佳服務網格環境,為每個微服務提供一致的流量控制和可觀測能力。
阿里的ASM是業內首個全託管Istio兼容的服務網格平臺,支持運行於多種類型的計算基礎設施ACK(阿里雲託管式或專有式標準Kubernetes集群)、ASK(阿里雲Serverless Kubernetes集群)、ECS(阿里雲伺服器)、ECI(阿里雲彈性容器實例)等之上的服務應用流量統一管理 。
該產品提供了一個全託管式的服務網格平臺,兼容於社區 Istio 開源服務網格,用於簡化服務的治理,包括服務調用之間的流量路由與拆分管理、服務間通信的認證安全以及網格可觀測性能力,從而極大地減輕開發與運維的工作負擔。
從當前介紹材料來看,阿里ASM更多是對於Istio開源方案的定製和擴展。具體詳細的細節可以參考阿里專家王夕寧出版的《Istio服務網格技術解析與實戰》一書。
騰訊TSF微服務平臺
騰訊微服務平臺 TSF 是一個圍繞著應用和微服務的 PaaS 平臺,提供應用全生命周期管理、數據化運營、立體化監控和服務治理等功能。TSF 擁抱 Spring Cloud 、Service Mesh 微服務框架,幫助企業客戶解決傳統集中式架構轉型的困難,打造大規模高可用的分布式系統架構,實現業務、產品的快速落地。
在騰訊的TSF微服務平臺中我們看到包括了TSF Mesh的內容。
Mesh 微服務平臺(Tencent Service Mesh Framework,以下簡稱 TSF Mesh)是一個基礎設施層,用於處理服務間的通信。TSF Mesh 是由一系列輕量級的網絡代理組成,這些代理(又稱 Sidecar)與應用程式部署在一起,而應用程式不感知 Sidecar 的存在。
TSF Mesh 兼容 Istio 開發框架,提供完全兼容 Istio 的 Service Mesh 微服務平臺能力,支持服務註冊發現、 服務限流、服務鑑權、服務路由、調用鏈、API 上報等功能。
從實際官網材料來看,實際上當前在採用TSF的成功案例和企業並不多。
整體分析評估
就當前本身的整個案例和應用情況來說,阿里雲在ServiceMesh和Istio解決方案推廣上佔明顯優勢,成功案例最多,相對來說應用和方案也更加成熟。華為有自己的Mesher方案,但是實際推廣情況不明確,騰訊雲當前整體感覺並沒有大力推自己的TSF微服務平臺。
今天先分析和整理到這裡,對於Serverless,資料庫中間件和技術服務能力提供也是雲原生解決方案的重要內容,將在後續文章中進一步介紹。