本文最初发表于 IEEE Software 杂志。该杂志提供有关当今战略技术问题的、有理有据的同行评议消息。为了应对运行一家可靠灵活的企业所面临的挑战,IT 经理和技术负责人需要从 IT 专业人士那里获取最先进的解决方案。
在当今的公司环境里,人们已经对云计算成本低、灵活、敏捷的特点有了很好的认识。但是,为了充分利用云技术,你需要了解它们的最佳实践、主要提供商及局限性。
自互联网出现以来 [1],云计算的概念已经提出了有 50 年。1957 年,John McCarthy 将计算机中的分时共享概念设计成了一种工具。从此以后,这个概念的名字经历过数次变化:从“服务中心(service bureau)”到应用服务提供商,到互联网即服务,到云计算,再到软件定义的数据中心,每个名字都有细微的差别。但是,核心概念没变:提供基于互联网(云)的 IT 服务。
美国国家标准与技术研究所 (NIST) 的云计算定义用的最多:云计算是一种模型,使用户可以随时随地、便捷地、随需应变地通过网络访问可配置的计算资源(例如,网络、服务器、存储、应用、及服务)共享池,池中资源可以快速分配及释放,并且只需要很少的管理工作量以及与服务提供商的交互 [2]。
提供商使用三种众所周期的模型(见图 1):IaaS(基础设施即服务)、PaaS(平台即服务)和 SaaS(软件即服务)。这里,我们重点讨论 IaaS。下一步是选定一种模型部署云服务。在公有云中,提供商向任意客户提供基础设施。私有云只提供给一个组织。在混合云中,公司组合使用公有云和私有云。
为了选出最适合组织的云计算模型,必须分析组织的 IT 基础设施、用途和需求。为了帮助完成这项工作,我们将在这里描绘一幅云计算的现状图。
云计算最佳实践
和每一种新的架构模式一样,重要的是在设计系统时考虑新技术的特性。 为了选出一个云提供商或技术,你应该了解自己的需求,以便列出需要的特性。下面是一些云迁移的最佳实践 [3]。
弹性架构
IaaS 提供了明确的可扩展性。云比传统物理硬件的缩放策略做得要好。为了从这种潜力中获得尽可能强的可扩展性,在设计系统和应用程序架构的时候应该尽可能的解耦,使用一种面向服务的架构,并在服务之间使用队列。
设计时为故障做好准备
高可扩展性有其局限性。IaaS 技术和架构会导致系统不够健壮,因为用多个软件层替换硬件明显增加了复杂度和故障点。冗余和容错是主要的设计目标。
图 1:三种云模型:IaaS 是基础设施即服务,SaaS 是软件即服务,PaaS 是平台即服务,VM 表示虚拟机。
为了保证业务连续性,除了要建立备份策略外,还要确保系统做好了重启准备。借助服务器配置和部署步骤,部署实践自动化是必须的。自动化需要新的开发实践(开发和运维管理、持续集成、测试驱动开发等等)和新的工具,比如 Chef、Puppet 或 Ansible。
高可用性
对任何企业而言,IT 资源破坏都会产生巨大的负面影响。在迁移到云上后,会失去对底层基础设施的控制,而且服务水平协议(SLA)并不能涵盖所产生的所有费用,所以,在设计时要考虑到停机和高可用性。由于创建虚拟实例非常简单,所以部署服务器或服务集群成为一种受欢迎的方式。在这种场景下,负载均衡是一种被广泛认可的集群操作技术;在选择云提供商时,这是一个需要考虑的重要特性。
另外,还有一点也很重要,就是使用多个可用区域或者至少是不同的数据中心,从而确保系统尽可能地健壮。在 2011 年 4 月,Amazon Web Services(AWS)就经历过,其系统停止运行或者时断时续地运行了 4 天。将集群划分到不同的区域和数据中心可以提高资源弹性。
性能
需要考虑与技术有关的技术局限性——主要是缺少隔离性,没有健壮性。在任何多租户环境中,一个实例的性能可以影响相邻的实例。相邻实例使用率骤升会影响可用资源,特别是计算单元和磁盘的 IOPS(每秒 I/O 操作次数)。架构应该处理这种变化。
另外,由于延迟问题,可能会出现瓶颈,即使是在同一个数据中心的实例中。云提供商提供了一些特性用于处理这种情况(比如,AWS placement groups)。不过,如果你的架构有服务器在不同区域的数据中心里,那么你应该考虑使用其它技术(比如,缓存)。
安全
由于公有云的开放性,设计和维持一个安全的基础设施在任何云部署中都应该是一种重要的目标。务必采用被广泛认可的安全实践:防火墙、最小化服务器服务以便减少攻击媒介、保持操作系统版本最新、基于密钥的身份验证等。但是,挑战可能来自于需要维护的服务器数量增加以及在不同的开发环境中使用云:开发环境、过渡环境和生产环境。在这种场景下,隔离以及保证每个环境的安全非常重要,因为原型服务器中的一个漏洞可以提供通过密钥访问整个基础设施的可能。
监控
新资源易于部署使得服务器数量呈指数增长。这提出了新的问题,监控工具对系统管理而言至关重要。首先,它们在周期性扩展和基于事件的自动扩展中发挥基础性作用。其次,它们是确保架构健壮性所需工具的一部分,就像 Netflix Chaos Monkey 那样。最后,它们对安全漏洞检测和事故调查非常重要,正如某些安全漏洞所表现的那样。
公有云
当亚马逊将其私有云经验提供给一般公众时,公有云成为第一类提供给一般公众的云。在选择供应商的时候,有几个因素需要重点考虑,主要包括成本、性能、特性、数据位置及可用性。但是,由于公有云是一种相当新的技术,所以还需要考虑供应商的地位和未来的使用趋势(见表 1)。
(点击图像放大)
表 1:* 在这些列中,百分比的总和大于 100,这是因为有些公司使用了多种产品。
†这一组包含 PaaS(平台即服务)和新近的提供商
云提供商正在争夺市场地位,致使他们降低公有 IaaS 云的价格,提供有吸引力的解决方案。
重要的是,选择一个从性能 - 成本角度来看最有效的供应商。不过,在比较的过程中,应该考虑性能水平是否有保障、启动时间、可扩展的响应能力和延迟。对于不同的提供商,这些因素可能会有所不同,会影响到基础设施的响应能力。数据中心的位置会影响决策。提供商应该遵守数据隐私法和公司政策;服务器位置应该立足于这些考虑。在不同的国家和公司里,限制可能会有所不同。你可能会发现,你需要将所有的数据都置于同一个管辖区里(如欧洲)。对于其它情况,安全港原则(为了使美国的公司遵守欧洲的法律)就足够了。
了解每个提供商的 SLA 很重要。但是,由于几乎每个提供商都提供了足够高的服务水平(超过 99.95%),所以重要的是评估 SLA 无法达成时的问责机制。通常,这不会包含服务中断成本,因此,你的基础设施应该为此做好准备。
提供商
一旦定义了选择标准,你就可以比较提供商了。下面列出了一些最重要的提供商。
Amazon: AWS 一直是云计算领域的领导者,这得益于它在 2006 年成为第一家提供云服务的公司。
AWS 性价比较高。它的 pay-asyou-go 付费模式让用户不需要在缩放云容量时付出高昂的代价。它还提供了许多额外的 IaaS 服务和集成监控工具。这对于初创公司以及需要快速、廉价的处理能力和存储的敏捷项目而言特别有价值。
由于 AWS 是一家通用云服务提供商,所以用户可以独立运维,这对于正常操作而言非常便利,但出现问题时会变得危险。AWS 将全方位的技术支持作为一项高级特性,但大部分 AWS 竞争对手都将它作为一项标准特性提供。
Microsoft Azure: Azure 于 2010 年 2 月进入云 IaaS 市场。得益于在其它领域的市场地位,它市场份额很大,是个不错的候选。它提供与其它 IaaS 提供商类似的计算和存储服务,允许用户完全控制和管理虚拟机。此外,Azure 的用户界面简单易用,对 Windows 管理员而言尤其如此。不过,由于 Azure 的产品与 Amazon 或 Rackspace 的产品相比还比较新,所以许多特性还处于“预览”模式,在网络和安全上仍然有些差距。
Rackspace: Rackspace 是 OpenStack(稍后我们会描述)的创始公司,同时也是开源云 IaaS 的主要提供商。它的数据中心为超过一半的财富 500 强公司提供托管服务, 同时也极其注重为 SME(中小型企业)提供服务。Rackspace 提供了便宜、直观的云,并附带可选的托管服务和易于使用的、适合 SME 的控制面板。它还确保提供全方位的技术支持。不过,它的价格选项较少,只提供按月订购。另外,它不提供专用服务。
Google:虽然 Google AppEngine 是云计算领域的先行者,但它是一个 PaaS 模型,而在 IaaS 市场, Google Compute Engine 相对还比较新。虽然如此,谷歌的物理服务器数量和全球基础设施仍然使它成为一个不错的候选。而且,Google Compute Engine 很好地集成了谷歌的其它服务,如 Google Cloud SQL、Google Cloud Storage。
Google Compute Engine 非常适合大数据、数据仓库、高性能计算和其它侧重分析的应用程序。它的主要局限是没有集成管理特性。因此,用户必须自己下载额外的包。
HP:HP 是 IaaS 市场上一个相对较新的提供商;它在 2012 年 12 月推出了自己的服务。其公有云 HP Cloud Compute 基于 OpenStack 构建,提供了一系列云相关的产品和服务。鉴于其在服务器市场的地位,它是个不错的候选。HP 的 IaaS 产品支持公有、混合和私有云。对于希望将现有 IT 基础设施与公有云服务相集成并投资混合云的公司而言,HP Cloud Compute 是一个不错的解决方案。
IBM:IBM 的资源、规模和数据中心知识使它成为另一个值得考虑的提供商。 IBM Cloud 提供核心的计算和存储服务。它最适合于数据处理需求巨大并关心安全的大型企业。
IBM Cloud 为管理员很好地整合了管理、软件和安全特性。不过,其关注点限于中大型企业以及以 IBM 作为主要提供商的企业。
相关问题和注意事项
当考虑采用云架构时,重要的是要了解这项技术能够给你提供什么,以及在其中每一个新的基础设施中必须面对的主要问题。只有清楚地了解了其中每一种方式的业务和技术机会及局限,你才能选出最能满足你需要的方案。
除了从成本角度看经济优势外,主要的竞争优势是云架构为你的 IT 环境所带来的灵活性和速度。尤其是,这种架构可以提供更快的 IT 资源部署和访问速度以及细粒度的可扩展性。
最近的一项调查显示了入门级企业和经验丰富的企业在使用云时面临的问题 [4]。对于入门级用户而言,主要问题包括安全、多个云的管理、与现有系统的集成、治理及缺乏经验。经验丰富的公司所面临的问题有法规遵从性、成本、性能、多个云的管理和安全。
这种差别很容易理解。采用云架构的推进程度不同,问题也就不同。在早期,主要的问题是有关资源的专业知识和资源控制,因为公司没能获得与架构相关的足够知识和经验。对于更有经验的公司来说,性能和成本更重要,因为架构的局限性可能已经开始显现。
两组用户都必须面对安全、法规遵从性和多个云的管理问题。对于安全和法规遵从性,部分问题可能是由多租户架构所导致。在这些问题中,有一部分可能无法解决,这就可能使用户选择的天平偏向私有或混合云。考虑到管理多个云的问题,这样的决定似乎是合理的。
私有云和混合云
为了解决公有云的问题,云计算提供商推出了私有云。这种云可能位于组织的建筑物内、组织提供商的场地里或者在另一个提供商的数据中心中。通常,它将被虚拟化,但也可能有其它的组合。关键是,只有客户的组织可以操作它。因为所有的私有云产品都允许集成公有云,所以我们会在这里同时讨论私有云和混合云。表 2 展示了用于创建私有云的主要产品。
表 2:* 正如云现状报告 [4] 所描述的那样,严格来说,其中包含的部分解决方案并不满足云计算的要求。
Eucalyptus
Eucalyptus 于 2008 年发布了它的第一款产品。现在,该公司将其软件作为开源产品和服务提供。(近日,Eucalyptus 被 OpenStack 支持者 HP 收购。)从该公司的下载区,你可以在自己的计算机上安装一个私有云。从该公司的产品区,你可以为你的私有云订购服务器。
立足于同 Amazon 的合作伙伴关系,Eucalyptus 软件的主要优点是兼容 AWS(见表 3)。因此,AWS 提供的部分公有云特性也适用于 Eucalyptus 服务。
表 3
Eucalyptus 软件的缺点是 GUI 功能有限,以及 AWS 私有云策略的不确定性所带来的风险:AWS 提供了 Amazon 虚拟私有云和一个到硬件 VPN(虚拟私有网络)的连接。
OpenStack
OpenStack 是私有云领域另外一个主要的提供商。它也是开源的,其最大的优点是获得了 AT&T、AMD、思科、戴尔、惠普、IBM、英特尔、NEC、红帽、VMware 和雅虎等公司的支持。
OpenStack 非常复杂,有不同的组件和多个命令行接口。竞争者认为,它不是一款产品,而是一种技术。对于非技术公司而言,这可能是个障碍,但对于公有云和私有云提供商而言却并非如此,他们是 OpenStack 的主要用户。对他们来说,开源产品非常有吸引力,因为就像在服务器计算机中使用 Linux 一样,那对终端用户而言具有成本和可移植的优势。
可移植是 OpenStack 的另一项重要特性,因为终端用户不希望被特定的提供商锁定。不过,对于希望提供差异化专有特性的提供商而言,提供可移植选项可能是个问题。
CloudStack
Citrix 从 Cloud.com 收购了 CloudStack ,然后将其捐献给了 Apache 基金会,并让它在 Apache 孵化器中呆了一段时间后将其发布。不同于 OpenStack,CloudStack 提供了完整的 GUI 和一体式架构,简化了产品的安装和管理。与 OpenStack 的相同之处在于,大部分安装都由服务提供商完成。CloudStack 还通过 API 转换器兼容 AWS。
专有解决方案
Eucalyptus 兼容 Amazon Web Services(见表 3)。 VMware 和 Microsoft 也强调他们产品的混合性质。他们既有公有云产品,也有私有云产品,并且提供本地服务器。VMware 的产品包括 vCloud Hybrid Service、vCloud Connector 和 vSphere 虚拟化。微软有 Windows Azure、Windows Server 和 Microsoft System Center。由于他们有自己的产品,所以这两个提供商提供了一个更综合的解决方案,但缺点是缺乏可移植性。
公有云市场已经有几年的时间了,也有一些著名的提供商。但请记住,云计算市场正在成长,总会有新的参与者出现,公有云和私有云服务的领导者可能会变。
因此,在选择云计算模型和提供商的时候必须考虑表 1 和表 2 所罗列的因素、服务的特殊用途以及你希望将应用程序的哪些部分迁移到云上。你采用云的方法和所能取得的效果都受每一种情况所限。例如,如果你正在迁移一个尚未开发的应用程序或一个现有的遗留系统,那么应用程序架构和涉及的技术会有所差别。对于新的应用程序而言,你应该在开发时使用一种弹性架构,并遵循最佳实践,将展示层、业务层和逻辑层解耦到多个不同的服务中,并使用一个队列系统在它们之间通信。大量的服务器、容错设计以及自动化配置需要云提供商提供高级的技术特性。
对于一个完整的遗留系统,重构应用程序实现解耦并不可行。你不可能使用一个纯粹的云架构,而且需要缩短功能列表。虚拟实例的健壮性和可靠性是需要优先考虑的。
其它场景,如灾难恢复或使用云的需求高峰(云爆发),需要特殊的云技术特性。
如果你正面对一个新的应用程序,并且提供商独立性是一个优先事项,那么你可能会更喜欢一个 OpenStack 提供商。如果你正在迁移一个遗留系统,并且有 VMware 的 IT 经验,那么你可能会为你的云选择 VMware。而在一个微软服务器 IT 环境中,考虑到“云爆发(cloud bursting)”,你可能会选择微软的解决方案。不过,AWS,作为市场的领导者和经过验证的有着丰富特性的平台,永远是一个选项。
如你所见,由于存在多种选择,所以不同的客户可能会选择不同的平台。例如,HP 和 Rackspace(服务提供商)、Cybercom(咨询公司)和 eBay(终端用户)使用 OpenStack,而 VMware 和微软的客户则使用其提供商的解决方案。要了解一个公司(BuntPlanet)如何选择它的云提供商,请看后续报道。
参考资料
[1]M. Vouk. 云计算——问题、研究和实现.J. Computing and Information Technology,2008,16(4):235-246.
[2]P. Mell and T. Grance.NIST 云计算定义. 美国国家标准与技术研究所,2011.
[3]F. Fehling,F. Leymann,R. Retter.Your Coffee Shop Uses Cloud Computing.IEEE Internet Computing,2014,18(5):52-59.
[4]云现状报告.RightScale,2014.
[5]T. Rodrigues。顶级云IaaS 提供商比较.Enterprise Cloud,2013.8.27.
[6]供应商生态:云基础设施即服务.Info-Tech Research Group,2014.
[7]云基础设施即服务魔力象限.Gartner,2014.5.
关于作者
Nicolas Serrano是西班牙纳瓦拉大学的一名计算机科学与软件工程教授,他的邮箱是 nserrano@ tecnun.es。
Gorka Gallardo是西班牙纳瓦拉大学的一名信息系统教授,他的邮箱是 ggallardo@tecnun.es。
Josune Hernantes是西班牙纳瓦拉大学的一名计算机科学与软件工程教授,他的邮箱是 jhernantes@tecnun.es
评论