第四届中国云计算大会的阵势和出席率,确实让人感到震撼。我主要是做软件技术的研究,对云计算的理解也不是非常深刻,只是想从我的角度看到的互联网云计算的发展状况,以及从我自己的专业背景,从软件技术方面看的东西和大家做一个交流,有很多是个人观点,供大家参考,也供大家批评。
总体演讲分成三个部分,一个是对云计算的认识,第二个想谈谈云计算的软件,第三个部分讲讲网购软件及实践。
什么是云计算?我觉得首先得从互联网开始谈起,自从新世纪以来,互联网的广泛应用和普及,实际上催生了我们一个创新的时代。互联网的环境以及上面大量的应用,不仅仅是催生了很多新的应用模式,产生了很多在互联网时代新的公司,不管是国际上的公司,还有我们国内所有的互联网公司。传统互联网公司也通过各种各样的方式向云和互联网结合。从学术界来讲,我们这个时代处于大量的概念创新时代,出现各种各样的术语。像“智慧地球、”“社交网络”“数字经济”、“网格计算、“普世计算”等等,不同的角度、不同的视角,大家都在试图探索互联网时代,我们怎么样把互联网上的资源充分利用起来,把它用好。我们中国有一个传统的寓言就是瞎子摸象,实际上不同行业的人,不同技术方向的人,都在从自己的角度试图看待互联网,看待互联网给我们提供的所谓的计算能力。
如果说我们大致初步来看一看,实际上这样的创新,我们可以分成两个阶段。第一个阶段,是把互联网作为一个信息源,我们在上面发布和获取信息。从最早期的门户网站到后来的搜索引擎,无外乎是把很多互联网上的资源整合起来,把各种网站整合起来,能够让更多的人通过这种方式,通过门户和搜索引擎找到他所希望的信息,所以早期的ISP等信息内容提供商就是做这样的事情。第二个阶段是希望把互联网作为一个计算平台进行能力提供,提供计算能力、提供各种各样的内容服务能力、提供软件能力等等。这里也有一个例子,比如说前几年比较热门的网格计算,希望把很多的计算资源连接起来,为大家共享、使用。而现在的云计算,也是这么一种模式,希望把更多的资源集中到一起,来产生我们的能力提供。
从互联网发展到现在,目前云计算是互联网最重要的一个热点。产业界正在建造各种各样的云平台,提供各种各样的云服务。而在学术界,大家力图从各种角度来解决云平台上一些新的研究性的问题。比如说平台本身怎么样提高云中心的执行效率、降低成本?从编程的角度怎么样支持高并发、大数据的应用程序的设计?从可信的角度怎么样保证用户的隐私、数据的安全、服务的可信?从能效上讲,怎么样降低它的能耗?从网络访问上讲,怎么样优化结构和访问路径,降低带宽的消耗?等等。还有很多的技术问题,实际上都在学术界进行认真的探讨。当然,有的问题并不是唯一针对云这种模式的,网络时代很多问题也都具有一定的共性。
从目前情况来说这是一个众说纷纭的时代。如果简单做一个划分的话,有各种各样的东西,比如说所谓的IaaS、PaaS到Saas,这是不同类型的云提供模式。内容上和云有相关的概念,现在至少没有一个统一的定义,包括所谓的云电视、云手机、云杀毒等等一系列的云。而从使用定义上讲,有所谓的公有云、私有云、混合云、家庭云甚至到个人云。定义也是千奇百怪,大致的核心也有共性,比如说云计算是SaaS加上效用计算,是提供计算和资源的服务,以及云计算就像一个大型主机,还有说是一种计算模型、计算模式,该模式允许随时随地、按需方便可以配置的网络资源。这些不同的定义,都是从不同的角度阐述他们对云计算的理解。
从我自己的角度,怎么看呢?我觉得经历过过去一个大阻击的时代,所以云计算在某种意义上,它就是一种新一轮的集中计算。在早期80年代的时候,我们国家建立了很多计算中心,买了很多的机器,比如说每个城市、甚至每个省建一个计算中心,大家到计算中心使用相关的计算能力。只不过那个时候,我们可能要骑自行车、坐公共汽车,或者通过其他各种方式,带着我们的任务去计算中心寻求上机的支持。这种集中计算带来的好处,就是成本能够分担,维护能够简单。但是缺点是什么呢?难以个性化,它的服务往往不是很周到。当我们到了计算中心以后,会发现可能我需要的软件还没有装上去,给我的时间不够。
我的很多东西在计算中心还要通过操作员去运行,所以有时候我自己的一些隐私、不想让别人看到的东西,也得要通过操作员,隐私难以保证。当然云计算和大数据并不是一个简单的重复,只是我们现在使用更为方便了。我们可以随时随地通过互联网、通过我们的移动互联网去访问云中心的各种各样的服务,不用再坐车去了,不用自己本人到现场使用了。第二个,它的能力扩展了,早期的集中计算中心时代,主要只是提供计算服务,其他的服务没有。而现在,我们可以在上面构建我们的业务逻辑,提供各种各样的应用服务。显然有一点就是它的定制能力、提供个性化服务能力增强了,比过去要好,因为在云中心里面,他可以提供更为灵活、方便的定制手段。但是,我们也应该看到,这种个性化要满足个人的需求还是不够的。
云计算它也不应是未来所有计算的唯一模式。个人计算、组织内部的计算也仍然是有必要的,至少有这么几个方面的理由。第一个,当一个人具有条件的时候,他总是期望能够独占资源,总是期望私有的计算资源和数据资源能够方便他随时随地使用,虽然有很多的浪费,但是我想我们每个人都有这样的独占资源的自私属性。第二个隐私问题,一些安全保护的问题,这些东西在我内部总归是可控要好得多。第三个就是我有很多专有的应用,实际上刚才我谈到的个性化也不一定完全满足我个人和企业的内部需求。这是从需求本身。
没有必要所有的东西都采用云的模式,毕竟终端能力还是需要充分发挥的。第一,我们终端能力是越来越强,我们现在各位手上拿的智能手机比早期的PC机强很多,终端能力很强,为什么浪费不发挥起来?第二个,有的应用没必要跑在云上,而且有可能必须在终端上执行。所以,未来的云计算模式和其他的模式应该是共存的。
对于公有云和私有云,我想二者不能完全照搬同一个技术。私有云是企业特定的计算,它的硬件环境也不同,内部的高速网络和服务资源需求量通常可以提预估。第三,用户行为可约束,所以说很多公有云技术也不应该直接照搬到私有云上来。
在云时代,中国更需要的是自主创新。这几年,大家谈的很多,企业、政府、专家,不同的角度都在谈云所带来的东西,统一的说法就是中国在同一个起跑线。不能说在同一个时间热起来就是同一个起跑线,这件事情是值得我们自己思考的。而且我也在很多场合,包括政府项目的申请,各种立项建议也听到很多企业家谈到所谓的技术,谈的最多的就是OpenStack、Hadoop这些都是来自国外。中国的企业、中国的学术界、研究界在做什么?有没有自己的东西?
另外,就是我们的创新机会到底在哪里?这些问题没有答案,有中国特色的应用需求,用户的偏好、商业规则、法律法规能不能带来一些新的需求?有没有一些特色的技术挑战,在基础设施、用户规模上。前几年谈得最多的一个所谓的中国特色的需求,大家翻来覆去得到一个需求肯定是中国最为典型的,就是海量用户,规模极大,大家所有的企业都认识到了。那么还有没有在中国特色的创新体系之下能够有事情可以做?政产学研的结合,包括现在在政府倡导下谈的最多的协同创新。
未来怎么看云计算?实际上我们可以看看,从单机时代,从最早的计算中心主要针对所谓的科学和工程计算。到后来,大体上还是单机,它可能有一个连网,局域网。从计算到各种各样的商业业务的处理,进入所谓的行业应用时代。而PC时代所产生的是个人的方便的桌面计算,逐步走向以人为中心。而在互联网时代,从计算早期的网格到现在的云,未来是什么?我个人观点,计算的未来一定会走向以人为中心、以人为本,人机物融合的大的计算环境。而这种环境是什么呢?就是以我们信息技术各种机器连成的信息世界,以互联网为代表的信息世界,把我们整个人和社会网连接起来,以及把我们的物理世界数字化以后,通过互联网管控起来,形成一个机网、人网和物网新的三网融合,这就是所谓的人机物融合。在这种三网融合的模式之下,一个方面,研究界仍然在追求高能力的发展,第二个方面,我们面临着复杂的应用,而这种复杂性就是我们说不断要通过信息技术来克服,去建模、瞄准、实现这种复杂性。第三个方面,我们也面临着新的资源的限制,特别是能源。资源的合理消耗使我们能够保证社会持续发展的基本保障,因此,这样一个人机物融合的新的和谐环境的形成,需要在能力、复杂性和资源三个因素共同优化的这么一个协作之下,来追求我们技术的新发展。
所谓的云计算有两大技术,一个就是所谓的虚拟化,向下管理硬件资源;第二就是服务化,向外或者向上提供各种各样的服务。而本质上,这两大技术都属于软件技术。实际上软件技术的现状在我们谈到的三个层次都会逐步体现,在PaaS层面的相关模型,以及SaaS层面的多模终端接入等等这一系列的相关技术,大部分还在软件技术上。当然,这些软件技术主要还是集中在这个平台的运行支撑方面,从我个人角度,长期从软件技术角度来看,这样的软件技术从技术体系的角度还缺少一定的系统性。
到底什么叫系统性?所谓软件的系统性,我们讲这个图基本上代表了软件的体系,首先我们得有针对某一种软件范型。通常围绕一个新的模型,我们首先来说,怎么构造这种模型的软件?就是开发效率和质量的提升,怎么支撑它的运行,提供相应的运行平台,包括操作系统、中间件这一类,包括现在很多云的平台想做的事情也是这样。第三个方面说,这样做出来的东西质量如何?是不是满足需求?其实我们也在提供相应质量的度量和评估的手段。这就是技术体系应该关注的总体上的一个结果。
如果回顾过去的发展,我们可以看到,模型的发展或者范型的发展是很重要的主线,它始终在追求更具表达能力的这么一种软件的模型。从早期的基本模型,我们从机器编程到使用高技元一步一步的发展,所以我们的模型在逐渐演进。从运行支撑上讲,我们不断的追求怎么样能够高效的把底层硬件资源提供的计算能力充分发挥出来,实际上计算机硬件发展的主线就是在追求速度,而是通过软件能够形成一个灵活高效统一的虚拟资源,能够满足各种各样的应用需求。从构造方法上,我们在不断地尝试去努力提供软件开发的效率和质量。一个方面,我们说凝练共性并不断地使用这种共性,从过去最早的应用写在裸机到操作系统到中间件,未来我们要写在云的运营平台上。在这个过程中,开发技术产生的很多东西不断地凝练沉入我们的运行平台成为其中的一部分。所谓的模型驱动开发、按需开发等等这样的模型。所以说,云计算需要新的软件模型,左边这种现有的模型,这种基本上是一种确定性的问题,结构化面向的对象是主流。而现行的语言可能需要考虑非确定性的构建,基于构建面向服务,甚至更新的一些软件范型,需要对问题特征、编程的范型和机器模型进行新的构想。传统的OS是管理单机、局域网,通过窗口进行交互,应用能力基本上定形,而云时代的操作系统需要管理的是海量分布的资源,可能甚至有行为的涌现,用户接入是在线使用多模的接入方式,而从应用的角度有不断的各种各样新的共性沉淀下来,我们需要对这些新的共性提供相应平台的支撑。所以,未来这样的操作系统会呈现出结构化、服务化、易伸缩、可定制的发展趋势。
从开发方法上讲,这样软件的构造一定是基于大量已有的资源,形成一种至底向上的聚合式的开发模式。这种以服务为中心,分布并发、弹性伸缩,来实现持续的演化。传统的计算环境相对封闭,我们只需要关心局部。而在云计算环境之下,我们必须要关注更多的质量属性以及它的综合,比如说安全性、隐私性等等。这个时候,系统质量只是一个内因,更多的是要以系统质量为基础,来保证面向用户,从用户角度看到的,或者说感受到的使用质量。这是我所理解的在互联网计算时代,或者说云计算时代,对软件的一些技术需求以及挑战。
最后,介绍一下网构软件及其实践。这也是针对互联网计算来做的,研究的背景就是开放动态多变的互联网环境之下,新型的计算模式不断涌现。当时国家有各种各样的技术描述,但是在这里面有一个视角始终没有人关注到,就是单机时代,我们需要构建新的软件平台,从软件的角度构成一台所谓的软件机。对互联网的软件平台,怎么样从软件的角度去切入,所以我们提出了网构的概念,这是2002年正式提出来的,在国家973项目计划支持下连续开展了两次,第一期就是基于互联网的软件中间件理论和方法研究,09年是基于网络的复杂软件可信度和服务质量及其开发方法的研究。核心的科学问题就是说,到底基于网络的复杂软件的模型和理论是什么。针对这种模型,我们怎么样建立它的开发方法和质量保障体系?怎么样为它提供高质量的运行支撑?以及怎么样去度量和评估它?
网构软件定义是什么呢?它是互联网开放模式下的一种新的范型,既是传统的结点的延伸,又具有区别于传统形态的独有的特征,比如说自主性、协同性、涌现性和演化性等等。这是它的一个基本形态模式,从微观上,它的交互方式、结点自主性,以及宏观上面向这种社区模式的宏观的组织模式,以及工程开发商至底向上的组装,从无序到有序、有序到无序的变化过程。从过去项目支撑之下,我们基本上形成了一到以体系结构为中心的网构软件的技术体系,围绕几个基本性质,涉及到网构软件的模型,网构中间件的技术模型,网构软件的开发与演化方法,还有相关的支撑工具和平台,也做了相关的示范应用。
其中一个网构开发软件开发方法就是ABC方法,使用整个体系结构把整个生命周期贯穿起来,实现从需求分析、结构设计、构建组装演化的全生命周期的支撑。我们希望为未来的企业计算模式提供运行支撑平台,即网构操作系统。相对于现在大家谈的比较多的私有云,它是一个新型的部门级的网络应用,也是基于网络的有云端、客户端,通过操作系统形成一些共性的支撑,既有传统的单点操作系统的存在,动态的演化、共享和控制包括安全和隐私的保护。在上面支撑应用有两类,一个是企业内部,或者一个机构内部共性的办公系统,第二个是相关的生产系统,它要产生什么样的产品。比如说我们内部构建对软件开发的支撑环境,包括软件工具的孵化等等,这项工作也正在进行过程中,是面向私有云的结构来做的。
另外,就是怎么样构建它的可信度的保障,在特定环境之下,软件实际质量对用户期望值的满意程度,我们要考虑用户的需求、用户的视角,所谓的使用质量,构建这么一个可信体系。我们也构建了一个实验床,目前这个实验床基本上是具备典型网构特征也是支持云计算模式的平台,以及相关的应用服务。在这上面,我们构造了一个应用,网构的SaaS平台,叫软工空间,对软件工程涉及的各个方面的知识以及软件开发需要的各种服务进行在线集成。现在这个网站也是对外的,主要是针对学术界使用,从08年开始访问量达到几十万人次,全世界各地都有人来访问,也覆盖了70多个软件开发的服务,对软件开发的主要过程都有所覆盖,同时在北大支持了很多教学工作,以及在国际上的一些服务杯的比赛形成一个软件工具的演示区。