读懂新基建:数字技术带来全民机遇
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

第三节 云原生技术与PaaS

以云、大数据、人工智能、物联网、区块链等数字技术驱动的企业数字化转型的最终的目标是什么?就是云原生的数字企业,或者称为数字原生企业。简单地理解,数字原生企业的核心竞争力在于大规模的云软件的开发、运维及运营能力。

数字化转型的目标:一是让软件成为企业的核心能力,二是把软件作为数字服务对外输出,成为企业的核心业务,最终使企业成为数字原生企业。在这个过程中,必须提到Red Hat(红帽公司)的OpenShift、Cloud Foundry基金会和CNCF,也就是OpenShift、Cloud Foundry和Kubernetes这三大开源PaaS框架,它们也是数字原生或云原生的核心技术。

容器技术与Docker

Docker翻译成中文是“码头搬运工”的意思。“码头搬运工”搬运的是什么?是标准化“集装箱”,这个标准化“集装箱”里装的是应用程序。“码头搬运工”在世界上任何提供了标准化接驳的“码头”都可以接收标准化“集装箱”,之后快速安装、运行和管理“集装箱”里的应用程序,而提供标准化接驳“码头”的就是各类云服务商。借此,Docker把云计算环境下的应用程序开发和分发带进了工业化生产的时代,这就是Docker的意义。

在Docker环境下,程序开发者按一定的打包标准生产程序,生产出来的标准化程序被装进标准化容器(Container)里,也就是“集装箱”。世界各国的云服务商都提供了标准化“码头”,可以很容易地接收标准化容器和里面的应用程序,再把这些标准化应用程序以即插即用的方式组装到自己的个性化解决方案里,然后提供给最终用户。而与Docker“集装箱”对应的标准化程序架构,就是微服务。

Container与Docker是两个英文单词,Docker相当于标准化容器,是容器技术经历近30多年发展出的阶段性成果。容器本质上是一种操作系统技术,是基于操作系统的虚拟化技术。基于容器开发的应用软件可以达到“一处开发、处处运行”的效果,而无关乎底层到底是什么样的操作系统或什么样的IaaS云服务环境。

作为操作系统级的虚拟化技术,容器技术本身的历史最早可以追溯到1982年。当时,UNIX推出的Chroot技术被公认为操作系统级虚拟化的起源,也就是容器技术最早的状态。2008年,LXC也就是Linux容器开源项目成立,容器技术开始在业界广泛使用。

2010年,dotCloud公司成立了。dotCloud是早期基于LXC技术的PaaS平台,它的理念是提供跨底层IaaS云、支持多种开发语言的开发云平台。dotCloud的创始人在LXC技术的基础上,对容器技术进行了简化和标准化,并命名为Docker后将其开源,同时推出了开放容器计划(OCI),Docker和Docker开源社区随后迅速发展起来。2013年10月29日,dotCloud公司更名为Docker公司。之后,多家厂商开始宣布支持Docker。

可以说,X86架构的PC服务器是异构硬件架构的赢家,Linux和Windows是异构操作系统的赢家,Docker为基于X86服务器和Linux/Windows操作系统的云数据中心提供了统一的虚拟操作系统,导致异构架构时代结束。

OpenShift与Cloud Foundry

OpenShift是一组由Red Hat开发、维护的基于Docker和Kubernetes构建的开源的容器云产品,可帮助企业和组织搭建及管理基于容器应用的私有云解决方案。通过OpenShift,企业可以快速地搭建稳定、安全、高效的容器私有云应用平台。

OpenShift Container Platform是一个在企业数据中心本地部署的基于Docker和Kubernetes的PaaS平台,属于Kubernetes的社区发行版,该平台基于Red Hat Enterprise Linux。OpenShift Origin(又称为OKD)是由开源社区维护的基于Docker和Kubernetes的开源应用容器平台,OKD是OpenShift Online、OpenShift Dedicated、OpenShift Container Platform的核心。OpenShift Online是Red Hat的公有云应用开发和托管服务,该服务运行在AWS上。OpenShift Dedicated是Red Hat的托管私有云,运行在AWS和Google云平台上。此外,Openshift.io是Red Hat的应用开发环境。Istio是与Kubernetes配合的微服务网格治理开源框架,为Service Mesh提供了一个完整的解决方案,以满足微服务应用的多样性需求。通过OpenShift家族系列产品,Red Hat构建了一整套服务于企业私有云与混合云PaaS需求的解决方案,这也是IBM于2018年以340亿美元收购Red Hat的重要原因。

Cloud Foundry由资深Java程序员Chris Richardson于2008年开发,在2009年被SpringSource收购,而SpringSource则由大名鼎鼎的微服务架构Spring框架创建者所创建。SpringSource通过一系列收购获得了Tomcat(开源Web应用服务器)、Hyperic(开源应用性能管理)、Groovy(开源应用编程语言)、Grail(开源Web应用开发框架)等领域的顶尖程序员和工程师,初步构建了覆盖软件开发、运行部署和管理等全生命周期的开源PaaS解决方案。SpringSource于2009年以4.2亿美元被VMware收购,VMware随后又收购了开源消息队列RabbitMQ、开源缓存计算Redis、分布式内存数据库Gemstone(主要产品为GemFire)等。2013年,EMC、VMware、GE成立合资公司,VMware把面向应用的软件资产与EMC收购的分布式大规模并行处理分析数据库GreenPlum等合并,成立Pivotal公司。Pivotal公司于2014年3月宣布创立Cloud Foundry基金会,用开放管理的方式把Cloud Foundry运作成为全球PaaS云操作系统标准。在Cloud Foundry基金会的平台之上,成员企业所使用的代码都是相同的,以减少碎片化版本,成员企业主要通过提供差异化服务盈利。Cloud Foundry是到目前为止支持最多种开发语言和中间件的开源PaaS框架,IBM当时就宣布投资10亿美元开发基于Cloud Foundry的Bluemix PaaS云平台。

OpenShift与Cloud Foundry是两大PaaS开源框架,相互之间既有区别也有相似之处。OpenShift主要基于Kubernetes的社区发行版,因此对Kubernetes是天然的原生支持。而Cloud Foundry基于Pivotal公司自行研发并开源的技术,后转向支持Kubernetes。在对Docker容器技术的支持方面,OpenShift也是原生支持;而Cloud Foundry原生支持Pivotal公司自行开发并开源的Garden,Garden是一种类似Docker的容器技术。OpenShift的主要支持者是Red Hat,而Cloud Foundry则有大批支持者,包括IBM、HP、DellEMC等。因此,如果选择Cloud Foundry,则有广泛的供应商选择;如果选择OpenShift,则只有Red Hat,但Red Hat本身有广泛的用户群和开发者生态。

实际上,Docker、Kubernetes、OpenShift是一个体系,Garden、Diego、Cloud Foundry是一个体系。其中,Diego是与Kubernetes竞争的同类型技术。这两条路线都是容器技术的实现路线:一条有大批企业、IT公司支持,另一条逐渐获得了广泛的开源社区支持。这两条技术路线并行发展,只不过Kubernetes在2018年获得了业界的广泛认可而成为容器集群编排技术的主流,导致IBM在2018年以340亿美元收购Red Hat,以获得Docker、Kubernetes、OpenShift技术体系的原生支持。随着Kubernetes的流行,Cloud Foundry基金会推出了开源项目Eirini,该项目致力于把Cloud Foundry技术堆栈内部的容器集群编排引擎替换为Kubernetes,从而提供更好的云原生体验。此外,Cloud Foundry的发展方向是作为云原生DevOps集成平台,满足企业对云原生技术的各类需求,如底层容器集群技术支持Kubernetes、Diego、BOSH等。

云原生计算基金会

说到Kubernetes就必须提到云原生计算基金会(CNCF)。CNCF成立于2015年12月,该基金会由Google主导组建,隶属于Linux Foundation,是一家非营利性组织。CNCF为Github上高速发展的开源项目提供完全中立的平台,并促进业界顶级开发者、最终用户及供应商之间的紧密合作。CNCF的官网上定义了CNCF的使命:创建一个可持续的生态体系,围绕高质量的开源项目群体培育开源社区,确保容器成为微服务架构的基础之一。作为一个开源软件基金会组织,CNCF致力于推广“云原生计算”并确保其可持续性,而“云原生计算”是一个用于部署微服务应用的开源软件堆栈,其方式是把各个组件都打包到容器中并动态调度容器以优化计算资源利用率。

CNCF对云原生(Cloud Native)的初始定义包含以下三个方面:应用容器化、面向微服务架构、应用支持容器的编排调度。2018年,随着云原生生态的不断壮大,所有主流云计算供应商都加入了该基金会,而且云原生有意兼容非云原生应用的部分。随着CNCF中的会员及容纳的项目越来越多,CNCF重新定位了“云原生”:云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。

云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式API。结合可靠的自动化手段,云原生技术使工程师能够轻松地对系统做出频繁和可预测的重大变更。CNCF致力于培育和维护一个厂商中立的开源生态系统,以推广云原生技术。

CNCF所关注的“云原生计算”侧重于云软件开发后的交付与部署,主要针对以容器为基础的云软件部署,即把一个云应用软件所需要和依赖的底层软件组件打包到一个个的标准化容器中,而容器可以把一次编写的云应用程序部署到从本地数据中心到公有云的多种底层计算环境中,进而无数的“小”容器横向连接起来形成云软件的规模化扩展能力。在容器化部署的过程中,容器的调度技术和能力显得尤为重要,相当于应用层的“操作系统”,其中一种已经取得市场主导地位的容器调度与编排技术就是Kubernetes。

在2018开源领袖峰会(OSLS)上,CNCF、Google Cloud工程总监Chen Goldberg宣布,Kubernetes成为第一个从CNCF毕业的项目。这也意味着该开源项目已经成熟且足够灵活,可在任何行业、各种规模的公司中大规模地管理容器。到了2018年,Kubernetes成为整个云原生计算的核心、灵魂和平台级技术,正因为Kubernetes技术、商业和生态的成熟,2019年是云原生技术全面商业化之年,Kubernetes成为整个云原生产业的灵魂。

在云原生计算技术全景图的各个组成部分中,既有CNCF所托管和孵化的顶级开源项目作为可选实现技术,也有其他开源项目和技术商提供的解决方案,如数据库部分既有CNCF孵化的Vitess(可横向扩展的MySQL数据库集群)可选,也有Oracle、IBM、SQL Server、MariaDB、Redis等可选,这些可选技术之间既有竞争关系也有互补关系,组合起来就可以实现一个完整的支撑云原生应用的PaaS操作系统。

在2018年之前,整个云计算领域围绕底层计算资源的管理达成了共识:OpenStack、AWS、微软Azure、谷歌云、IBM云、阿里云、VMware SDDC等IaaS软件业已成熟,而面向DevOps的云原生应用PaaS支撑技术则在2018年及之后全面成熟起来,这就是CNCF所代表的云原生开源项目群体。