何时应当考虑私有云?
为单一公司运行私有云(无论是托管的还是本地部署的),这一理念正在迅速变得司空见惯。越来越多的企业开始了解云计算,并认识到运行自己的云平台不仅可行,而且可能对业务具有潜在价值。但由于普遍缺乏对云的了解,如今越来越常见的情况是:在云完全不符合企业需求时,云方案却被推荐出来,反而被误认为是传统的虚拟化管理系统。
云是一种特殊类型的虚拟化平台,填补着一个独特的细分领域。云计算将传统虚拟化与自动化的扩展和供应叠加在一起,使应用程序能够快速地横向扩展。这并不是一种常见的业务需求。云还适于(并且常常与之绑定)资源供应的自助服务,但仅凭这一点并不能使某事物成为云,也不足以证明转向云平台的合理性,不过它可以成为一项额外的激励因素。云之所以引人入胜,在于它能够向最终用户提供自助服务门户,以及应用程序能够自我供应的能力。正是这些关键方面,将云平台与传统虚拟化区分开来。
云并不意味着诸如以下这些特性:通过单一管理界面对整个域进行简化的系统管理、大规模整合、在硬件系统之间轻松迁移、快速供应新系统、虚拟化、高可用性、资源超额分配等等。这些特性都可以通过其他方式获得,主要是通过标准平台虚拟化(VMware vSphere、Microsoft 的 HyperV、Xen 等)或在其之上实现。并不是说这些特性无法在私有云中提供,而是这些特性并非云本身的方面,而是底层虚拟化平台的方面。云这一层位于这些之上,只是将底层各层的优势传递出来。
人们之所以常常考虑云,往往是因为一种误解,即认为许多通常与私有云相关联的特性无法以其他更简单的形式获得。但事实很少如此。普通的虚拟化平台,最常见的是 VMware 的 vSphere 和 Microsoft 的 HyperV,提供了所有这些选项。它们可以用来构建由物理服务器组成的稳健集群,通过单一界面进行管理,具有极高的可靠性,并能快速供应新系统,而这些只需 IT 部门具备最少的专业知识,并能保持传统的业务工作流程。大多数情况下,当我与那些认为自己可能有兴趣拥有自己的云的企业交谈时,他们真正想要的特性根本就不是云的特性。
“云”这个词近来变得如此流行,以至于人们开始假定,几乎对每个人都重要的特性必定要归功于它,以此来解释其重要性的突然激增,但事实根本并非如此。云仍然是、并且将继续是一种主要面向细分市场的解决方案,只适合极少数公司自行拥有。使用公有云,或使用由云平台交付的托管服务,将会变得(实际上已经变得)几乎无处不在。但为单一公司使用而拥有私有云,距离成为大多数企业或业务单元的业务需求还相去甚远,而且在许多情况下,我猜想,永远都不会成为这样的需求。
私有云在两个关键领域大放异彩。第一个是那些需要定期“启动”大量临时或临时性(ad hoc)系统的企业。这种情况常常出现在大型开发团队和应用测试小组中,尤其是当这些小组要面向多种操作系统时。能够快速供应临时测试系统或实验系统会非常有利,而云计算天然能够轻松地暴露供应工具,让业务客户能够创建、管理和销毁自己的系统实例——并且,我们可以预期,配有内置的费用回收机制——这对企业效率非常有益,因为对于这类事务,IT 部门与最终用户之间的互动变得几乎毫无摩擦。维护整个云的职责可以轻松地与维护单个系统的职责分离开来。这种方式很少用于生产工作负载,它允许一种自助服务的方式,而这正是当今许多业务单元迫切寻求的。由于创建和维护云平台本身的开销,这在小规模下并不实际,但在大规模下则可以极具生产力。除了技术优势之外,云计算的这一方面还可以作为一种范式,促使人们将 IT 视为内部服务提供商,将各部门视为客户。我们早就用这些术语来讨论 IT 和其他业务单元,但我们很少真正以这种方式来看待它们。
云计算真正发挥其优势的第二个领域,也是这一概念最初被开发出来所针对的领域,就是为横向扩展的应用程序处理自动供应。也就是说,那些能够通过为自身生成新实例来提升其容量处理能力的应用工作负载。在小规模下,许多 Web 应用由于其无状态的特性,会在单个系统内通过生成新的线程工作单元来处理额外的连接,从而做到这一点。一个 Apache Web 服务器可能一开始有八个监听器准备处理请求,但随着这些线程被耗尽,它会自动启动新线程来处理额外的传入连接,从而能够在单台服务器的范围内进行扩展。将这一概念加以延伸并应用于云计算:同样的应用程序在系统层面感知到线程即将耗尽时(或基于其他指标,例如缺乏空闲内存或性能下降),会使用云计算平台暴露出来的 API,向云管理系统发出信号,去供应一份调用它的那个系统的新副本——本质上就是即时地克隆自身。在几秒钟内,一台与第一台完全相同的新虚拟服务器便会启动并运行,加入其父系统一起处理传入的请求。这个子系统或克隆系统同样会根据需要在内部生成新线程,然后如果它也感知到耗尽,便会调用云平台去创建又一台新系统,以处理更多的线程。通过这种方式,应用程序可以根据需要即时、自动地几乎无限地自我增长(在整个云平台的硬件限制之内)。然后,随着单个系统变为空闲、工作负载减弱,系统可以逐一向云管理系统发出信号,表明自己不再被需要,于是该系统将被关闭并销毁,因为它只是一个无状态的克隆体,从而释放系统容量,供其他可能需要利用这些空闲容量的应用程序和工作负载使用。
正如我们所见,云计算极其强大,尤其是当今绝大多数公有和企业应用都以无状态的方式编写,以便利用 Web 协议和最终用户界面。Web 应用尤其擅长利用云计算的可扩展性模型,如今大多数大规模 Web 应用都在利用这种容量的弹性扩张与收缩。许多新兴的 NoSQL 模型正在涌现,这预示着除了应用前端处理节点之外,数据库不久也可能在大规模上从类似的模型中受益。这当然既可以用于面向公众的应用,也可以用于内部应用,然而内部应用很少需要扩展到单个系统之外,因此以这种方式利用私有云的情况相当罕见。
围绕云计算的危险,体现为在普通虚拟化之上的额外复杂性。支持该平台可能需要复杂的存储,并且要学习和维护更多的层次。云计算快速创建和销毁系统的能力,可能会诱使用户试图把云资源当作持久系统来使用——它们确实可以被配置成那样——但这可能导致数据丢失,因为用户所遇到的行为与传统和预期的大相径庭。云方面最大的隐患或许是一个与人有关的问题,那就是经历不受控制的系统蔓延的可能性增大:最终用户疯狂地启动越来越多的新系统,而这些系统由于是由最终用户而非 IT 创建的,很可能没有受到严格的控制和监控,从而使系统处于一种擅自存在、且常被遗忘的状态。这可能导致维护和安全方面的噩梦,因为系统得不到修补和照管,增加了风险并消耗了资源。而最令人担忧的是,系统可能被创建后遭到遗忘,并且有可能在缺乏适当许可的情况下存在。对自动供应的系统进行跟踪和报告,会带来由系统创建方式的巨大转变所引发的流程风险。IT 部门习惯于为维持合规性所必需的繁重许可流程,但在云计算中,这一流程有可能以一种业务单元根本无力应对的方式暴露给它们。针对云计算的许可需求是有相应安排的,但这是必须加以处理的额外复杂性和管理工作。允许系统在没有 IT 部门直接监督的情况下存在,显然带有一种可能难以预见的风险。
拥有私有云带来了许多令人兴奋的可能性,但显而易见,这些益处和机遇并非适合所有人。它们迎合的是较大型的企业,是那些具备良好流程控制的企业,是那些运行经过特别改造、能够利用资源系统级弹性的应用程序的公司,以及那些需要以服务形式提供大规模临时性(ad hoc)系统创建与销毁、供最终用户自助供应的企业。大多数大型企业会发现云计算在内部的用途有限。在不久的将来,较小型的组织很少会发现云计算具有优势,甚至可能永远都不会。