云计算是自2008年全球金融危机以来世界上最热门的词语之一。
世界各国、大街小巷,上至国家元首、下至家中老人,几乎全社会所有人都知道有这样一种新科技,叫“云计算”。自从2006年,亚马逊公司对外发布了一种名为“Amazon Web Services(AWS)”(亚马逊网络服务)的新型互联网服务以来,云计算的概念就逐渐被全球所熟知和接受。此后,几乎所有全球的高科技公司都卷入了云计算的大潮中,造就了一批明星公司或再造公司成为市场明星:包括中国的阿里云、腾讯云、百度云、华为云、紫光云、京东云、金山云、浪潮云等,美国的微软、谷歌、IBM、Oracle、VMware等公司,以及欧洲的SAP和工业4.0,无不因“云”而生/再生。
2018年,全球企业、政府机构和组织等对云计算基础设施的花费达到8000亿美元,同比增长45%。这是美国市场调查公司Canalys于2019年2月发布的数据,云计算已经成为全球IT市场最重要的组成部分,而这一市场在2006年AWS推出的时候还为零。如果说云计算造就了亚马逊的新繁荣,那么微软在2018年底再登全球最高市值公司宝座的事实,又一次催生了全球对于云计算的热情。自微软新一任CEO Satya Nadella上任以来,大力扭转了微软在移动互联网时代的颓势,通过全力投入云计算特别是公有云服务业务,让微软成为新时代的新王者。据有关统计,仅2016年,微软、亚马逊和谷歌三家在云计算业务上的投入就高达315亿美元,平均每家当年投入百亿美元以上。
而中国的阿里云也在云计算业务上投入高达百亿人民币,2008年到2018年的十年间,阿里云累计支出高达430亿人民币。根据2019年1月30日,阿里巴巴发布的2019财年Q3财报,2018自然年阿里云营收规模达到213.6亿元,首次突破200亿大关,阿里云4年间增长了约20倍,2018年底已成为亚洲最大的云服务公司。根据有关统计,40%的中国500强企业、近一半中国上市公司、80%中国科技类公司在使用阿里云。IDC的2018上半年中国云计算市场份额数据,阿里云已经占据中国43%的市场份额,连续三年排名第一,而在IDC的全球市场份额排名中为第三位,仅次于AWS和微软。
而就在2010中国(深圳)IT首领峰会上,腾讯马化腾当时认为云计算为时过早,百度李彦宏则认为云计算是新瓶装旧酒,只有阿里当时坚定投入云计算,马云曾承诺王坚对阿里云计算每年投入十亿研发费用。到2018年,腾讯宣布第三次组织战略转型,坚决投入云计算和ToB业务,晚了阿里云整整十年。而百度则一直在拓展非搜索业务方面乏力,百度云计算业务也远远落后于阿里云和腾讯云。到底什么是云计算,让BAT的三大佬曾经产生如此巨大的分歧,又在8年后达到一致的认同?不仅仅是BAT的三大佬,全球科技产业的领袖们都曾经对云计算有着各异的理解,例如硅谷传奇、Oracle创始人Larry Ellison就曾经对云计算嗤之以鼻但后来又强力跟进并宣布全面向云计算转型,而IBM也曾经对云计算业务一度犹豫不决但后来通过收购的方式坚决进入了云计算领域。
“All-In”(全面投入)是近年来经常听到的对于云计算业务的承诺,几乎所有科技企业高管都在重金投入云计算业务。而云计算(包括公有云、私有云、混合云等)也是最新一轮数字化转型的基础和“底座”,无论是人工智能技术、物联网技术、区块链技术还是产业互联网、金融科技、零售科技等都是搭载在云计算基础之上。云计算更是未来数字经济的基础设施,就是蒸汽和电之于上两轮的工业革命那样,云计算正在托起新一轮的工业革命——智能制造、工业4.0和数字经济。因此,想要理解数字化转型、想要理解数字经济,就必须要理解其底座:云计算。
到底什么是云计算?
关于到底什么是云计算?这个争论持续了很多年,直到2017年到2018年才有了基本统一的理解。
云计算的鼻祖AWS在2006年发布最初的云计算服务产品时,并没有采用“云计算”这个名字,而是以“网络服务”命名。AWS最早在2002年7月发布,最开始的时候是服务于对外开放亚马逊电商网站的技术和产品数据,以供外部开发者和商户调用和使用,围绕亚马逊电商网站而构建应用程序,例如帮助其它商户更好地在亚马逊电商网站上销售产品。2006年AWS重新发布的时候,推出的第一个产品就是S3,也是AWS最经典的产品,当时的新闻稿里是这样描述S3的:Amazon S3是面向互联网的存储。
最开始的S3,其核心技术思想就是通过互联网向开发者提供存储服务:S3让基于互联网的存储服务成为可能,开发者们不再需要关注到底在哪里存储数据、是否安全可靠、成本如何、存储空间是否足够等,通过互联网址“”,开发者就可以按需使用存储服务而不用自己购买、部署和维护存储服务器设备。S3在最开始发布时的价格为0.15$/每月/每GB数据存储服务以及0.2$/每GB数据传输服务。而S3的核心设计思想包括:去中心化、异步机制、自治系统、本地节点质量自控、可控的并发机制、容错、可控的并行计算、对称节点、简化、化大为小而美的构建模块,这些核心设计思想都成为了后来云计算系统设计的灵魂。
简单的理解,云计算就是把过去的企业IT,包括服务、存储、网络以及数据库、中间件、开发工具再加上CRM、ERP、HRM等应用软件,都通过互联网以网络服务的方式交付给企业用户使用。以前,企业需要自建多个数据中心,再购买相应的软硬件搭建起企业IT及企业IT服务,再通过内部网络服务于企业内部的各个业务部门,整个IT和IT资产全部都由企业自行投资、负担和运维。现在,由云服务厂商建立数据中心,把所有的企业IT服务都形成互联网上的网络服务,再以即用即租的方式供企业使用,这就是公有云(或公共云)。公有云让企业不必投资初始的数据中心以及后续的运营和维护,而只是像使用水和电一样从公有云厂商处租用即可。此外,由于通过互联网服务的方式向企业提供企业IT,那么其支持的企业IT和软件规模就从过去一个小范围区域上升到整个国家甚至可以全球支持,相应的云数据中心的组织和运营方式也与传统的中小型企业数据中心有所不同。
2018年11月26日,《纽约杂志》intelligencer栏目刊登了对AWS CEO Andy Jassy的采访,他亲述了AWS诞生过程:2000年到2003年间,亚马逊开始考虑和筹划后来的AWS,当时的起因是亚马逊网站增加了很多软件开发工程师,但开发软件项目所花费的时间却和以前一样多,其原因在于仅为了部署底层的存储、数据库或计算中的一项就要花费2-3个月的时间。为了方便亚马逊内部的软件工程开发,加速亚马逊互联网服务的上线速度,亚马逊高层启动了后来被称为AWS的项目,即像亚马逊擅长的运营零售行业基础设施那样,构建和运营可靠、可扩展、高性价比的企业IT和互联网IT基础设施。
2003年夏天的时候,亚马逊的高层问了自己一个问题:如果有公司会使用这些基础设施服务从头构建应用程序,那么这是否能够形成一套“互联网操作系统”,它的关键组件会有哪些?而在2003年夏天的时候,世界上还没这样的“互联网操作系统”。而亚马逊当时决定,要么就不做、要做就做大,于是时隔三年后的2006年才推出了AWS的第一项服务S3。
无独有偶,虽然微软晚了一步才开始对于云计算特别是公有云的投入,但微软公有云的名称“Azure”却也不是“云”的意思。Azure本身在英文中为“蓝天”的意思,也就是说微软Azure公有云的本意是为全世界做一个“虚拟” 操作系统,如果把全世界的计算设备都连在一起形成一台虚拟计算机的话,它的操作系统就是Azure。
提到微软公有云Azure,就不得不提到微软两个首席软件架构师中除了比尔•盖茨的另外一位,Ray Ozzie。Ray Ozzie曾接替比尔•盖茨,于2006年到2010年出任微软的第二任也是最后一任首席软件架构师。在微软曾发布的一篇关于Windows Azure的介绍中,提到Windows Azure的最初想法来自于2005年10月,时为一份名为《The Internet Services Disruption》(互联网服务时代来临)的备忘录,其要点在于推动微软整体向互联网服务转型,而这份备忘录就是由当时刚加入微软不久的Ray Ozzie起草的。
Ray Ozzie在这篇纲领性文件中,记述了他针对后PC时代、面向互联网的计算架构最基本的思想。他提出了由面向服务的软件架构所实现的“无缝用户体验”,并将之解析为“无缝操作系统”、“无缝沟通”、“无缝生产力”、“无缝娱乐”、“无缝市场”、“无缝解决方案”和“无缝IT”。其中,“无缝市场”的思想已经基本由今天的电子商务网站所实现,阿里巴巴在美国纽交所的上市、亚马逊在中国开展海外直购、京东开拓政府采购市场等等,全世界逐渐被几张电子商务网络所覆盖。但当时Ray Ozzie其它的思想,目前仍在实现中。
微软公有云为什么不被命名为Windows Cloud或Microsoft Cloud,而是Azure?如果看过美国电影《终结者》,无一例外会对电影里设想的“天网Skynet”印象深刻。“天网”描述了一个所有的机器都连接进一个庞大的网络,从而形成了像天空那样的覆盖,让机器的智能无处不在。而深入研究Windows Azure的架构,就不难发现,其实Azure的整体架构设计就反映了这样一个终极梦想场景下的“操作系统”。Azure有三个最基础的功能:计算、存储和网络通信,每个功能都通过庞大的数据中心以虚拟的方式实现。而如果对操作系统有最基本的了解,就会知道PC时代的操作系统其实就是由“计算、存储和网络通信”三个基础模块构成。不同的是,PC时代的操作系统由CPU、硬盘和网卡对应实现这三个基础模块,而在“全球所有计算设备连接成一台巨型虚拟计算机”的终极时代,这三个基础模块分别由庞大而互联的数据中心实现。
如此,就不难理解,为什么微软公有云叫Azure蓝天,因为它为“天空”而生。而理解了这样的终极梦想,也就不难理解,为什么“软件定义一切”的时代终将来临。因为当全世界只剩下一台无所不在的虚拟计算机的时候,还有什么不是被“软件”所定义?在微软2018 Build开发者大会,微软CEO Satya Nadella发表了演讲,他谈到了自己对智能云与智能边缘时代的看法,其中提到:“Azure正在成为一个世界计算机”,“如果你把世界想象成一台计算机,那么开发人员就是这个数字连接世界的新力量”。
Satya Nadella还提到:将近30年前,时任施乐PARC的首席科学家Mark Weiser在一篇颇具影响力的论文中这样预测——在未来,计算将无处不在。这个预测正在成为现实,计算不仅仅是一个接口,还可以嵌入到任何地方、任何事物上,无论是家庭中还是城市中——世界就是一台计算机。
把整个世界看作一台大型计算机是微软CEO Satya Nadella的愿景,也是很多计算机系统研究者的实践者的梦想。实际上,云计算特别是公有云,它成功让遍布世界的数据中心吸纳了全球大部分的计算和存储,而联网在一起的数据中心可以看作是由计算、内存、存储和网络及互联等部分组成的一台大型计算机,公有云软件系统就是从全局的角度考虑如何高效而可靠地协同各种软硬件和网络工作并对外为用户提供简单即用的互联网服务。
从大型机、PC、传统数据中心到云计算数据中心,全球的计算体系结构经历了私有集中化到个人分散化再到集中化和社会化的过程。那么,什么是云计算呢?首先,云计算是针对企业IT和互联网IT的一种计算供应方式,是整个企业IT和互联网IT供应链的重组,即通过由公有云服务商统一拥有和管理的遍布全球的数据中心,为企业和政府机构的IT部门以及互联网公司的IT部门提供按需付费的计算能力。
这里面有两个视角,一个是从用户即企业、政府机构和互联网公司的角度来说,就不再需要自建数据中心和企业IT的能力,相应减少了固定资本和一定的可变资本,同时也不需要维护一个庞大的IT基础设施运维团队,也不需要2-3个月才能部署一个新应用所需要的底层存储、计算或网络,企业应用开发和更新周期可以缩短到一周多次甚至一天多次,企业IT人员也可以集中精力于业务和应用创新,而企业的IT成本也改为使用量付费,也无需在一开始就支付一大笔的数据中心及设备的固定投资。
另一个角度是公有云服务商的角度,对于公有云服务商来说其实是要建设一个全社会共享的计算基础设施,AWS一开始也确实是从这个角度切入,即数据中心的资产所有权从企业让渡到公有云服务商手里,由公有云服务商统一打理和运营,公有云服务在此基础上再开发让多个租户共享使用计算能力的软件,这就是公有云的“操作系统”,即前面提到的互联网操作系统。
2016年初,美国寿险公司Tower Watson与微软智能云的HPC高性能计算和Big Compute超大规模计算组一起,测试了一个计算量惊人的项目,即把地球上每一个人的寿险成本计算一遍。如果是一台单核计算机的话大约需要19年时间完成这个实验,而当时仅调用了微软在全球14个区域的云计算资源,就在12个小时内完成了这顶“壮举”。这项实验不仅证明了全球性超大规模计算的可能性,还在于12个小时后这些被“抽取”出来的巨量计算资源又被释放回了各国的“云基地”。而在进行这个实验的12小时内,外界还在同时使用其它的Azure云计算资源,并没有受到丝毫影响。这个实验形象的说明了,云计算提供了海量计算资源和强大的调度能力,让全球用户可以并行、并发地大规模地使用流动的计算资源,而不会因某个用户大量占有计算资源而阻碍了其他用户。
那么,问题就来了,排除了其它一切困难和挑战,谁有能力建成一个全世界共享的“计算机”?IT系统是人类社会秩序的映像,如果人类社会都无法统一成一个地球村,那么又怎么会出现一个真正的全社会共享的统一计算基础设施呢?因此,抛开不同的云计算技术而言,云数据中心的建设者也无法统一到一家云服务商的手里,而是像各国电信网络一样既有顶级和一级运营商也有二三四级运营商,形成一个既有商用属性、又有公用事业基础设施属性的新型数字经济基础设施网络。
不同的云计算技术流派
再谈回到云计算技术本身。前面已经讲了,所谓云计算就是把全社会的计算资源连接在一起,其中由公有云服务商运营的计算资源将占据越来越主要的份额。而超大型公有云服务商包括AWS、微软、阿里云、谷歌云、IBM云等,将有机会发展出超大规模跨地域互连数据中心的“操作系统”,这就是公有云软件,而把公有云软件缩小规模运行到中小型企业私有数据中心里就是私有云软件,连接公有云和私有云并且能跨两边调度计算资源的就是混合云软件。
公有云、私有云、混合云和传统IT是按照计算资源的所有属性进行的划分。而公认的云计算系统框架分为三层:IaaS(基础设施即服务)、PaaS(平台即服务)和SaaS(软件即服务),这三层可以理解为IaaS即底层的基础计算资源(主要包括计算、存储和网络)、PaaS即IaaS之上和应用层之下的中间层(主要包括云化数据库、云化消息列队、云化应用管理平台等)、SaaS即各类云应用(包括ERP云、CRM云、HCM云等)。这三层的云计算系统架构,即适用于公有云,也适用于私有云和混合云。但架构仅仅是指导性,不同云计算厂商在实现的时候各有各的侧重和实现方式,因此导致了三层之间的边界混淆,也就导致了对云计算概念理解的混乱。
从前面的分析可以看出,所谓公有云软件或者“互联网操作系统”,主要是调用资源的规模大小有所不同。之前的Windows、Windows Server、Unix、Linux已经形成主流的PC和服务器的操作系统,而云计算软件则在2006年之后的十年发展过程中经历了百花齐放再到收归市场主流地位的几大流派:
(1)超大规模公有云软件。其中包括微软的Azure、亚马逊的AWS、阿里的Aspara飞天和Google云软件,这四家是经过实践锻炼出来的获得市场认可的云计算操作系统软件。微软提供了完整的从公有云到私有云再到混合云的微软体系软件,AWS提供了公有云和混合云的AWS体系软件,阿里云提供了公有云、私有云的阿里体系软件,Google主要是公有云软件,这四大家都是自行研发的软件体系且均覆盖IaaS和PaaS层以及有限的SaaS应用软件。
(2)OpenStack和CloudFoundry开源云软件,主要是面向IaaS的建设。其中OpenStack本身是适合私有云的“操作系统”,而私有云的规模要远远小于公有云,不过随着OpenStack技术的发展,也有公有云服务商基于OpenStack技术提供公有云服务,当然是达不到四大超级公有云服务的规模;类似的,CloudFoundry主要是面向私有云的PaaS开源软件,也可以用于提供公有云服务,例如IBM Bluemix云计算软件就是基于CloudFoundry;CloudFoundry的主要扶持厂商为VMware、DellEMC、微软、IBM等,因此更适合企业级IT环境。
(3)VMware则是源自企业级虚拟化技术,成功向云计算模式转型,推出了适合于私有云系统的SDDC(软件定义数据中心)系列软件产品Cloud Foundation,完全兼容传统的VMware虚拟化技术,同时也推出多种兼容和管理主流公有云软件的技术,是私有云和混合云IaaS市场的主导技术。
(4)各类开源PaaS技术,其中包括著名的开源大数据技术Hadoop和Spark,也包括MongoDB、MySQL、PostgreSQL等云化和分布式数据库,分布式消息队列和应用服务器等技术,以及Docker容器和Kubernetes容器集群管理编排技术等。主流的开源PaaS技术由开源社交CNCF(云原生计算)基金会主导(该基金会成立于2015年12月),属于2016年以后开始兴起的技术体系。之前,开源社区的主要精力和热点主要集中于2010年开始兴起的OpenStack等基础IaaS开源技术,随着OpenStack等的逐渐成熟而开始转向PaaS开源技术,而2019年也被视为云原生PaaS技术的商业化元年。
(5)Oracle和SAP公有云。Oracle是传统的数据库和企业级应用厂商,从2010年开始全力向云计算转型,在Oracle公有云数据中心里运行的是基于Oracle技术的软件,Oracle了推出了面向企业本地和私有环境的软件和硬件一体机,Oracle云的强项在于以云数据库为核心的PaaS技术以及ERP等企业级SaaS应用套件。SAP是传统的ERP厂商,2015年2月推出了面向云计算时代的第四代ERP产品S/4 HANA,可运行在多种云环境中,SAP还收购了多种SaaS应用以补充其ERP核心。
(6)中小规模以及在开发中的公有云软件、私有云等,包括中国的腾讯云、百度云、华为云、紫光云、网易云、浪潮云等,还有创业公司UCloud、青云、EasyStack等,这些多以开放开源软件为基础并进行了改进,其软件也可以对外。而私有云软件主要是Linux、OpenStack、KVM、CloudFoundry等开放开源为基础,为企业提供集成服务;还有以VMware为主的非开源私有云软件,主要是为企业降低了人才以及技术更新的成本。
开源软件为云计算带来了DIY模式。什么是云计算DIY模式?简单说,就是提供不带任何软件的裸机服务器产品,由客户自行安装所需要的软件,思科高密度存储服务器就是这样的产品。除了裸机服务器外,裸机交换机也开始流行起来,不仅带来成本的大幅降低,更重要的是可以把裸机交换机纳入到数据中心的编排系统里,进行服务器、存储和网络的整体自动化管理。云计算DIY模式是建立在软件定义基础设施SDI之上,也就是把软件与硬件剥离,用通用软件管理通用硬件。比如原先的思科交换机就是专有软件加上专有硬件,而SDN软件定义网络则把通用X86服务器作为底层硬件,上层用软件交换实现交换机的功能。基于英特尔处理架构的服务器、存储和网络,就是标准化、模块化和通用化的硬件资源池。
说到开源云软件,就必须要提到OpenStack开源IaaS软件体系。简单来说,OpenStack是云时代的Linux。OpenStack为开源爱好者提供了一整套自由代码,可实现几乎所有IaaS类型的云环境,其目标是提供实施简单、可大规模扩展、丰富而标准统一的云计算平台。OpenStack是一个由NASA(美国国家航空航天局)和Rackspace合作研发并发起的、以Apache许可证授权的自由软件和开放源代码项目。在2010年7月份NASA和Rackspace公司将OpenStack开源时,获得了25个企业和组织的支持。开源一年后,OpenStack就从42个组织成员和95个开发者增长到80个组织成员和1200个开发者及217个注册贡献者。得益于OpenStack的开放性,几乎所有的硬件厂商都在尝试往OpenStack加入对自己存储或网络硬件的支持, OpenStack能支持所有的 x86架构服务器。
OpenStack项目最开始的想法是要与亚马逊云AWS对抗,通过开源的方式打破亚马逊云的市场垄断。OpenStack作为全球公认的私有云技术标准,也被部分公有云服务商用于提供公有云服务。截止到2018年5月,OpenStack基金会在全球182个国家有近9万会员、672家支持企业,开发了近2000万行代码。其中,来自中国企业的参与热情高涨,OpenStack基金会的8席白金会员中有两家来自中国,21家黄金会员中有浪潮、中国电信、中国移动等近十家中国企业。
根据2018年上半年的OpenStack用户调查,中国在OpenStack部署数量方面排名全球第三。在2017年11月于悉尼召开的OpenStack峰会的SuperUser(超级用户)的评选中,入围的四家当中就有三家中国企业。中国厂商占据OpenStack基金会黄金会员的半壁江山,特别是三家中国电信运营商的出现,表明OpenStack在运营商基础架构中的重要地位。加上腾讯晋级白金会员,而IBM、Ubuntu等退出白金会员,都说明中国厂商在OpenStack基金会的规模、层级、影响力不断提升,逐步成长为全球性领导力量。
OpenStack作为一种强大的基础架构解决方案,适用于发展中公司和成熟企业,并在企业级范围内得到验证。用户选择OpenStack的原因包括:避免供应商锁定、标准化全球公有云、私有云网络的相同开放平台及 API、提高运营效率、加快创新能力、实现安全/隐私目标、吸引顶尖技术人才等。到2018年,OpenStack比以往任何时候都更加丰富,由互补的技术服务组成的生态系统,可以让用户以一种高度灵活和高效的方式管理数据中心。作为基于开源技术基础的首选IaaS环境,OpenStack已经达到企业级成熟度。
随着OpenStack的成熟以及容器技术的发展,2018年5月21-24日,第十七届OpenStack峰会在温哥华开幕,峰会的主题为“Open Infrastructure”。凸显OpenStack基金会积极拥抱变化、主动求变的态度更加清晰,也是OpenStack基金会开放代码、开放设计、开放开发、开放社区的四个开放原则的最佳实践。也就是从2017年开始,OpenStack已经扩展了自己的技术堆栈,以更加开放的方式,广泛连接企业基础IT技术生态,成为新的企业IT集成管理平台。不过,OpenStack是一个工程师的思维下的产物,本身比较复杂、技术性强,对企业的技术水平要求非常高。而市场缺的是运维和管理,这也造就了大量的商业机会。
作为一个开源软件与代码集成的引擎,OpenStack为企业数据中心网络中的裸金属服务器、虚拟机和容器等计算资源提供API接口,这让OpenStack越来越像是企业云数据中心的“操作系统”。HPE、思科、DellEMC、IBM、华为、联想、浪潮等国内外企业软硬件厂商,都支持OpenStack技术体系。在PC和PC服务器时代,DIY模式带来了整个生态系统的大繁荣,也让英特尔赚的盆满钵满。在云计算时代,英特尔当然也想重新建立DIY模式。英特尔从OpenStack社区一开始就给予大力支持。除了最早加入OpenStack基金会之外,英特尔还积极投资OpenStack公司。2015年英特尔向OpenStack社区最大的代码贡献企业Mirantis投资1亿美元,又陆续投资中国的OpenStack企业九州云和海云捷讯。在北美,2015年英特尔与Rackspace合作投资了两个1000节点的OpenStack集群,供开发者免费使用,建成后为全球最大的OpenStack开发云,双方还将组建全球最大的OpenStack开发团队。在中国,2012年英特尔联合发起了中国开源云联盟。
为什么云计算时代,开源软件能够成为一大主流派系?以网易为例,网易自己就全面采用了开源基础技术,仅有少量场景是自己研发,大部分的网易应用都采用了OpenStack、Kubernetes、MySQL等开源技术;而且在同类型的开源技术中,网易也是选择了更为主流的开源技术,比如在OpenStack和CloudStack中,网易就在OpenStack还不太成熟而CloudStack已经成熟的情况下,选择了OpenStack(CloudStack的主要支持厂商只有Citrix,而OpenStack却有众多的支持厂商;CloudStack主要为单体结构,而OpenStack为分布式结构;CloudStack为商业软件开源后的代码,而OpenStack从一开始就是开源软件)。为什么网易要坚定站在开源、开放这条路上?显然,一个很重要的原因是开源开放基础技术已经形成了一个完整的生态,有大量的技术公司、人才、高校、政府机构和用户的参与,相对在操作系统、数据库、中间件、应用管理与运行等对标过去软件体系的每一个软件堆栈(层面),都形成了完整的标准体系和参与者生态,这个市场的形态已经成熟并且可以规模化扩展。
开源技术的坚定支持者还有IBM。在2019年2月12日-15日的IBM Think 2019大会上,IBM董事长、总裁及首席执行官Ginni Rometty亲自参与了除主旨演讲之外的唯一一个分论坛并担任对话环节主持人,这就是“开源:企业的未来和创新的基石”分论坛。究竟开源这件事对IBM有多么重要,以至于Rometty要亲自站台并担任对话环节主持人?在2018年,IBM还耗资340多亿美元收购了Red Hat红帽公司,这是一家专注开源领域长达25年之久的软件公司。然而,可能令外界意外的是,收购红帽公司并不IBM唯一在开源软件方面的投入。实际上,IBM对开源领域投资可以一直追溯到Linux时代,而著名的WebSphere Application Server的70%以上都是开源的,包括了700多个开源组件。
在广泛的范围内,IBM参与上千个开源项目和社区。除了大量采用开源代码外,IBM还是向GitHub组织和代码库提供开源代码贡献最多的公司之一。IBM对开源项目的重大贡献包括:将Java运行时J9作为Eclipse OpenJ9孵化器贡献给了Eclipse基金会、将用于Java EE和MicroProfile应用程序的OpenLiberty runtime贡献给了o、向开放区块链项目Hyperledger Fabric贡献了源码、向Apache OpenWhisk贡献了无服务器平台源码、开放了IBM量子计算API Qiskit、开放了IBM AI Fairness 360工具包(AIF360)和AI Robustness Toolbox (ART)、开放了多个分析项目源代码并成为Apache Toree和 Apache SystemML,以及2018年过去的3年里还有超过100个其它贡献。
IBM对开源的承诺和贡献在业界是长期而持续的,IBM服务于许多开源基金会董事会,包括Linux、Eclipse、Apache、CNCF、Node.js、Hyperledger等,成千上万的IBM员工在使用和贡献开源软件。IBM重视并致力于开放治理,因为IBM认为这是确保开源项目长期成功和可行性的最佳方式。IBM开发人员每天都在重要的开源项目中工作,每个月都为数百个开源项目做出数以千计的贡献。
2017年底,IBM基于主流开源技术推出了新一代的IBM私有云产品IBM Cloud Private(ICP)。ICP软件体系架构主要是基于开源的Kubernetes、Cloud Foundry和各类管理工具。ICP是一个完整的私有云软件体系,从底层的传统企业硬件和IaaS到中间的PaaS以及向上层应用的“中间件”层和应用生命周期管理,还包括最上层的机器学习和人工智能开发平台以及现成的Watson应用,并支持其它企业SaaS应用。整个ICP是完全的开源开放,能够灵活的让企业选择不同的开源组件以及IBM专有软硬件,通过敏捷架构进行集成,让企业可以根据自己的数字化进程选择技术方案并连接整个转型和重塑的生命周期。更重要的是Kubernetes、容器和微服务这样一套技术体系,让IBM的软件可以运行在所有IT环境中,不管是公有云、私有云、混合云、混合IT还是IBM专有系统,Watson Anywhere、Blockchain Anywhere等都成为了可能。
云原生技术
在整个2018年,有很多关于数字化转型的讨论。以云、大数据、人工智能、物联网和区块链等数字技术所驱动的企业数字化转型,最终的目标是什么?这就是云原生的数字企业,或者称为数字原生企业。简单的理解,数字原生企业,其核心竞争力在于大规模的云软件的开发、运维及运营能力。
数字化转型的目标一是让软件成为企业的核心能力,二是把软件作为数字服务对外输出成为企业的核心业务,最终成为数字原生企业。在这个过程中,就必须要提到Red Hat红帽公司的Openshift、Cloud Foundry基金会和CNCF云原生基金会,也就是OpenShift、Cloud Foundry和Kubernetes这三大开源PaaS框架,也是数字原生或云原生的核心技术。
在了解三大开源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操作系统的云数据中心提供了统一的虚拟操作系统,异构架构时代开始结束。
说到容器和微服务,就必须要提到谷歌。谷歌在全球运维了上千万台的服务器,这个规模已经远远超出了很多现有技术供应商的上限,因此谷歌自己发明了诸多技术用于管理千万台规模服务器。比如谷歌研发了顶级的网络交换机,就连思科都造不出来这样的网络交换机。原因很简单,因为没有相应的实验环境。谷歌自1998年成立以来,已经研发和储备了很多“核弹级技术”,但这些技术绝大多数都被谷歌封锁,只能通过谷歌对外发表的学术论文找到蛛丝马迹。
谷歌为了避免使用市面上昂贵的基于物理机的虚拟化产品,同时也是为了更快、更便宜的发布自己的软件和服务,从一开始就研发了基于容器(Container)的新型虚拟化技术,通过这一技术简化了谷歌全部服务运行所需要的底层操作系统环境。2007年左右,谷歌刚开始研发容器技术,当时谷歌容器技术团队只有两个人。2015年的时候,谷歌所有的服务都运行在容器中,这包括了Gmail、地图、GFS文件系统、MapReduce等;谷歌每秒会启动大约7000个容器,每周会发布超过20亿个容器。每周运行20亿之多的容器,这让谷歌有能力发明很多关键性的容器技术,包括容器管理系统。谷歌容器管理系统的第一个版本被称为Borg,后续又发布了名为Omega的版本。通过这个管理系统,可以在谷歌的大规模集群资源上使用容器技术。后来业界根据谷歌的相关学术论文,模仿Borg开发出来的Mesos系统,被Airbnb、Twitter、苹果Siri等在使用。而后来著名的Kubernetes开源容器集群管理系统,就是由谷歌贡献出来的开源技术。
再说回Openshift、Cloud Foundry和Kubernetes。Openshift是一组由Red Hat红帽公司开发和维护的基于Docker和Kubernetes构建的开源的容器云产品,可帮助企业和组织搭建及管理基于容器应用的私有云解决方案。通过OpenShift,企业可以快速地搭建稳定、安全、高效的容器私有云应用平台。OpenShift Container Platform是一个在企业数据中心本地部署的基于Docker和Kubernetes的PaaS平台,属于Kubernetes的社区发行版,该平台基于Red Hat Enterprise Linux。Openshift Origin(Origin Community Distribution,OKD)是由开源社区维护的基于Docker和Kubernetes开源应用容器平台,OKD是Openshift Online、Openshift Dedicated、Openshift Container Platform的核心。Openshift Online是Red Hat红帽公司的公有云应用开发和托管服务,该服务运行在AWS上。Openshift Dedicated是Red Hat红帽公司的托管私有云,运行在AWS和Google云平台上。此外,O是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云操作系统标准。在CloudFoundry基金会的平台之上,成员企业所使用的代码都是相同的,以减少碎片化版本,成员企业主要通过提供差异化服务赢利。Cloud Foundry是目前为止支持最多种开发语言和中间件的开源PaaS框架,IBM当时就宣布投资10亿美元开发基于Cloud Foundry的Bluemix PaaS云平台。
Openshift与Cloud Foundry是两大PaaS开源框架,相互之间既有区别也有相似之处。Openshift主要基于Kubernetes的社区发行版,因此与Kubernetes是天然的原生支持。而Cloud Foundry是基于Pivotal自行研发后开源的技术。在对Docker容器技术的支持方面,Openshift也是原生支持,而Cloud Foundry原生支持Pivotal自行开发而后开源的Garden,Garden是一种类似Docker的容器技术。Openshift的主要支持者是Red Hat红帽公司,而Cloud Foundry则有大批支持者,包括IBM、HP、DellEMC等。因此,如何选择Cloud Foundry的话,则有广泛的供应商选择;而选择Openshift的话,则主要只有Red Hat红帽公司可选。实际上,Docker、Kubernetes、Openshift这是一个体系,Garden、Diego、Cloud Foundry这是一个体系。其中,Diego是与Kubernetes竞争的同类型技术。这两条路线都是容器技术的实现路线,一个是有大批企业IT公司支持,另一个是逐渐获得了广泛的开源社区支持,这两个技术路线属于同时并行发展,只是Kubernetes在2018年的时候获得了业界广泛的认可而成为了容器集群编排技术的主流,因此导致IBM在2018年以340亿美元收购Red Hat红帽公司,以获得Docker、Kubernetes、Openshift技术体系的原生支持。
说到Kubernetes就必须要提到CNCF基金会。CNCF(Cloud Native Computing Foundation)成立于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成为整个云原生产业的灵魂。
截止2019年2月,CNCF已经毕业的项目有五个,分别是Kubernetes、Prometheus、Envoy、CoreOS和Containered,在孵化的项目和初级项目还有27个左右。CNCF提供了建议的整个云原生计算技术全景图,实际上就是面向云原生应用的“操作系统”上层架构,又称为aPaaS:以容器技术为核心,分为运行时(Runtime)和 Orchestration 两层,Runtime 负责容器的计算、存储、网络,包括云原生存储、容器运行时、云原生网络等;Orchestration 负责容器集群的调度、服务发现和资源管理,包括调度与编排、协调与服务发现、远程程序调用、服务代理、API网关和服务网格等。在运行时(Runtime)之下为基础设施和配置管理,作为容器底层技术。容器可以运行在各种系统上,包括公有云、私有云、物理机等;这之上为容器的“计算资源供应层”,提供容器运行所依赖的自动化部署工具、镜像工具、安全工具等运维系统。而在Orchestration之上为应用层,即“App定义与开发层”,包括数据库、流与消息、应用定义和Image构建、持续集成与交付等。
在云原生计算技术全景图的各个组成部分中,既有CNCF所托管和孵化的顶级开源项目作为可选实现技术之一,也有其它开源项目和技术商提供的解决方案,例如数据库部分既有CNCF在孵化的Vitess(可横向扩展的MySQL数据库集群),也有Oracle、IBM、SQL Server、MariaDB、Redis等可选,这些可选技术之间既有竞争关系也有互补关系,组合起来就可以实现一个完整的支撑云原生应用的aPaaS操作系统。
在2018年之前,整个云计算领域围绕着底层计算资源的管理形成了共识:OpenStack、AWS、微软Azure、谷歌云、IBM云、阿里云、VMware SDDC等IaaS软件业已成熟,而面向DevOps的云原生应用PaaS支撑技术则在2018年全面成熟起来,这就是CNCF所代表的云原生开源项目群体。
结束百家争鸣、云计算“抱元归一”
2013年的时候,中国市场掀起了一波“云计算”热,整个IT产业甚至整个社会都在热议一项叫做“云计算”的技术。到底什么是云计算?到底云计算是怎么构成的?到底云计算能做什么?其实从几个角度可以最终理解云计算的本质。
首先,云计算是企业级IT技术。不同于消费互联网和消费IT技术,云计算的本质是通过互联网向企业、政府和组织等交付IT服务。这十分类似过去的企业数据中心外包,但云计算是把企业的数据中心收归到云计算厂商手中,由云计算厂商统一运营和管理,再统一以按使用量付费和通过互联网交付的方式向企业提供IT服务。企业只需要打开一个互联网浏览器,就可以登录到公有云厂商的服务界面,勾选相应的计算需求和配置(包括服务器、存储、网络、软件等),就可以马上使用这些计算资源,而不再像过去那样还要经过采购、部署、安装、配置、上线、调试等一系列复杂且需要一定周期的工程。而私有云就是按公有云的架构和体验,重新构建企业内部IT系统,企业内部人员也像使用公有云一样通过浏览器使用私有云。把公有云和私有云连接在一起的,就是混合云技术。而在这些云技术之外,还有无法云化的传统企业IT技术,它们通过某种方式连入云计算资源池,成为可以调用的计算资源。
其次,云计算是共享计算资源。公有云就是社会化的大规模共享计算资源,公有云的最终目标是让计算资源像水和电一样成为标准化的社会基础设施。而企业无论大小,都可以接入同样水平的计算资源,而仅按使用量付费。共享计算资源不仅仅是全社会共同节约IT基础设施,因为随着越来越多的企业开始展开基于互联网的商业模式(类似亚马逊和阿里电商那样),整个社会对于服务器、存储和网络等计算硬件的需求激增,而承载这些计算资源的数据中心还要耗费大量的工业用电和冷却水资源,例如在阿里电商的发展历史上,杭州的电力资源就一度无法满足阿里数据中心的用电需求,因此阿里不得不在贵州、张北等有自然风冷等条件且有电力容量的地方兴建数据中心。不论对亚马逊、阿里等互联网公司,还是正在建设大规模数据中心的传统企业,数据中心的计算资源如果是按照满足互联网流量峰值而建,那么在互联网流量洪峰过后无疑就可以共享给社会上其它企业和组织。
第三,云计算是更大规模的虚拟化计算。过去,有VMware、微软等虚拟化解决方案供应商,它们解决了中小规模的企业计算虚拟化,例如数百台服务器连接在一起的数据中心虚拟化,这些虚拟化技术虽然无法承载更大规模的互联网计算,但却能完成很多具有复杂业务逻辑的计算任务,并且满足企业级安全、合规等各种要求。而上千台服务器、上万台服务器甚至像前三大公有云厂商那样上百万台服务连在一起的虚拟化技术,这就云计算。在阿里云的历史上,曾经有著名的5K飞天之战,就是阿里通过自研技术解决5000台服务器连接在一起形成一个虚拟计算资源的挑战。
2009年,自阿里云写下第一行代码,就要自主研发出以“飞天”为代号的大规模分布式计算系统。飞天的设计宗旨就是通过构建一套综合性的软硬件系统,将数以千计的服务器连成一台“超级计算机”,并最终实现两个目标:对内,通过对这台超级计算机进行物理资源分配、程序运行操控,以及保障服务及数据安全的操作系统,支撑阿里集团服务的核心技术平台;对外,将这台超级计算机的计算、存储等资源,以公共服务的方式,输送给互联网上的用户或者其他应用系统。飞天平台从1500台的集群规模到3000台的集群规模,再到2013年8月最终成功实现单集群超越5000台、同时支持多集群跨机房计算的目标,阿里云整整花费了5年的时间,因此5K集群的难度可想而知。
第四,实现云计算有多种技术方案。世界几大公有云厂商,AWS、谷歌、微软、阿里、Oracle、SAP等,都是自行研发的技术方案,例如阿里就是基于C语言自行开发的云计算技术方案。也正因为如此,云计算的第一个十年(2008-2018年)也可视为“孤岛”云的十年,云计算是更大规模的IT“孤岛”,不同技术方案的云计算之间很难实现互联互通,而且一旦上了某个云计算技术方案就很容易被“锁死”,导致“上云容易、下云难”的情况。不过,到了云计算的第二个十年,也就是从2018年开始,开源技术逐渐成熟并成了产业主导地位。例如到了2018年,也可以用OpenStack实现5K集群,当然这晚于阿里2013年的5K飞天整整5年,但2017年开始建设的云计算系统都可以受益于成熟的开源云计算技术。此外,OpenStack等IaaS基础设施的开源技术也开始走向开放架构,成为企业新IT资源和系统的集成器和连接器,统一的开源技术开始主导云计算的技术方向。而到了PaaS应用平台层面,以Kubernetes为代表的开源技术更在2018年取得了绝对的产业主导地位,所有的IaaS技术都开始与Kubernetes连接,Kubernetes从应用层面统一了云计算的架构,这样就开始出现可以真正互联互通的云计算技术。到了Docker容器和DevOps敏捷开发,这又是统一的SaaS应用技术。这样,“全世界一台计算机”的梦想开始成为现实。
第五,云计算技术是“互联网+”技术,而基于云计算的新商业模式就是“+互联网”。可以理解云计算特别是公有云是整个社会的共享数字中台,所有的企业共享一个互联互通的基于互联网架构和计算系统,这样所有的企业都可以互联互通起来,相当于是企业整体上网,这就是“互联网+”。而一旦企业整体上网,整个企业以及所有企业和组织都运行在一个计算平台上时,就可以通过大数据、人工智能、区块链等增值技术实现新的商业模式,这就是“+互联网”。例如,在过去的技术条件下,无法追踪一个人在整个社会中的轨迹,因此传统的经济学只能通过少量的观测数据分析人的行为以及其对经济的影响;而在全社会都基于“一台计算机”的前提下,可以很容易的追踪一个人的全社会数字轨迹,或是研究所有消费者在线的全量数字行为,这将打开全新的经济学理论空间。而当所有企业都在线的时候,很容易打开企业的边界形成新的社会化合作,到时候的企业形态也将发生巨大的变化,网络化组织和平台型组织也由此出现。而365辆互联的智能汽车,一天在全球各地的驾驶数据汇集起来,就能抵过一台汽车跑365天的数据,这相当把一年的学习时间缩短到了一天,同样还能缩短到一小时、一分钟甚至一秒,人工智能正在云计算的基础上改变人类文明和知识的发现方式。
总体而言,云计算是一种新的计算范式,它并不是新发明或新的技术,而是对原有技术的重新组织和重新架构,以支撑各种程度的共享计算。在全社会共享计算的基础上,人类正在进入新的数字文明时代,人类正在由工业革命的个体时代进入到数字革命的社群和群体时代。云计算不仅是现代社会的神经网络,更是新社会的启动机器。(文/宁川)