二、云计算的本质难题
上面列举的三组影响云计算发展的难题,尽管说法不同,其实是同样的问题,只是角度不同。这些问题不是云计算的本质难题,属于云计算的非本质的次要难题,这些难题来自于后天的障碍,比如停电、硬件的限制、带宽的限制、法律规范等等。事实上,即便这些难题在短时间内得到突破,云计算也不会有太大的发展。
1、云计算是什么
在分析云计算的本质难题之前,必须先弄清楚什么是云计算,云计算应用产品是什么样的,云计算的目标是什么。
中国电子学会云计算专家委员会委员赵文银通过和哲学、经济学、东方文化、数学、软件开发以及云计算研究等不同领域的专家学者进行交流讨论,并在实践应用的基础上,对云计算做出了全新的定义。
云计算是以应用为目的,通过互联网将必要的大量硬件和软件按照一定的结构体系连接起来,并随应用需求的变化不断调整结构体系建立的一个内耗最小、功效最大的虚拟资源服务中心。
从这个定义可以看出,云计算应用产品是一个动态、不确定的体系,当结构体系发生改变时,其产品的结果是会发生变化的。
云计算的目标是形成“智慧地球系统”,万物相连。比如一个工厂生产酒,每瓶酒采用RFID射频识别获得唯一的身份编码,这样当运送到库房的时候,库存管理系统就运行了,在该酒的流通过程中,所有相关的软件系统都开始运行。而对于统计分析来说,可以得到实时的酒市场分析数据。
可见,云计算产品是一个规模庞大、极其复杂的系统。
2、云计算的本质难题
云计算的本质难题有两个,一是软件危机,二是数量增长危机。事实上这两个难题并不是云计算本身的问题,是传统技术范围里的问题。只是在我们目前的应用软件系统里,由于系统比较简单,规模较小,这两个难题可以暂时不考虑。比如操作系统存在的大量漏洞,尽管我们知道这是一个问题,但是真正解决的迫切性不大,因此可以采用一些其它的方式凑合使用,比如打补丁、安装杀毒软件等。又比如目前的物联网基本上是闭环网,在局部范围里把有限的设备连接起来,暂时可以不考虑数量增长危机。
(1)软件危机。在FO软件开发方法出现之前,软件危机基本上是没有办法解决的。图灵奖的获得者Fred Brooks博士认为,“没有任何技术或管理上的进展,能够独立地许诺十年内使生产率、可靠性或简洁性获得数量级上的进步。”
所有软件开发活动分为两个部分,根本任务和次要任务。根本任务是指打造由抽象软件实体构成的复杂概念结构,次要任务指的是,使用编程语言表达这些抽象实体,在规定的空间和时间内将它们映射成机器语言。
一个相互牵制关联的概念结构,是软件实体必不可少的部分,它包括:数据集合、数据条目之间的关系、算法、功能调用等等。这些要素本身是抽象的,体现在相同的概念构架中,可以存在不同的表现形式。尽管如此,它仍然是内容丰富和高度精确的。
软件生产率取得的巨大进步来自对后天障碍的突破,例如硬件的限制、编程语言、软件开发方法等等。这些障碍使次要任务实施起来异常艰难,但是相对根本任务而言,软件工程师在次要任务上花费的时间即使缩减到零,也不会给生产率带来数量级上的提高。
(2)数量增长危机。
在网上查找资料时,很少看到计算机专家讨论数量增长危机。各大公司在推销自己的云计算产品时,也不提“云”里无穷多信息的管理技术。
在互联网刚开始的时候,专家们认为IPv4的地址数量已经足够满足人类的需求,而今天IPv4由于数量太少而成了一种危机,目前解决的方案就是使用IPv6。我曾经和有关专家提出过IPv6同样会带来数量危机,但是他们几乎都认为IPv6的数量完全可以满足人类未来的需求了。
IP地址数量决定了互联网空间的范围。在日常生活中我们可能会有这样的一种体会,当一群人从宽阔的通道突然经过一个较小的通道时,会感觉到一种压力。这就是空间生存压力,这种压力会导致一些扭曲解决方案。
云计算把连接的万物通过软件系统有机地整合起来,数量增长危机是必须要解决的难题。比如物的定位、信息的管理等。