第2章 迁移到云
T. S. MOHAN
2.1 引言
云计算的承诺使得中小型企业对IT有着无可估量的期望,大公司对其争论不休。云计算是IT的一种突破性模式,其创新在于部分技术和部分商业模式,简言之,就是IT的“突破性技术商业化模式”。这一导引章节主要关注一些决策者、架构师和系统管理人员在应对他们的IT需求、试图理解和利用云计算时所面对的关键问题和相关的困境。在本章中提及和讨论的问题包括何时以及如何将一个应用迁移到云中;IT应用的哪一部分或者组件迁移到云中,哪一部分不迁移到云中;哪一类客户把他们的IT迁移到云中将会真正受益等一系列问题。本书描述了上述问题的关键深层因素,并分享了迁移到云的七步实施模式。
云计算现在已经是一个热门话题,业界和学术界的IT专业人士都在讨论和辩论。在一些博客(blog)、Web站点以及某些研究成果[1~4]中对云计算均有激励的讨论。在面对无数的问题、挑战、利益、限制以及对云计算能做什么缺乏全面了解的情况下,也促进了一些企业合力创业,帮助他们充分利用并迁移到云中。另一方面,一些大型的云计算IT供应商(如Google、Amazon和Microsoft)已开始提供云计算服务。尽管没有明确提及,这似乎像一个示范和试点。他们收取用户费用,在某些情况下还表现出了非常有吸引力的定价模式。它表明,云计算本身是真实的,“突破性技术商业化模式”比传统的IT企业投资确实具有更大的投资回报率(Return on Investment,ROI)。另一方面,这些初始的云计算产品是超前的。云计算服务供应商抓住了分布式系统以及商业模式的实质问题,他们的一些开放型工程和研究问题[2]以多种方式表明云计算服务尚未完全成熟。
最近许多人已经作了一些工作来定义“云计算”一词,但他们并未提供一个全面的解释[2,5,6]。技术进步的步伐以及云服务所提供的新型商业模式个案实例更具挑战性。本书对云计算提出如下定义:“它是一种突破性技术商业化模式,使用分布式大型数据中心(它们可以是公共的、私有的或者混合的)为客户提供可扩展的虚拟化基础设施或一系列符合服务水平协议(SLA)标准的抽象服务,仅对已使用的抽象IT资源收费。”现在大多数企业均由专用数据中心支配。如今,在大多数大型或者小型企业内,IT是其业务骨干。这些大型企业的数据中心分布在各个地区。这些数据中心包括系统和软件,它们是由不同IT厂商销售的多代产品。为了满足不断变化的负载,大部分数据中心都配备了超出峰值负载的设备。如果企业处于季节性或周期性业务,那么负载会显著变化。因此,通常观察到的IT资源配置能力是平均需求的几倍。这是闲置生产能力的重要指标。许多数据中心管理团队在实践中不断创新,并部署有可能筛选掉最近通过适当的编程、系统配置、SLA和系统管理的可用循环计算资源技术。云计算对他们有吸引力,因为云计算可以从他们的IT设置到云中传递额外需求,这只需支付使用的费用,对负载的操作和管理则是畅通无阻的。
2.1.1 云的承诺
对于一些大型数据中心提供云计算服务的大多数用户而言,他们对最底层系统和其运作的复杂性感到极度困扰。更不用说异构性系统或者在其上运行的软件了。他们对抽象云计算服务最为深刻的印象是其简单性、统一性和易用性。在中小型企业中,所有额外周期性IT需求的云计算的使用已经取得了重大和显著的经济节约。许多这样的成功故事已记录在案并在Internet上讨论。在云计算服务时考虑经济学和相关取舍,俗称“云计算经济学”(cloudonomics)。在IT管理人员和技术架构师之间,它成为满足企业的季节性IT负载让人深感兴趣的话题。
如图2.1所示,云业务方面(有吸引力的云计算经济学)和技术方面的承诺广泛资助CxO形成几个非关键任务(non-mission critical)的IT需求,其范围从他们传统的专用数据中心到适当的云服务。这些IT需求总有一些共同特点:它们通常是面向Web的、代表了IT的季节性需求、采用并行批处理、属于非关键任务,因此对高安全性要求不高。它们还包括科学应用[7]。不过,一些中小型商业企业利用云已不局限于谨慎的用户上的情况。许多创业公司允许它们的IT部门完全使用云服务——这是非常成功的,并取得了高投资回报率。纵观这些成就,一些大型企业已开始成功开展云的试点。许多大型企业运行SAP管理它们的运营。SAP本身也在试用其产品套件:Amazon云产品上的SAP Business One以及SAP Netweaver。Gartner、Forrester公司与其他行业研究分析师预测:到2012年世界顶级企业将其IT需求迁移到云产品的比例会显著大幅上升。事实上,云承诺有着显著的影响。
2.1.2 云服务产品和部署模式
其于云计算的易用性,它现已成为企业内CFO和CTO重点关注的方案。主要是由于大型数据中心服务供应商的经营规模,而且它们已经实现了这一点。大型数据中心服务供应商现在称为云服务供应商。除了开源的Hadoop围绕Apache生态系统构建以外,Google、Amazon、Microsoft和其他一些厂家也是主力成员。
如图2.2所示,这些厂商的云服务产品大致可以分为三大流派:基础设施即服务(IaaS)、平台即服务(PaaS)与软件即服务(SaaS)。对众多的虚拟化IT需求而言,尽管IT经理和系统管理员更喜欢Amazon提供的IaaS,不过程序员则更喜欢Google AppEngine (Java/Python编程)或Microsoft Azure (.NET编程)等PaaS产品。大型企业里的软件用户不约而同地发现,他们一直在使用云,这是因为他们使用了特定的软件包提供的服务,在本质上,这项服务是一个SaaS产品。Salesforce.com是Internet上SaaS产品的一个典范。
从技术的角度看,现在IaaS类型的云产品最为成功,使用也最广泛。不过,PaaS的潜力一直居高不下:所有新的面向云的应用开发计划都是以PaaS模式为基础的。企业利用IaaS和PaaS的显著影响,以服务的形式在云上代表SaaS使用。无论是搜索(Google、Yahoo、Bing等)还是email(Gmail、Yahoomail、Hotmail等)或社交网络(Facebook、Twitter、Orkut等),大多数用户并没有意识到他们的多数在线活动是由云以某种形式或者其他形式来支持的。
云应用部署和消费可分为三层模式:来自云厂商的公共云产品、大型企业内部的私有云计划(private cloud initiative)以及利用公共云与私有云或者管理数据中心服务的混合云计划(hybrid cloud initiative)。面向服务的IaaS提供了抽象(或虚拟化和可扩展)的硬件,如计算能力、存储或带宽。例如,从2009年Amazon的关税定价网页上可以看出,它提供了六个层次的抽象弹性云计算(Elastic Cloud Compute,EC2)服务器能力:“小型实例”、“大型实例”、“超大型实例”、“超强CPU型实例”、“超强CPU基本型实例”以及“超强CPU超大型实例”。这些都表现在适当的内存、存储、性能保证和带宽支持上。PaaS产品侧重于对编程平台的支持,其运行时隐式地使用各个供应商提供的云服务。到目前为止,这些供应商高度锁定,许多创新公司已经利用PaaS技术开发出新的应用。由于编程平台的内在云支持,与IaaS产品相比,以PaaS为基础的应用程序提供更好的性能。云产品的SaaS侧重利用云计算的优势支持大型软件包的使用。这些软件包的大多数用户都不约而同地忽略了底层云的支持。其实,就算不是全部,绝大部分人也不关心它。事实上,软件包功能的有效程度无不体现在云计算平台的深入(under the hood)支持上。例如,在gmail中,用户很难理会占用的存储空间,或者是否需要删除email或者它的存储位置。这些无不反映了潜在的云,其中存储(大多数不知道它在哪个系统上)易于扩展,或者就此而言,它存储在何处或者位于何处。
2.1.3 云的挑战
尽管云服务产品展现在IaaS情况下是简单IT观念模式,或者PaaS情况下是简单编程观念模式、SaaS情况下是资源使用的简单观念模式,但是底层系统面临的挑战仍然是巨大的、复杂的。尽管底层系统非常容易出现故障、异构、资源占用,并表现出严重的安全缺陷,但这些源于需求的主干为计算提供了一致相合和有力的简单观念。如图2.3所示,云的承诺与大多数人更喜欢的典型分布式系统的属性非常相似。无论在IaaS、PaaS或者SaaS云服务中,总有一个特别功能——全网可靠性,或者“即时”网络或“零”网络延迟,或者可能支持“无限”带宽等。不过,在设计、实现和部署时,必须刻意避免这些设备(fallacies)构建在健壮的分布式系统上。在确保切实管理好底层系统的同时,云计算已预测其服务理想化的观点。事实上,在实施云计算服务时面临着很多挑战,如图2.3所示。
其中面临的首要挑战便是安全性。云安全联盟(Cloud Security Alliance,CSA)旨在解决这些问题[8]。