【IT168 专稿】尽管目前对云计算还没有一个统一的明确的定义,但是对于云计算将遇到的难题,人们已经总结了不少,而且基本上是达成共识的。但是这些问题并不是云计算的本质难题,是出现在目前生产上的,由于我们的认识原因造成的,并非那些与生俱来的困难。云计算的本质难题只有两个,软件危机和数量增长危机。
一、云计算现状分析
从2007年云计算开始在全球“红火”开始,IT专家们就开始关注阻碍云计算发展的难题了。最有影响的应该是美国加州大学伯克利分校的11位研究人员发表的题为《云之上:伯克利分校对于云计算的观点》的白皮书。这些研究人员在由谷歌、微软、IBM和Sun投资组建的RAD实验室(可靠的自适应分布式系统实验室)工作。
他们在2009年发布的白皮书中指出了阻碍云计算发展的10大障碍:
1. 服务的可用性。 2. 数据锁定。 3. 数据保密性和可审计性。 4. 数据传输瓶颈。 5. 性能不可预测性。 6. 伸缩性存储。 7. 大型分布式系统中的瑕疵。 8. 迅速伸缩。 9. 声誉命运共享。 10. 软件许可证。
而在其它搜索到的资料里,国外专家也提出了云计算面临的难题:
1. 访问速度。
网速对于云计算的影响在某些层面上可能较小。处理大量数据对处理单元和存储单元的连接速度要求很高。在相同速度情况下,远距离连接总是比本地连接的成本要高。
2. 可用性和可靠性。
可用性问题的实质是指ITaaS要求的其他所有技术组件能否成功运作。服务的可用性和可靠性既是技术问题也是业务问题。技术可用性是指允许内部服务提供商和云服务提供商设计出最符合特定价格档次的解决方案。进一步说,可用性虽然不是在某个特定价格上的可用性级别,但这已经是非常好的的表述方式了。
3. 安全性。
迄今为止,安全性问题仍然是云存储潜在用户的最大顾虑。调查显示,IT专家一直认为安全性有理由成为最值得关注的问题。
安全性一般包括四大元素,即身份验证、授权、访问控制和审计。
过去安全性设计是针对周边安全性,用以拒绝外部非授权用户的访问。在虚拟化环境中,虚拟IT服务不存在物理边界。于是,业务必须假设所有传输的数据都有潜在的被拦截风险。
国外知名IT杂志《PC Magazine》主编兰斯•乌兰诺夫在其文章中指出,谷歌和其他推动云计算的公司需要在用户采用“云计算”之前,回答以下8大问题:
1. 数据存储在什么地方?
2. 无法访问数据时该怎么办?
3. 我无法做什么?
4. 是否安全?
5. 我是否需要在家中保留备份?
6. 我的文件是否太大?
7. 如果服务关闭将会怎样?
8. 如果我忘记付费了会怎样?
二、云计算的本质难题
上面列举的三组影响云计算发展的难题,尽管说法不同,其实是同样的问题,只是角度不同。这些问题不是云计算的本质难题,属于云计算的非本质的次要难题,这些难题来自于后天的障碍,比如停电、硬件的限制、带宽的限制、法律规范等等。事实上,即便这些难题在短时间内得到突破,云计算也不会有太大的发展。
1、云计算是什么
在分析云计算的本质难题之前,必须先弄清楚什么是云计算,云计算应用产品是什么样的,云计算的目标是什么。
中国电子学会云计算专家委员会委员赵文银通过和哲学、经济学、东方文化、数学、软件开发以及云计算研究等不同领域的专家学者进行交流讨论,并在实践应用的基础上,对云计算做出了全新的定义。
云计算是以应用为目的,通过互联网将必要的大量硬件和软件按照一定的结构体系连接起来,并随应用需求的变化不断调整结构体系建立的一个内耗最小、功效最大的虚拟资源服务中心。
从这个定义可以看出,云计算应用产品是一个动态、不确定的体系,当结构体系发生改变时,其产品的结果是会发生变化的。
云计算的目标是形成“智慧地球系统”,万物相连。比如一个工厂生产酒,每瓶酒采用RFID射频识别获得唯一的身份编码,这样当运送到库房的时候,库存管理系统就运行了,在该酒的流通过程中,所有相关的软件系统都开始运行。而对于统计分析来说,可以得到实时的酒市场分析数据。
可见,云计算产品是一个规模庞大、极其复杂的系统。
2、云计算的本质难题
云计算的本质难题有两个,一是软件危机,二是数量增长危机。事实上这两个难题并不是云计算本身的问题,是传统技术范围里的问题。只是在我们目前的应用软件系统里,由于系统比较简单,规模较小,这两个难题可以暂时不考虑。比如操作系统存在的大量漏洞,尽管我们知道这是一个问题,但是真正解决的迫切性不大,因此可以采用一些其它的方式凑合使用,比如打补丁、安装杀毒软件等。又比如目前的物联网基本上是闭环网,在局部范围里把有限的设备连接起来,暂时可以不考虑数量增长危机。
(1)软件危机。在FO软件开发方法出现之前,软件危机基本上是没有办法解决的。图灵奖的获得者Fred Brooks博士认为,“没有任何技术或管理上的进展,能够独立地许诺十年内使生产率、可靠性或简洁性获得数量级上的进步。”
所有软件开发活动分为两个部分,根本任务和次要任务。根本任务是指打造由抽象软件实体构成的复杂概念结构,次要任务指的是,使用编程语言表达这些抽象实体,在规定的空间和时间内将它们映射成机器语言。
一个相互牵制关联的概念结构,是软件实体必不可少的部分,它包括:数据集合、数据条目之间的关系、算法、功能调用等等。这些要素本身是抽象的,体现在相同的概念构架中,可以存在不同的表现形式。尽管如此,它仍然是内容丰富和高度精确的。
软件生产率取得的巨大进步来自对后天障碍的突破,例如硬件的限制、编程语言、软件开发方法等等。这些障碍使次要任务实施起来异常艰难,但是相对根本任务而言,软件工程师在次要任务上花费的时间即使缩减到零,也不会给生产率带来数量级上的提高。
(2)数量增长危机。
在网上查找资料时,很少看到计算机专家讨论数量增长危机。各大公司在推销自己的云计算产品时,也不提“云”里无穷多信息的管理技术。
在互联网刚开始的时候,专家们认为IPv4的地址数量已经足够满足人类的需求,而今天IPv4由于数量太少而成了一种危机,目前解决的方案就是使用IPv6。我曾经和有关专家提出过IPv6同样会带来数量危机,但是他们几乎都认为IPv6的数量完全可以满足人类未来的需求了。
IP地址数量决定了互联网空间的范围。在日常生活中我们可能会有这样的一种体会,当一群人从宽阔的通道突然经过一个较小的通道时,会感觉到一种压力。这就是空间生存压力,这种压力会导致一些扭曲解决方案。
云计算把连接的万物通过软件系统有机地整合起来,数量增长危机是必须要解决的难题。比如物的定位、信息的管理等。