回顾我们最近的科技发展历程,可以清晰地看出,自从分布式计算及其相关技术(如网格计算和 SOA)被普遍采用以来,云计算运动已应运而生。虽然云计算已经成为一种新兴技术,但还有许多关于这一新技术的问题。本系列文章的第
1 部分将概括讨论云计算,然后剖析云的各个层次,介绍不同的云类型及其优缺点,并解释为什么云计算运动对企业开发人员非常重要。
什么是云计算?
这个问题看起来似乎是老生常谈并且很简单,但事实上却不是这样。目前,网上有数百(甚至数千)种云计算定义。要全面回答此问题,在尝试定义之前先了解什么不是云计算也许是更便捷的方法。
有些人说云计算只不过是一直在 Web 2.0 运动前沿的软件作为服务 (SaaS) 模型的另一种称谓。还有一些人说,云计算是一种市场宣传,只不过是老技术(如效用计算、虚拟化或网格计算)换了张新面孔。此观点忽略了这样一个事实,即云计算比这些特定技术中的任何一个的范围都要广。为了确保做到这一点,云解决方案通常包括这些技术(和其他一些技术),但是,它是一个综合性策略,可以将云计算与其前代产品区分开来。
对于本文而言,我们将云计算定义为是一个全面解决方案,在此解决方案中,所有的计算资源(硬件、软件、网络、存储等)均可根据命令指示快速提供给用户。可以管理所提供的资源或服务,以确保可用性、安全和质量等。这些解决方案的关键因素是它们能够扩展和收缩,使用户能够获取正好适合他们需求的资源:既不多也不少。
简而言之,云计算解决方案使 IT 能够作为服务提供。
为什么要使用云计算?
越来越多的公司转向包括云计算的 IT 解决方案的原因有许多。首先,云计算可以减少与提供 IT 服务相关的成本。通过仅在需要资源时获取资源并仅为所需的资源付费,可以减少资本和运营成本。此外,通过减轻整个企业中与管理各种资源相关的某些负担,您的关键人员可以将工作重点更多地放在创造价值和业务创新上。最后,云计算模型可提供业务灵活性。由于可以通过扩展或收缩整个
IT 基础结构来满足要求,所以公司可以更加轻松地满足快速改变的市场需求,确保能够让其客户处于领先地位。
在许多方法中,云计算实现了将许多现有技术(SOA、虚拟化、自动计算)与新思想相结合,从而制定完整的 IT
解决方案。
有了可接受的云计算定义支持,现在我们看一下云的各个层。图 1 概括了云模型的三种规则组件。该图精确地反映了
IT 数量与成本、物理空间要求、维护、管理、管理监督和陈旧化相关的比例。另外,这些层不但可以表示云剖析,而且还表示一般的
IT 剖析。
图 1. 云剖析
构成云的各层包括:
- 应用程序服务
日常 Web 用户可能最熟悉该层。该应用程序服务层驻留着适合 SaaS 模型的应用程序。它们是一些运行在云中的应用程序,并按需求作为服务提供给用户。有时这些服务是免费的,提供商从网络广告之类的项目中生成收入,有时应用程序提供商直接从使用服务中创造收入。是不是听起来有些耳熟?可能如此,因为我们大家几乎都用过它们。如果您用
Turbo Tax 在线报过税,用 GMail 或 Yahoo Mail 查阅过您的邮件,或者用
Google Calendar 安排过约会,则一定熟悉云的顶层。它们只是这些类型的应用程序中的两个示例。从实际记录上看有数千种
SaaS 应用程序,使用 Web 2.0 技术后,该数量还在日益增长。
也许公众并不完全知道这些应用程序,这是因为应用程序服务层中的许多应用程序都直接面向企业团体。有这样一些托管的软件产品:处理工资单流程、人力资源管理、协作、客户关系管理、业务合作伙伴关系管理等。这些产品的常见示例包括:IBM®
Lotus® Live、IBM Lotus Sametime®、Unyte、Salesforce.com、Sugar
CRM 和 WebEx。
在这两个用例中,通过 SaaS 模型提供的应用程序都可以让使用者受益,他们不必安装和维护软件,并且这些应用程序可以通过支持使用付费概念的许可证模型来使用。
- 平台服务
这是一个我们可以将应用程序基础结构视为一套服务的层。这包括但不仅限于中间件作为服务、消息传递作为服务、集成作为服务、信息作为服务、连接性作为服务等。此处的服务主要是为了支持应用程序。这些应用程序可以运行在云中,并且可以运行在更加传统的企业数据中心中。为了实现云内所需的可扩展性,此处提供的不同服务经常被虚拟化。本部分中关于云的产品示例包括
IBM® WebSphere® Application Server 虚拟映像、Amazon
Web Services、Boomi、Cast Iron 和 Google App Engine。平台服务可让使用者能够确保基于需求提供应用程序基础结构,并配备满足用户需求的应用程序。
- 基础结构服务
云的底层是基础结构服务层。这里,我们看到的是一套物理资产,如服务器、网络设备,以及作为供给服务提供给使用者的存储磁盘。此处的服务支持应用程序基础结构(与该基础结构是否通过云提供无关)和更多的使用者。对于平台服务,虚拟化是提供按需分配资源的常用方法。基础结构服务的示例包括:IBM
BlueHouse、VMWare、Amazon EC2、Microsoft Azure Platform、Sun
ParaScale Cloud Storage 等。
基础结构服务主要通过按需分配计算能力来解决正确配备数据中心这一问题。此外,由于此层一般利用虚拟化技术,因此可以实现由更加高效的资源利用率带来的成本节约。
现在您已经了解了什么是云计算,哪些内容构成云计算解决方案,下面让我们看一下云的三大主要类型。对于本文而言,我们将介绍几个与云计算的企业使用者相关的类型(图
2):
图 2. 云类型
- 公共云是由第三方(供应商)提供的云服务。它们在公司防火墙之外,由云提供商完全承载和管理。
公共云尝试为使用者提供无后顾之忧的 IT 元素。无论是软件、应用程序基础结构,还是物理基础结构,云提供商都负责安装、管理、供给和维护。客户只要为其使用的资源付费即可,根本不存在利用率低这一问题。
但是,这要付出一些代价。这些服务通常根据“配置惯例”提供,即根据适应最常见使用的情形这一思想提供。如果资源由使用者直接控制,则配置选项一般是这些资源的一个较小子集。另一件需要记住的事情是,由于使用者几乎无法控制基础结构,需要严格安全性和法规遵从性的流程并不总能很好地适合于公共云。
- 私有云是在企业内提供的云服务。这些云在公司防火墙之内,由企业管理。
私有云可提供公共云所提供的许多好处,一个主要不同点是:企业负责设置和维护云。建立内部云的困难和成本有时难以承担,且内部云的持续运营成本可能会超出使用公共云的成本。
私有云确实可提供超过公共云的优势。对构成云的各种资源的较细粒度控制可为公司提供所有的全部配置选项。此外,由于安全性和法规问题,当要执行的工作类型对公共云不实用时,用私有云比较合适。
- 混合云是公共云和私有云的混合。这些云一般由企业创建,而管理职责由企业和公共云提供商分担。混合云利用既在公共空间又在私有空间中的服务。
当公司需要使用既是公共云又是私有云的服务时,选择混合云比较合适。从这个意义上说,公司可以列出服务目标和需要,然后相应地从公共或私有云中获取。结构完好的混合云可以为安全、至关重要的流程(如接收客户支付)以及辅助业务流程(如员工工资单流程)提供服务。
该云的主要缺陷是很难有效创建和管理此类解决方案。必须获取来自不同源的服务并且必须像源自单一位置那样进行供给,并且私有和公共组件之间的交互会使实施更加复杂。由于这是云计算中一个相对新颖的体系结构概念,因此有关此模式的最佳实践和工具将继续出现,但是在对其进行更多了解之前,一般都不太愿意采用此模型。
云计算的前代产品是一些为数众多且广为人知的技术。它们有效用计算、网格计算、虚拟化、管理程序和大量其他计算。云计算不是总能(但实际上应该)谈到的一种技术概念是
SOA。面向服务的体系结构在云计算发展到今天这种情况方面起了一定的作用,同时它还应该在云计算发展方面发挥着举足轻重的作用。
在许多方面,云计算可被视为 SOA 后应用程序的扩展,并且已进入了应用程序和物理基础结构。由于企业和云提供商在寻求提供云解决方案,其基本目标就是将企业
IT 基础结构作为一种服务来提供。还应该总结集成和将企业应用程序作为离散服务所得到的经验教训,因为基础结构层也作为服务来组织和提供。该应用程序和物理基础结构(非常类似于
SOA 中的应用程序)必须是可发现、可管理和可支配的。在理想情况下(非常类似于 SOA),规定如何发现、使用、管理和支配服务的开放标准将不断发展。这些标准将概括云解决方案的整个生命周期。
图 3 记录了三层云方法的观点,并显示了其中的每个层如何从根本上向整个 SOA 提供服务。在某些情况下,两个底层的服务作为
SOA 的一部分提供,但是,重要的是认识该云所有层基于服务的方法。
图 3. 云服务
如果您是一名软件开发人员或测试人员,可能会认为所有这些听起来很不错,但是不太确定这是否与您有关。毕竟,这是针对管理人员的,不是吗?这是常见的第一个观点,但是没有考虑到云计算可以为开发和测试团队带来的明显优势。
例如,在测试和开发方面的最大障碍是能否获取、部署、配置和承载在其中执行开发单元测试、原型设计和完整产品测试的环境。云计算解决方案可用来快速创建和承载此类环境,从而减轻测试和开发团队的负担,将问题放在云领域中。对于开发团队来说,这意味着诸如持续不断的代码集成和原型设计工作将变得更加便于执行,因为对产品更新和新代码的测试相对来说比较轻松。对于测试团队来说,可以将更多的时间用于测试产品质量,用较少的时间来支持测试。
除了为开发团队提供运行时环境外,还有另外一个直接面向开发人员的云领域。工具作为服务是 SaaS 的子集,是可以在云中提供开发工具的思想。IDE
和简单代码编辑器将成为开发人员使用 Internet 连接访问的承载软件。这样,开发人员就不必在其所有的每台计算机上都持有本地
IDE 和相应的许可证。作为一名开发人员,您可能知道能够从任何计算机上随时访问一般开发环境的潜在价值。
云计算对开发人员还有另外一种影响。如果条件成熟,要不失时机地倡导开发人员采用标准编程模型 API。所有开发人员都力争成为模型编程员,因而恪守标准,但是多数人可能会时不时地偏离标准。偏离标准也许是因为专有的
API 为您提供了诸如性能之类的切实好处;而在其他情况下,或许您只想“追求实用”。在云中,与标准 API
的任何偏离都特别危险,而其原因也相当明了。尽管使用者知道他们从云提供商那里获得所请求的服务,但他们可能不知道该服务的实现细节。
例如,假定从一个云提供商那里请求 J2EE™ 应用服务器服务。该云提供商提供应用服务器服务,但您可能完全不知道接收供应商的哪个服务器,除非您与该提供商签署了具体的协议。您选择部署到提供的服务器的任何应用程序都不应受到特定于供应商代码的限制,因为您最终可能会遇到始料未及的应用服务器实现。
上面提到的云计算中的主要组件是工具。在许多方面,这对云计算解决方案的成功至关重要。在市场上有一种提供云解决方案的重要技术,但是,这些技术往往因缺少完整、可理解的工具而难以付诸实施。
考虑云中的应用程序服务层。此层中的工具可以提供一个可帮助云应用程序开发的环境,并且应该提供打包和将应用程序部署到云基础结构中的方法。我们知道,已经有许多符合所述要求的此类工具,但问题是,这些工具几乎都与云提供商的基础结构联系在一起。开放标准是从此工具中获得最大功能和灵活性的关键。每当开发人员改变云基础结构时,他们无法支付学习新工具导致的成本;另外,开发团队也不会不断地支付因转换云基础结构而导致重写应用程序的成本。因此,该工具必须以能使完成的项目跨多个云基础结构移植的方式帮助应用程序开发、打包和部署。
工具在基础结构服务层中也担当着非常重要的角色。为云构建基础结构并不是一个无足轻重的流程。对于云提供商来说,所有的物理资产,无论该提供商是内部还是外部的都需要考虑,以便将正确的物理资源分配给云。此空间中的工具应该帮助公司虚拟化其
IT 资产,以便为该云考虑到所有资源。但是,仅向云构建者提供资产虚拟化还不够。此空间中的工具还应为创建云提供某些智能。过去,IT
管理员的一项艰苦工作就是尝试将预期的要求与物理资源进行匹配。这已带来了资源利用不足的问题,此问题成了云的有力催化剂。工具必须基于期望的系统需求特征指导用户完成云的物理组成。
在目前和可预知的未来,云计算将在技术行业中扮演非常重要的角色。最终,它会将 IT 作为服务提供给使用者。云计算空间中产品和服务的数量将持续增长,而且这也是大势所趋。我们非常高兴云计算给我们的
WebSphere 开发人员带来的机会,在后续的文章中,我们将讨论这些机会是什么,并了解一些将云计算从概念转化为企业利润回报的
WebSphere 解决方案。
学习
讨论
|