写在前面
10 年前(2009 年),UC Berkeley 在 2 月 10 日发布了一篇关于 Cloud Computing 的论文,在 10 年后的今天看来,仍颇具启发性
Cloud Computing is likely to have the same impact on software that foundries have had on the hardware industry.
云计算对软件的影响就像代工厂对硬件行业的影响
一.云计算为什么是未来?
什么是云计算?
云计算(Cloud Computing)既指通过互联网提供服务的应用程序,所谓软件即服务(SaaS)中的服务,也指提供这些服务的数据中心的硬件和系统软件,所谓云(Cloud):
Cloud Computing refers to both the applications delivered as services over the Internet and the hardware and systems software in the datacenters that provide those services.
云以面向公众的即用即付方式提供时就叫公共云(Public Cloud),提供效用计算(Utility Computing)服务。相应的,公众无法使用的企业/组织内部的数据中心称为私有云(Private Cloud)
P.S.效用计算是一种服务预配模型,服务提供商按需向客户提供计算资源和基础设施管理,并且按使用情况而不是按统一费率计费
对应到用户角色上,关系如下图:
P.S.当然,SaaS providers 同时也可以是 SaaS users
云计算引发的变革
云计算的关键优势在于资源弹性调配(elasticity of resources),1000 台服务器用 1 小时的成本不超过 1 台服务器用 1000 小时,这种资源上的弹性是前所未有的:
Moreover, companies with large batch-oriented tasks can get results as quickly as their programs can scale, since using 1000 servers for one hour costs no more than using one server for 1000 hours. This elasticity of resources, without paying a premium for large scale, is unprecedented in the history of IT.
云计算还让应用程序提供者能够将其产品作为 SaaS 部署,而无需拥有自己的数据中心,就像半导体代工厂的出现让芯片公司有机会在没有晶圆厂的情况下设计和销售芯片一样:
Just as the emergence of semiconductor foundries gave chip companies the opportunity to design and sell chips without owning a fab, Cloud Computing allows deploying SaaS—and scaling on demand—without building or provisioning a datacenter.
正如 SaaS 允许用户将一部分问题抛给 SaaS 服务提供商,云计算允许 SaaS 服务提供商将一些问题丢给云计算供应商:
Analogously to how SaaS allows the user to offload some problems to the SaaS provider, the SaaS provider can now offload some of his problems to the Cloud Computing provider.
另一方面,从硬件角度来看,云计算带来的变化在于:
能按需提供无限的计算资源
云用户无需预估资源
支持即用即付的短期计算资源
这样公司就能从很小的投入开始,在实际需要时才增加硬件资源,从而提高资源利用率,同时,按需取用/释放的方式也有利于节约资源
二.为什么是 2009 年?
云计算的关键推动因素是在低成本的地区建设和运营大规模的商用计算机数据中心,这些地区的电力、网络带宽、运营、软件成本很低,从而形成规模经济:
We argue that the construction and operation of extremely large-scale, commodity-computer datacenters at lowcost locations was the key necessary enabler of Cloud Computing, for they uncovered the factors of 5 to 7 decrease in cost of electricity, network bandwidth, operations, software, and hardware available at these very large economies of scale.
实际上,自 2000 年初 Web 服务迅猛增长时起,到 2009 年一些巨头互联网企业已经拥有相当大规模的数据中心了,如 Amazon、eBay、Google、Microsoft 等:
Building, provisioning, and launching such a facility is a hundred-million-dollar undertaking. However, because of the phenomenal growth of Web services through the early 2000’s, many large Internet companies, including Amazon, eBay, Google, Microsoft and others, were already doing so.
同时,这些企业还必须建设可扩展的软件基础设施(如 MapReduce、Google File System、BigTable、Dynamo 等),以及专业的运营和安全防护机制
除了运营大型商用数据中心必要的软硬件基础设施之外,新的技术趋势和商业模式也是关键推力。另一方面,一旦云计算起步,就会发现新的应用机会和使用模型,同样能够促进云计算的发展
新的技术趋势和商业模式
Web 2.0 的出现意味着从高接触(high-touch)、高利润(high-margin)、高承诺(high-commitment)服务转向低接触、低利润、低承诺的自助服务。例如:
PayPal 的出现让个人也能通过信用卡收款,而无需合同和长期承诺,只有少量即用即付的交易费用
Amazon CloudFront 支持个人发布 Web 内容,不用与内容分发网络建立关系
Google AdSense 让个人网页能够实现广告收入,而不需要与广告展示公司建立关系
P.S.高接触指的是服务过程需要更多的人员接触,而不是通过自动售货机、自助柜台等方式
技术方面,虚拟机的出现让客户可以自选软件资源栈,在共享硬件降低成本的同时还不会互相干扰
新的应用机会
云计算对这几类应用而言是非常好的机会:
移动交互式应用:高可用性要求,以及大型数据集对大规模数据中心的依赖
并行批处理:大数据批处理和分析工作所需的计算资源
分析的兴起:业务分析(如了解客户、供应链、购买习惯、排名等等)也需要大量计算资源
扩展计算密集型的桌面应用:数学软件如 Matlab 同样依赖计算资源
另外,对于一些受限于数据迁移成本、延迟等因素,暂时“上不了云”的应用(”Earthbound” applications),在广域数据传输成本和延迟降低之后或许也能享受到云弹性和并行性的好处
三.效用计算(Utility Computing)
不同的效用计算产品可以根据提供给开发者的抽象层级和资源管理级别来区分:
Our view is that different utility computing offerings will be distinguished based on the level of abstraction presented to the programmer and the level of management of the resources.
例如,当时的几种云产品都对计算、存储和网络等资源进行了不同程度的虚拟化:
Amazon EC2:提供云虚机,像物理硬件一样,用户能够控制整个资源栈
Google AppEngine:提供面向应用程序的运行环境
Microsoft Azure:提供.NET 运行环境,介于前两者之间
但从云供应商和云用户的角度来看,这几种效用计算产品只是在开发者易用性、灵活性和可移植性之间的权衡,各自有其不同的适用场景
四.云计算经济
云计算所带来的精细化经济模型让权衡决策更具流动性,尤其是云提供的弹性能够转移风险:
We argue that the finegrained economic models enabled by Cloud Computing make tradeoff decisions more fluid, and in particular the elasticity offered by clouds serves to transfer risk.
典型的,效用计算优于私有云的场景有两种:
对一个服务的需要会随时间变化。比如应对需求高峰
预先不清楚需求。比如产品突然流行起来或者大批用户突然离开
第一种场景下,从成本与收益的角度来看应该是这样一个不等式:
UserHours of cloud × (revenue − Cost of cloud) ≥ UserHours of datacenter × (revenue − Cost of datacenter / Utilization)
即比较使用云计算的预期利润与使用数据中心考虑平均利用率时的预期利润:
用户小时数 * (小时收入 - 云服务成本) >= 用户小时数 * (小时收入 - 数据中心成本 / 利用率)
P.S.利用率是 100%的话,两边相等。即便可能,此时服务也不可用,因为数据中心的可用容量一般是 0.6 到 0.8
比如,一个服务白天需求高峰需要 500 台服务器,但晚上只需要 100 台机器,那么一天的平均用量是 300 台机器,使用时长为300 * 24 = 7200
小时。但为了应对需求高峰,需要付出500 * 24 = 12000
服务时长的成本,约为实际需要的 1.7 倍。那么,只要使用云服务 3 年(假设 3 年折旧)的成本低于购买服务器成本的 1.7 倍,就可以通过效用计算来节省资金
实际上,数据中心服务器的利用率一般只有 5%到 20%,因为需求峰值通常超过平均值 2 到 10 倍,而应对需求高峰的唯一方法就是提前预配资源。但并非所有的需求高峰都能提前预知,比如新闻事件引发的需求爆发,此时云计算所提供的资源弹性尤为重要
除成本因素外,风险转移能力也是云计算经济模型的一个重要价值。一旦需求高峰超出服务能力,就会造成经济损失,如下图:
不仅会损失一部分用户的潜在收入,还会导致一些用户因为体验问题而永远离开
另一些成本风险也能够通过云计算来规避,例如:
业务放缓等意外原因导致规模缩减,处理多余服务器所产生的折旧损失
软硬件更新换代所增加的成本
即用即付的短租模式能够减少云用户的使用成本,而购买力强大的云供应商也能够充分利用规模经济实现盈利。对云用户而言,能够迅速从价格上感受到资源成本的变化,比如立即享受到硬件成本降低所节省的开支
五.云计算的 10 个阻碍和机会
阻碍 | 机会 |
---|---|
服务可用性(Availability of Service) | 采用多个云供应商,利用弹性应对 DDOS |
数据锁定(Data Lock-In) | 标准化 API,兼容软件支持 Surge Computing |
数据机密性与可审核性(Data Confidentiality and Auditability) | 部署加密、VLAN、防火墙等,地理数据存储 |
数据传输瓶颈(Data Transfer Bottlenecks) | FedExing Disks、数据备份/归档、更大带宽的交换机 |
性能不可预测性(Performance Unpredictability) | 优化 VM 支持,闪存,并行调度虚拟机 |
可扩展存储(Scalable Storage) | 发明可扩展存储 |
大型分布式系统的错误(Bugs in Large Distributed Systems) | 发明适用于分布式虚拟机的调试器 |
快速扩展(Scaling Quickly) | 发明基于机器学习的自动扩展机制,并建立快照保护 |
声誉共享(Reputation Fate Sharing) | 提供像 email 这样的声誉保证 |
软件许可(Software Licensing) | 使用付费许可证,批量出售 |
P.S.前三个是采用云计算的技术阻碍,中间五个是云计算发展的技术阻碍,最后两个是采用云计算的政策和业务阻碍,右侧对应的机会是预期的解决方案
六.愿景
The long dreamed vision of computing as a utility is finally emerging.
云计算时代已经来临
期望云供应商能够以即用即付的模式销售所拥有的的计算资源,通过资源复用来获利。云用户能够节省建立自己数据中心的高额成本,同时从资源预配风险中解脱出来
同时,开发人员应该专注针对虚拟机的横向扩展,以支持部署到云环境中,具体地:
应用软件:需要支持纵向扩展,包括增加/减少 CPU、内存等资源,还需要一种付费许可模式
基础设施软件:需要支持运行在 VM 上,而且应该内置计费
硬件系统:应该在容器的规模上设计,这将是最低购买规模,运营成本要与性能和购买成本相匹配,同时还要考虑节能,让空闲资源进入低功耗模式。处理器要能与 VM 配合良好,闪存也要加到内存层次结构里,LAN 交换机和 WAN 路由器也要提高带宽和成本
七.启发
从资源角度来看,云计算带来的变革主要在于资源使用成本的降低和资源利用率的提升
得益于规模经济,集中管理的计算资源购买、运营成本更低廉,并且能够通过虚拟化技术共享复用硬件,进一步降低资源使用成本
资源利用率的提升则体现在 4 个层次上:
机器层面:能够迅速租用和释放。所持有的机器数量接近应用所需的机器数量
资源层面:不同类型的资源按需取用,不与物理机器的硬件能力绑定。所租用的资源贴合应用实际需要
负载层面:虚拟化技术允许共享硬件资源,充分利用 CPU 多核特性。硬件火力全开,疯狂旋转
租期层面:即用即付的短租模式所带来的资源弹性,改变了非峰值时段资源利用率低的局面。灵活调配,不必为闲置的时段付出成本