天云软件郭宏:云平台未来的趋势及应用

12月12日,全球首个探讨产业互联网的大型会议,2014 CVW﹒产业互联网大会在北京亦庄召开,并通过纽约时代广场大屏幕同步呈现。大会由亚信集团、云基地和亦庄经济技术开发区联合举办,汇聚超过5000名关注互联网和传统产业发展的全球IT和传统行业领袖和精英,探讨“互联网进入传统行业”、“传统行业互联网化”的演进以及产业互联网的技术模式和业务创新。

在下午的云平台@互联网论坛上,来自天云软件研发副总裁郭宏先生带来《云平台未来的趋势及应用》主题演讲,分享他对云平台的理解以及云平台未来的发展。

以下是他的演讲全文:

郭宏:各位领导、各位来宾,下午好!我是天云软件研发副总裁郭宏,我负责天云软件云平台的产品开发。今天下午跟大家分享一下我们对云平台的理解以及云平台未来的发展。

今天在座各位来参加云平台分论坛也是对云平台有很大的兴趣,云平台的发展已经有几年的历史了,到底什么是云平台,云平台解决什么问题。云的发展过程中是从资源和虚拟化开始的,我们讲的亚马逊的AWS都是以虚拟化为基础的,虚拟化是第一步。对云平台来讲,是在虚拟化的基础上实现资源的自动化管理。所以第一阶段是IaaS,从国内3年前就开始了Iaas的建设。大家最简单的一个理解Iaas就是虚拟机,不是,它包括了整个生命周期的管理。云能够体现它的特性,在亚马逊的公有云上特性非常明显就是在于它的动态性,一个虚拟机可以动态的创建、动态的删除,甚至变化,IaaS是解决了我们整个创建过程和生命周期的管理。

云要实现整个系统的云化,它一定要实现应用,所以从应用的支撑或者升到一个高度应用云平台,也就是SaaS云平台。最终一定是一堆的应用在云上来跑,这些应用通过云的环境实现应用的支撑。所以APPS是云平台的第一步。

云平台实际上是云的操作系统,正是因为有这么多应用放在云上,虚拟机和其他存储网络的资源管理基准是什么?一个操作系统其实是对资源的整个管理,所以云平台其实就是云的操作系统。同时把云提供的各种服务,把IT的资源包装成服务,应用和调用这些资源来实现服务。在此基础上需要异构,能够支撑各种虚拟化,比较有名的是VMware、Hen、KVM、IBM。虚拟化的技术是基于低负载的,跟虚拟机稍微有一点区别,但是基本思路差不多,只不过虚拟机没有操作系统,用母机的操作系统,所以今天我跟大家分享的是云平台的发展其实是对应用的支撑,怎么对应用更好的支持,技术的发展是非常典型的。它不仅是虚拟机,而是把应用的环境做成了它的基本考虑的发展,那个环境可以在整个系统上去迁移。所以我们理解一个云平台它的基本架构,就是我能对各种的虚拟化或者技术加以支撑。

为了支撑这些虚拟化产业平台也有几个比较流行的或者开源的标准,像Openstack。我们的思路是一个云平台基于这些标准,已经做了很多虚拟化的工作,在虚拟化之上也开通了虚拟机,包括IP分配,包括一些HA和存储整个管理基本的功能其实都做了。所以云平台实际上是一个操作系统来管理这些开源的中间件,通过中间件实现对虚拟化的整个支撑。同时云平台利用Openstack、CloudStack虚拟化来实现落地。

现在越来越多的公有云,亚马逊是最早做成云的,大家建私有云就要想按照这个思路在我这里建私有云,同时也要考虑与我的客户对接。从云平台的角度来讲,我管理私有云,又可以到公有云上建资源,就可以利用AWS或者阿里云的接口,将私有云与公有云打通获得资源。

作为云平台我们就用现成的,就不用再做重复的工作了,但是开源的包不是每个人拿下来就一定能应用,它不是一个产品,只是说它有一个功能。实际上跟Hadoop一样,你要负责开发功能。Openstack3年前只是一个框架,拿来可能不好用,但是这几年随着大公司的增加,越来越多的公司,包括IBM、惠普他们很多都是基于Openstack。像Openstack的Heat,它就是解决一个机器和机器里面的应用的自动化部署。我有一个机器,把应用放进去,我可以自动化部署,这样拿到的一个机器是带应用的机器。这就是Heat定义的标准。

其他Openstack里有存储的,有计算的,有网络的,真正在私有云能用的还是以计算为主,存储跟网络平台很多是在公有云上。相Heat在私有云上就可以很好的集成。

Docker为思路跟Heat是不谋而合的,本身是基于容器的,底下跟CPU和内存隔离,跟虚拟机是一样的。同时又做了一个文件系统,每一个容器有自己的文件系统。我还可以往上叠加,封装  成一个应用就是一个应用服务器,服务器既包括了应用系统,又包括了应用。这样就可以做成模板,模板是当上应用、中间件和操作系统的模板,这个模板就可以到不同的机器上复制,不仅虚拟机,Docker是一个容器,概念不是跟虚拟机对等,而是跟Heat对等,我是一个应用的容器,这个容器可以包括机器,包括上面的中间件和应用。这种技术的发展就使得应用的支撑做的更好,而且更能体现云的思想。Docker有生态链,可以构建Docker集群。我们的思路是已经有现成的东西,在此基础上我将它管起来,实现云和应用落地,所以它是作为我们的基础架构来实现的。我们把它做成了我们的发行版,同时还可以调优,根据我们的需要把功能开发出来。

这是云的基础设施能实现的功能,但这些功能是不是就是云呢?不是,怎么对应用实现最好的支撑。我们的云平台要做的是应用的支撑,我能让应用最快的在云上跑起来。包括了应用的自动化部署,应用里可能有中间件,如果是Java的话有外包,有自己的代码,这些都可以通过自动部署来实现我的自动增长。我要加一台机器,我就可以自动化的来做。

另外是模板的概念。虚拟机模板,我把应用塞进去以后就可以应用了。这种应用的模板可以和Docker结合起来,对应用来讲我的要求就是应用能够帮我转起来就行了。在应用之上我可以有集群的应用或者页码,我们可以自动的部署页码。

应用的整个管理可以基于Openstack,也可以基于Cloudstack,随着Docker发展,底下的资源层可以通过Docker来部署。

右边是一个业务系统,假定有三层,是Web服务器、应用服务器和数据库,每一层都可以部署在一个虚拟机里面,或者部署在一个Docker里,Docker是轻量级的虚拟机。这样一个物理机是同构的话可以是一堆Docker来运行,效率会更高。

对于应用管理来讲,实际上就是我怎么样定义一个应用,通过模板的方式,让一个应用最后能够在云上部署起来。

要定义一个应用有多层的架构,所以用一个图形的编辑器来编辑各层的结构,拖拽的方式,比如左边是做好的应用的模板,可以把这些模板拖拽到编辑器中再定义我的网络层次,就定义了整个应用的架构,落地可以是一个Docker,也可以是一个虚拟机。应用管理的时候通过配置可以生成你想要的。

应用的模板或者应用的容器好处是能够利用开发环境、测试环境、生产环境,实际上是一到,解决大量的应用上线都是通过人工部署的问题。

应用系统不是部署一套,而是部署多套,高校就是一个例子。一个老师上一门课,这一门课是一堆机器组成的一个应用,把这些应用做成一个模板,可以让每个学生多部署一套,他可以在这个上面做他的应用开发。通过模板的方式能够让我的开发、测试和生产是一套,这个环境跟Docker的应用环境是不谋而合的。

现在Docker非常热,连微软都说他要支持Docker,Docker是基于Linux的,他要支持,亚马逊也支持了。所以各种应用如果是同构的或者需要多个集群的应用,可能选择Docker是比虚拟化更好的。大集群的应用更适合Docker,虚拟机是小应用,因为每台都不一样,所以你需要虚拟机的操作系统。

有了应用模板的概念,实际上云平台更是一个能够容纳各种应用的一体机,这就上升到一个高度,开始只是申请虚拟机,现在云平台走向应用,我要让应用在云平台上落地,把一个应用看成一个整体,我就可以发布这个应用让更多的人来用这个应用。所以他的思路是把各种能力封装起来,提供平台的应用级的服务,各种服务在平台上形成一个卖场。

这里有一个例子,我们跟一个运营商合作,可以将他的ICG的能力,比如位置服务,手机定位的服务,都包装成能力,让第三方应用可以在这些能力上跑,但它的规模是可以变的,模板只有一套,整个的逻辑是完全一样的。通过这个平台我把不同的能力封装,对应用可以更好的支撑,使用应用的服务也通过这个平台实现它的运行。同时通过开发管理让更多的应用通过标准的应用发布的接口可以发布到云平台,这就形成很多的应用在云平台上落地。

前三年在云平台上开虚机是云平台的重点,现在重点是应用在云平台上怎么应用和管理。随着应用或者云平台规模的增加,调度其实是变得越来越重要。我们的调度是云平台的核心,规模越大你越需要调度。所以初建云平台的时候,说我直接开虚机就完了,虚拟机也就几台,人可以管,可是当你有几千台、几万台的时候,而且机器数在变化,人是肯定做不了的,这个时候就需要智能,这个智能就是操作系统来调度。所以调度是云平台的核心,将来谁的调度做的好谁的云平台才能站住脚。也就是说在公有云平台上怎么极大化的提高它的应用,而且又满足用户各种服务的要求。

操作系统是管一台机器的,机器的硬件和它上面跑的软件中间是操作系统,所以一个机器上都得有一个操作系统。从Unix来说主要是进程调度,它是匹配需求、应用,可以通过中间件JAVA程序,操作系统都是一个进程,你要申请CPU、申请内存、申请硬盘,操作系统帮你去实现,这是单机的操作系统的概念。在云上,云是管理所有的资源,可以有计算、网络、存储,将来很多软的功能都可以做成资源,使用者还是应用,只不过应用不是单机应用,可能是集群应用。所以说云平台它的核心是调度,它负责云所管的资源和应用之间的调度,这个调度就是云平台的核心。

底下的资源尽量的用好又不出问题,使用者不要感觉到我的服务不同,这里就提到SLA的概念,不同的服务可能有不同的SLA的要求。另外不同的应用之间可能会相互影响,是不是我把CPU全占了别人就干不了活了,相互之间要不受影响,这也是调度要解决的问题。

最基本的调度可能是基于负载的调度,也就是说会根据资源使用的情况,在申请资源的时候,到底我这个资源该放在哪里。负载是会变化的,最低不是说一刹那是最低的,而是要让整个系统怎么最有效,所以要综合的来考虑。

对于云的各种服务来讲,不同的服务是有不同的需求的,有的很关键,哪怕现在利用率不高也要把资源留给它,有些可能是测试用的,我不着急,没资源也行。所以不同的SLA有不同的要求,要求不同的调动要对不同的SLA进行管理,满足不同的服务都可以在一个平台上跑起来。所以基于SLA的标准我要知道它的优先级,同时云计算是变成按需来使用资源的,你的资源就会面临着无限量,所以在SLA上还要有额度,还要实际使用情况的追踪。

随着云系统越来越大,调度可能就成为瓶颈,所以需要分布式的调度系统。云本身已经是一个分布式,它是一个调度,调度更需要分布式。

前面跟大家分享的是我们认为云平台重点是一个应用的支撑和应用的落地,或者以后会叫应用平台,调度是它的核心。从我们的产品开发来说,我们认为这两个是我们的发展方向,做云平台的时候大家可以思考这个问题。通过云服务你可以提供不同的服务,但它底下最根本的还是资源,之前我们发布的SkyForm3.0能够支持Openstack,也能够支持Cloudstack,主要支持虚拟机的服务,年底我们又增加了物理机和存储服务等等。同时我们又加了可扩展性,支持的规模要提高,目前我们的版本能够支持到2000个物理机跟一万个虚机。半年之内用户有这种要求要达到10万台虚机,这里就要有立体化分布式技术,可能我不是一套系统,而是多套系统分布式大家协同来工作,所以像亚马逊他们的机器数也是会分层分区的。

我们希望一定应用在云上跑起来,比如Docker我们要找非常有价值的应用,用Docker来实现这种云化和整个的调度。运营商现在大型的应用在小机上,要求X86,X86不是单个机器就能搞定的,一定是一个集群,可能是虚拟机,也可能是Docker,而且它的应用本身是一个大集群的应用,所以Docker会更好。我们会跟客户配合,以云落地的方式让这个最新的技术在整个云上实现。

以后我们还会支持网络SDN,这是跟硬件有关的,通过VPC,我们目前在建公有云、私有云,要把二者打通,使它们之间实现共享。系统越来越大,人越来越广,靠人已经看不明白,需要一个智能化的系统能够告诉我到底是怎么样的,将来是怎么样的,所以要做智能化分析跟预测。