Defining Cloud Computing
云计算影响着IT硬件的设计和购买方式。开发人员不再需要在硬件上投入大量资金来部署其服务,也不再需要人工来运营它。他们不需要担心服务的普及性不符合预期导致的资源浪费,也不必担心热点服务的过度配置导致失去潜在的客户和收入。此外,承担大量面向批处理任务的公司可以在其程序规模扩展的范围内尽快获得结果,因为使用1000台服务器1小时的成本并不比使用一台服务器1000小时高。
云计算既指作为服务通过Internet交付的应用程序,也指提供这些服务的数据中心中的硬件和系统软件,也即软件即服务(Software as a Service ,SaaS)。一些供应商使用基础设施即服务(Infrastructure as a Service ,IaaS)和平台即服务(Platform as a Service ,PaaS)之类的术语来描述其产品,但这篇论文避开了这些术语是因为它们已被接收的定义间仍然相差很大。 “低层”基础架构和高层“平台”之间的界限并不清晰。 这两者之间的相似之处多于不同,所以将它们结合在一起考虑。
有关IaaS、PaaS、SaaS介绍 可以参考此链接
数据中心的硬件和软件就是我们所说的云。云计算是SaaS和实用程序计算的总和。当按即付即用的方式向公众提供云时,我们称其为公共云,出售的服务是效用计算。私有云一词指的是企业或其他组织的内部数据中心,而公众无法使用。但私有云需要足够大从而可以在云计算优势中受益,如果是中小型数据中心,即使这些数据中心依赖于虚拟化进行管理,也不能被称为私有云。
image.png上图是云计算的用户和提供者的关系图,这篇论文专注于云计算对云提供商和SaaS提供商/云用户的影响,也即中间这一层。中间这一层是可以递归的, SaaS提供者也可以成为SaaS用户,云提供商还可以在云基础架构上托管自己的面向客户的服务。
从硬件供应和定价的角度来看,云计算中的三个方面是新的。
A.出现了按需可用的无限计算资源,其速度足以应付负载激增,从而消除了云计算用户为提供资源而提前计划的需求。
B.消除了云用户的前期承诺(up-front commitment),从而使公司仅在需求增加时才开始小规模发展并增加硬件资源。
C.短能够根据需要在短期内支付使用计算资源的能力(例如,按小时计费的处理器和按天存储的处理器),并根据需要释放它们,从而通过在不使用计算机和存储设备时将其闲置来进行保护。 (此处我有疑问,机器不是应该一直运行来充分利用资源吗?)
低成本的超大型商用计算机数据中心的建设和运营保证了云计算可以以低于中型数据中心的成本提供服务,同时仍能获得可观的利润。
云运行的必要条件之一是分配可以跟踪预期的负载增加。基于这个标准,在ISP上托管的面向公众的Internet服务不是云计算,因为公共Internet上的负载激增比发生速度快得多(Animoto在近三天的时间内每12小时看到其负载增加一倍。而内部企业数据中心是符合这个条件的,其应用程序仅在事先通知管理员的情况下进行修改,不会出现在几分钟之内出现大的负载激增。但企业数据中心可能仍然无法满足成为云的其他条件,例如,出现无限资源或细粒度计费。
从云计算中忽略私有云是有争议的。
先看表1,表1表示了公有云和传统数据中心在按需出现无限计算资源、消除了云用户的前期承诺、能够根据需要在短期内支付使用计算资源的费用、大型数据中心带来的规模经济、通过复用来自不同组织的工作负载来提高利用率和通过资源虚拟化简化操作并提高利用率这6个公共云潜在优势方面的比较。
如表1所示,除了拥有数十万台计算机的超大型数据中心之外,大多数数据中心仅享受公共云潜在优势的一部分,因此,将传统的数据中心包含在云计算的定义中会导致私有云定义的夸大,所以将它们排除在外。
Cloud Computing Economics
三种更适合实用程序计算(utility computing)而不是公用程序托管的场景(conventional hosting):
第一种是对服务的需求随时间变化。例如,某数据中心每月有维持几天的高峰请求,如果进行相应的负载配置会导致其他时间利用率不足。而云计算使组织可以按小时支付计算资源,即使从云提供商那里租用计算机的小时费率高于拥有设备的费率,也有可能节省成本。
第二种是事先未知需求。例如,Web初创公司在公司发展时将需要支持需求的激增,一旦某些访客访问请求被拒绝,可能会流失潜在客户。
第三种是执行批处理分析的组织可以使用云计算的“成本关联性”来更快地完成计算:使用1,000台EC2计算机一小时的成本与使用一台计算机1,000小时的成本相同。
尽管云计算的“即付即用”定价比同期购买和贬值一台可比服务器要贵得多,但弹性和风险转移(未充分利用的风险和饱和的风险)带来的云计算经济效益远远超过了成本。
下图对未充分利用和饱和都进行了解释,体现了弹性的重要。
图2a假设我们的服务具有可预测的需求,其中高峰在中午需要500台服务器,而谷底在午夜仅需要100台服务器。只要一整天的平均利用率为300个服务器,则每天的实际成本(曲线下的面积)为300×24 = 7,200服务器小时;但是由于必须配置500台服务器,因此我们需要支付500×24 = 12,000服务器小时,这是另外1.7倍。因此,只要每服务器小时的即付即用成本(典型的摊销时间)小于购买服务器成本的1.7倍,实用计算就会更便宜。这种情况就是未充分利用。
图2b就是饱和,也即供应不足的情况:牺牲了未服务用户(阴影区域)的潜在收入。
图2c是配置不足的情况,我的理解是图2b的后果:一些用户在服务质量差后永久离开该站点;这种减员和可能的负面压力导致永久性损失一部分收入。用户将放弃配置不足的服务,直到高峰用户负载等于数据中心的可用容量为止,此时用户将再次获得可接受的服务。被拒绝的用户不仅会产生零收益,而且他们可能永远也不会回来,更坏的情况是心怀不满的用户会给网站带来不良声誉。
上面这个实例低估了弹性的好处,因为除了简单的昼夜模式外,大多数服务还经历季节性或其他周期性需求变化(例如12月的电子商务和节假日后的照片共享站点);还可能由于外部事件(例如新闻事件)而导致需求激增。而购买和存放新设备可能需要数周的时间,如果要处理此类峰值,就必须提前为其准备。即使服务运营商正确地预测了峰值的大小,也会浪费容量,而且如果他们高估了他们准备的峰值,情况甚至更糟。
Top 10 Obstacles and Opportunities for Cloud Computing
- 业务连续性和服务可用性
首先什么是业务连续性?我在网上查的解释是这样的:灾难备份是业务连续性的基础。但是如果一个灾难备份系统使数据恢复正常的时间过长,那也就不存在所谓的业务连续性了,缩短这个时间,就是业务连续性的目标,消除这个时间,则是业务连续性的终极目标。业务连续性包含三个领域:业务状态数据的备份和复制、业务处理能力的冗余和切换、外部接口冗余和切换。
问题:云供应商可以提供专门的硬件和软件技术,以提供更高的可靠性(大概价格很高)。然后可以将该可靠性作为服务级别协议出售给用户。但是由一家公司管理云计算服务实际上是单点故障。即使公司使用不同的网络提供商在不同地理区域中有多个数据中心,它可能具有通用的软件基础结构和会计系统,甚至公司可能倒闭,这些都会导致单点故障。
解决方案:论文认为要实现极高可用性的唯一可行解决方案就是多个云计算提供商,就像大型Internet服务提供商使用多个网络提供商一样,这样一家公司的故障不会使它们瘫痪。 - 数据锁定
问题:前面提到实现高可用需要多个云计算提供商,但用于云计算的存储API基本上仍是专有的,或者至少不是主动标准化的对象。因此,客户无法轻松地一家云计算提供商提取其数据和程序以在另一家上运行。由此导致的客户锁定可能对云计算提供商有吸引力,但是他们的用户被锁定后可能遭受价格上涨、出现可靠性问题甚至是提供商倒闭等等情况。
解决方案:采用一种标准化的API,使SaaS开发人员可以在多个云计算提供商之间部署服务和数据,这样一家公司的失败就不会导致所有客户数据副本的丢失。
论文里说这么做可能会导致云计算定价“自底而上”,云计算提供商的利润会减少,论文里关于这个疑虑说了两点:
首先,服务的质量和价格很重要,因此客户可能不会选择成本最低的服务。某些Internet服务提供商的成本比其他Internet服务提供商高10倍,因为它们提供额外的服务来提高可用性。
其次,除了缓解数据锁定问题外,API的标准化还可以在内部数据中心和公共云中使用相同的软件基础结构。这样可以启用混合云计算或涌浪计算(hybrid cloud computing or surge computing),使用公共云来捕获由于工作量暂时繁重而无法在数据中心(或私有云)中轻松运行的额外任务。这样可以极大地扩展云计算市场 - 数据机密性/可审计性
问题1:云的外部威胁
问题2:云提供商必须防范用户的盗窃或拒绝服务攻击。当今云的主要安全机制是虚拟化,可以防止用户攻击其他用户或底层云基础架构的大多数尝试。但是,并非所有资源都已虚拟化,并且并非所有虚拟化环境都没有错误。错误的网络虚拟化可能会导致用户代码访问提供商基础架构的敏感部分或其他用户的资源。
问题3:保护云用户免受提供商侵害。提供商可以自己定义——控制软件堆栈的“底层”,来规避大多数已知的安全技术。由于缺乏对安全技术的重大改进,这就需要云用户通过法律而不是安全工程来防范提云提供商的侵害。
解决方案:加密的存储;虚拟区域网络、网络中间件(保密)和在虚拟OS上加一层逻辑,提供安全性(审计) - 数据传输瓶颈
问题:应用程序越来越依赖于大量数据传输,同时不同云之间云的传输,这些都会增加数据传输的成本和复杂性
解决方案:有种发送大量数据的最便宜的方法是运送磁盘甚至整个计算机。虽然这不能解决每个用例,但它可以有效地处理容忍大量点对点传输的情况,例如导入大数据集。 - 性能不可预测
问题:内存和硬盘的读取速度波动问题
解决方案:改进架构和操作系统来改进虚拟终端和I/O通道的效率;增加闪存(闪存是一种半导体存储器,它在关机时会像机械硬盘一样保留信息,但是由于它没有活动部件,因此访问速度更快,并且能耗更低)来减少I/O冲突(interference)。 - 可扩展存储
略 - 大型分布式系统中的bug
问题:大型分布式系统中的bug无法在较小的配置中复现,因此调试必须在生产数据中心大规模进行
解决方案:使用虚拟机。许多传统SaaS提供商认为承受不起VM的性能损失,当初在不使用VM的情况下开发了其基础架构,而虚拟化可以捕获在原本没有VM的情况下难以获得的有价值的信息。 - 快速扩展
略 - 声誉共享
一个客户的不良行为会影响使用同一云的其他客户的声誉。例如2009年3月,FBI突袭了达拉斯的一个数据中心,对该数据中心正提供服务的某公司进行可能的犯罪活动调查,但是在同一设施中托管的许多“无辜旁观者”公司遭受了数天的意外停机,甚至导致其中一些公司倒闭。
还有法律责任转移的问题,云计算提供商希望客户承担责任而不是他们承担责任。例如,发送垃圾邮件的公司应承担责任,而不是亚马逊。 - 软件许可
问题:当前的软件许可证通常会限制可以在其上运行软件的计算机。用户购买软件,然后支付年度维护费。许多云计算提供商最初依赖于开源软件,部分原因是许可商业软件的模型与实用程序计算不是很好的匹配。
解决方案:采用开源软件。商业软件公司转变他们的授权方式来更好的适应云计算。
参考:
- 论文笔记
- 原论文
网友评论