今天准备初步分析下当前主流的三大公有云平台的云原生解决方案,以作为企业实施云原生和上云策略选型的一个参考。在前面我整理过关于企业应用云端迁移和云原生相关的一些文章,今天则重点从多个方面对三个主流公有云平台提供的云原生解决方案和能力进行一个总结。
在前面一篇文章我就已经谈到过,实际上当前公有云已经从传统的提供弹性计算和存储能力的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,数据库中间件和技术服务能力提供也是云原生解决方案的重要内容,将在后续文章中进一步介绍。