内容


现实中的开放源码云计算,第 1 部分

并不是所有云都相同

在各种平台中做出选择

Comments

系列内容:

此内容是该系列 # 部分中的第 # 部分: 现实中的开放源码云计算,第 1 部分

敬请期待该系列的后续内容。

此内容是该系列的一部分:现实中的开放源码云计算,第 1 部分

敬请期待该系列的后续内容。

关于本系列

在这个分三部分的 “真实的开放源码云计算” 系列中,学习如何判断云计算是否对您有帮助以及如何制定云计算战略。在第 1 部分中,了解云计算的益处、云的类型和可供选择的云计算平台。后续文章将讨论如何针对云进行设计和开发,以及如何在云中管理应用程序。

云计算:仅仅是营销口号吗?

如果您从事技术工作,就可能听到过这样的疑问:“云计算有什么我们以前没有听到过的新东西吗?云计算是否只是一个营销口号?” — 它是能够解决所有问题的银弹吗?或者更好?答案是肯定的。无法否认,围绕云计算确实有宣传泡沫。但是,许多厂商正在努力实现承诺。云计算确实有非常切实的益处。本文讨论几个可供选择的云计算平台,但是覆盖的范围并不全面。

在采用云计算之前,应该注意云计算的一些特点。在本文中,了解云计算的益处和挑战。

关于云计算

云的类型

Wikipedia 把云计算定义为 “基于 Internet 开发和使用计算机的技术”。这个定义非常宽泛,许多产品都可以归类为云计算。相当一部分云产品是 Software as a Service (SaaS) 的变体。SaaS 的例子包括:Zoho(文字处理、电子表格)、Salesforce (CRM)、SlideRocket(展示)等 Web 应用程序;Google Search、Yahoo! Weather 或 PayPal 等 Web 服务。这些都是云计算的好例子,但是对于打算使用云计算的企业可能没什么用。但是,它们可以对其他类型的云计算起补充作用。

我们希望找到的云计算类型是一种称为 Platform as a Service (PaaS) 的基础结构。最常见的 PaaS 例子是各种类型的云数据存储,比如用于存储非结构化数据的 Amazon 的 Simple Storage Service (S3) 或 IBM 的 Scale out File Service (SOFS)。它们都是分布式文件系统。可以通过 Web 服务接口访问 S3,可以通过 NFS 和 FTP 等文件协议访问 SOFS。Amazon 还通过 SimpleDB 服务提供结构化数据存储。SimpleDB 支持通过 Web 服务接口保存和查询结构化数据。

计算肯定不仅仅涉及存储,因此需要云计算平台。云计算平台允许在其中放置和执行代码。它们肯定可以与云存储和云 Web 服务组合在一起。有许多可用的平台,它们具有不同的优点和缺点。

益处

为什么要在云平台而不是自己的计算机上运行代码?有几个简单但切实的原因。通过使用云平台,就不需要购买和设置所有计算机。如果云计算只有这一个特点,它就与托管服务没有区别了。云计算的主要优点是能够快速地打开或关闭应用程序,或者根据需要灵活地增减计算能力。任何云计算平台都能够根据需要无缝地提供更多计算资源。一些平台还在随需计算的基础上提供通用的开发平台。

总之,云计算让组织能够快速部署应用程序并根据业务需求扩展它们。这听起来很不错,但是云计算也有一些需要注意的挑战。

挑战

人们很容易只注意云计算的益处,但是它有一个缺点:云计算最显著的问题之一是,应用程序使用的数据与应用程序一起放在云中。数据可能是敏感的,比如能够识别出客户的个人信息或他们的财务情况和交易记录。还可能有非敏感数据,这些数据也非常有价值,比如关于用户的汇总信息以及他们使用应用程序的方式。由于把重要的信息存储在云中,所以必须了解平台是否安全。

“谁访问云中的数据” 并不是要担心的惟一问题。数据的完整性同样重要。计算机难免会出现故障,所以必须能够备份数据并在发生故障时恢复。平台是否提供数据备份和恢复(至少是为需要的用户提供)?应用程序的可靠性显然是非常重要的。平台提供哪些种类的服务水平协议?本文讨论一些可用平台在这些方面的特点和其他重要问题。

平台

目前有许多可供选择的云计算平台。本文讨论的平台并不全面,但是涉及比较流行的平台以及它们之间的基本差异。我们会特别关注每种平台上支持的编程语言和开放源码技术,以及每种平台如何解决云计算的问题。为了帮助讨论这么多平台,把它们粗略地分为基本平台和专门平台两类。

基本平台 只提供最基本的功能 — 只有(虚拟)硬件,还可能有操作系统。它们的限制比较少,所以往往更灵活。

专门平台 在基本平台上提供某种编程环境和服务。专门平台通常比较简单,常常提供某些独特的服务。

基本平台

如果希望以最灵活的方式配置云中的系统,就需要基本平台。可以指定一些与硬件相关的规格,比如处理器类型、处理器速度、特定的内存量等等。然后,就可以自由地创建自己需要的任何系统。它与托管服务非常相似,但是能够根据需求快速地增减容量。本节讨论 Amazon、IBM、Joyent 和 Mosso 提供的四种基本平台。

Amazon Elastic Compute Cloud

Amazon 的 Elastic Compute Cloud (EC2) 是最早的云计算平台之一,也是最流行的平台之一。俗话说,“跟着 Amazon 走,就是跟着潮流走。” EC2 是基本平台的好例子。

要想使用 EC2,需要一个 Amazon Machine Instance (AMI)。AMI 是完整的机器映像,包含操作系统、应用程序等等。Amazon 和 EC2 社区提供许多常用的 AMI,包含 Microsoft Windows® 或 Linux® 操作系统以及各种开放源码软件套件,比如 Apache Web 服务器、MySQL 和 Python 解释器。如果找不到适合自己需要的 AMI,还可以使用 Amazon 提供的工具创建自己的 AMI,这些 AMI 可以只由自己使用,也可以与社区共享。

AMI 可以部署到各种规模的 “实例” 上。到编写本文时,小实例具有一个 1 GHz 核、1.7 GB 内存和 160 GB 磁盘空间。极大型实例具有四个 2 GHz 核、15 GB 内存和 1.6 TB 磁盘空间。还有专门为计算密集型任务设计的特殊规模。您只需选择适合自己需要的规模并部署 AMI。对实例的所有管理和控制都通过 Web 服务进行。围绕这些 Web 服务已经开发出许多软件,可以很方便地管理 EC2 实例。例如,可以使用 Firefox 扩展 Elasticfox 在 Firefox 中直接管理和启动 AMI。

EC2 采用开放源码的 Xen 虚拟化软件。通过使用 EC2,实际上可以运行任何类型的软件。通常使用各种风格的 Linux 作为 AMI 的操作系统。可以使用任何编程语言:Java™ 编程语言、PHP、Python 等。可以在 EC2 上使用专有软件,但是 EC2 的弹性使开放源码软件非常有吸引力。在使用更大或更多实例时,不需要考虑许可证问题。

除了 EC2,Amazon 还提供许多基础结构服务,可以使用它们解决数据可靠性和备份等问题。Amazon 的 S3 服务是一种非常适合备份数据的服务。它采用自助模型。对 Amazon 云的管理和访问只通过 Web 服务进行,需要两因素身份验证。

IBM Blue Cloud

当 Amazon 率先进入云计算领域时,许多人感到吃惊。但是,当 IBM 进入这个领域时,没有人感到吃惊。Blue Cloud 于 2008 年晚些时候公布,这个项目承诺提供云计算的所有基本功能。客户可以选择比较普通的 x86 硬件或基于 POWER® 的高端硬件。Blue Cloud 使用 IBM 的 Tivoli® 软件向系统自动地供应各种资源(CPU/RAM/磁盘),这让客户能够获得强大的计算能力,但是只根据需要量付费。IBM 还倡导 “私有” 云,这让防火墙后面的内部应用程序也能够受益于云计算。

IBM 的 Blue Cloud 是一种正在发展的技术,所以您应该查阅关于它支持的技术类型的最新信息。IBM 是最大的开放源码技术支持者之一,因此对于大量使用开放源码技术的应用程序,使用 IBM 的平台是很有吸引力的。

Joyent Accelerator

Joyent 可能不像 Amazon 或 IBM 那么有名气,但是作为为基于 Web 的创业公司提供云计算平台的提供商,它已经赢得了良好的声誉。Joyent Accelerator 提供传统托管服务提供商的许多灵活性,同时提供云计算的关键特性 —— 随需计算。通过使用 Joyent Accelerator,可以快速地启动实例,其中包含预先配置好的 PHP、Java 语言或 Ruby on Rails。您可以选择需要多少计算能力。所有软件都在 OpenSolaris 上运行,所以可以使用常用工具(比如 SSH 和 FTP)访问和管理在其中部署的资产。

Joyent 的云计算在设计时就考虑到了可伸缩性。它最实惠的产品也设计为能够应付使用量的急剧增长。因此,对于通常不需要很多计算能力,但是可能会遇到使用量高峰的 Facebook 应用程序,Joyent 是非常受欢迎的选择。

Joyent 支持与 OpenSolaris 兼容的任何技术。这包括任何开放源码的 LAMP 技术和编程语言,以及 Java 和 Ruby 等其他编程语言。Joyent 允许使用任何现有的 Linux 或 UNIX® 工具保护和维护站点和数据。

Mosso

Mosso 是著名的托管服务提供商 The Rackspace Cloud 的子公司,它提供几种不同的云计算服务。Mosso 的 Cloud Site 同时提供基本平台和专门平台。有两个基本的 Cloud Site 配置。一个配置使用开放源码软件,它是典型的 LAMP 设置。另一个配置是 Windows 服务器,其中包含 IIS Web 服务器和 SQL Server 数据库。可以选择配置,根据需要的带宽、存储量和 CPU 周期付费。

Mosso 已经宣布还将提供一个称为 Cloud Servers 的新产品。这个产品是 Linux 系统,但是在配置方面提供完全的灵活性。Mosso 的 Cloud Site 提供许多应用程序所需的基本构建块,所以很受欢迎。可以把它们看做基本的专门平台。下一节讨论更专门的平台。

专门平台

“专门” 这个词显然有点主观。专门的云计算平台究竟有什么特点?本节讨论的所有平台都在基本平台的基础上提供额外特性。这些特性可以是独特的开发环境、在平台中集成的额外服务或者提供方便的特性。本文讨论下面这些专门平台:Microsoft Azure、Google App Engine、Aptana Cloud、Heroku、Ning 和 Salesforce。

Microsoft Azure

Azure 平台由 Microsoft 于 2008 年第四季度公布。这个平台捆绑它自己的操作系统,一种特殊风格的 Windows。它包含一个用于动态地供应机器实例的 “系统管理程序”。它可以运行任何 .NET 应用程序。当然,基于服务器的 .NET 应用程序很适合转移到这个云平台上。Microsoft 已经开始在 Azure 上的云中提供它的许多基于服务器的产品,比如 Exchange。

但是,Azure 不仅仅是 Windows 和 .NET 平台。Azure 平台还提供许多其他服务,包括 SQL Services(一个可伸缩性很强的 SQL Server 数据库)和 Live Services(许多流行的 Microsoft 应用程序使用这些 Web 服务进行搜索、照片共享、即时消息传递等等)。Azure 还提供与 Microsoft 的 IDE Visual Studio® 的紧密集成,因此很容易在 Azure 平台上运行、测试和部署应用程序。

Azure 是专有的云平台,但是如果您已经在使用专有的 Microsoft 技术,那么它还是有些吸引力的。客户只能使用 Microsoft 提供的专有技术,比如 .NET 语言和基于 SQL Server 的数据库。可以使用许多 Windows 技术保护、访问和管理在 Azure 上运行的任何应用程序。

Google App Engine

App Engine 由 Google 于 2008 年第二季度启动,它与其他云平台很不一样。在它上面没有硬件的供应;只需把应用程序部署到其中 — 部署是免费的。但是,与其他云平台相似,App Engine 对使用量有限制,可以根据需要购买更多 CPU 使用量、存储量和带宽。Google App Engine 有一些方便的特性,但这只是它的专门特性集的一小部分。

Google App Engine 提供一个健壮的开发环境,这个环境只支持 Python。它在 Python 之上提供许多服务。用户管理与 Google 集成。例如,用户使用在登录 Google Mail 时使用的凭证登录您的应用程序。它提供一个用于存储结构化数据的数据存储 API。数据存储和获取操作与使用关系数据库时相似,但完全是 Google 专有的技术。它基于 Google 专有的分布式文件系统 GFS。

总之,Google 只支持开放源码的 Python,在其他方面大量使用专有技术(尽管 Google 在幕后可能使用许多开放源码技术)。Google App Engine 没有提供任何数据备份解决方案,但是底层数据库具有很强的容错能力。

Aptana Cloud

Aptana 最有名的产品可能是 Aptana Studio,这是一个支持 JavaScript、PHP、Python 和 Ruby 等动态编程语言的基于 Eclipse 的 IDE。Aptana 于 2008 年第二季度公布了它的云平台。Aptana Cloud 实际上是在 Joyent 的云计算平台上提供的一组特性。

通过使用 Aptana Cloud,可以轻松地把应用程序部署到 Linux 或 MySQL 环境中,其中包含 PHP、Jaxer(Aptana 的服务器端 JavaScript 实现)或 Ruby on Rails。Aptana Cloud 部署具有 Joyent Accelerator 部署的所有特性,还包含 Aptana 提供的额外特性。云应用程序的部署和管理直接通过 Aptana Studio 进行。可以通过 Aptana Studio 执行所有任务,包括向应用程序供应硬件、监视日志文件等等。Aptana 的简便性是前所未有的。开发、测试、部署和管理都在一个地方进行。

Aptana 从 Joyent 继承了对开放源码技术和编程语言的支持。它还继承了用于管理和备份的开放源码工具。Aptana Studio 中集成了许多管理功能,但是也可以构建更高级的系统。

Heroku

有人说,“创业公司 Y-Combinator 的 Heroku 为 Ruby on Rails 提供的特性就是 Google App Engine 为 Python 提供的。” 但是,这种说法对于 Heroku 并不公平。它不只是一个可以使用 Ruby on Rails 的云平台。Heroku 只支持 Rails,针对 Rails 做了大量调整。通过使用 Heroku,只需在本地设置中添加一个 Ruby gem,马上就可以在 Heroku 云中部署和运行应用程序。另外,还可以从 Git 存储库进行部署。甚至可以直接从 Web 浏览器访问和编辑自己的代码。在应用程序中可以使用任何 Ruby gem 或 Rails 插件。

Heroku 非常方便。它在 Amazon EC2 之上运行,所以可以弹性地扩展计算能力。Heroku 通过它的 Heroku Garden 提供免费服务。可以在云中免费部署和测试应用程序。当准备好处理更大的通信量或者需要容错能力时,可以把应用程序转移到主 Heroku 平台。

Ning

本文到目前为止讨论的云平台都是通用的。无论您的应用程序是什么,它们都可以处理。其中一些平台主要适用于 Web 应用程序,但是这个类别仍然是相当宽泛的。流行的站点 Ning 允许用户创建自己的社交网络。这常常通过纯粹的配置、添加页面、在页面中添加组件、配置组件等操作来完成。通过使用 Ning,还可以下载自己的社交网络的源代码,根据需要修改代码,然后在 Ning 云中运行它。社交网络代码是用简单的 PHP 编写的,所以很容易创建自己的社交网络应用程序。

与 Google App Engine 相似,Ning 提供一个数据存储 API 而不是关系数据库。它还通过许多 Ning API 提供对社交网络基础结构的访问。可以通过上传代码进行部署,还提供供应硬件的功能。Ning 在用户的网络上附加广告,并限制存储量和带宽。如果要去除广告或增加存储量和带宽,就需要付费。

Ning 显然是一个非常专门的云平台。但是,如果您打算在应用程序中构建社交网络特性(即使它们只是主要特性之外的辅助特性),而且熟悉 PHP 编程,那么 Ning 是非常有吸引力的选择。Ning 与 Google App Engine 相似。用户只能使用一种编程语言 (PHP),而且不能根据需要安装其他软件。但是,它具有很强的可伸缩性。

Salesforce

另一个非常专门的云计算平台是 Salesforce 提供的,Salesforce 最有名的成果是使用 SaaS 模型革新了客户关系管理 (CRM) 软件。在 Force.com 平台上,您可以创建自己的应用程序,运行它们的云基础结构类型与 Salesforce 运行其 CRM 应用程序的云基础结构类型相同。企业使用 AppExchange 寻找并 “安装” 应用程序,让自己的用户可以使用它们。与 Facebook 应用程序相似,可以让应用程序作为主 Salesforce 应用程序的组成部分无缝地运行。

另外,还可以用一个或多个应用程序创建定制的 Force.com 站点。这与云计算模型更相似。在使用 Force.com 站点时,并不根据硬件付费,而是根据用户数量付费。根据每个用户需要的存储量不同,有不同的费率。要想创建在 Salesforce 上运行的应用程序,需要用 Apex 编写程序,这是与 Java 编程语言相似的一种专有语言。Salesforce 工程师也使用这种语言开发自己的 CRM 应用程序。

Salesforce 还提供许多与平台相关的服务,用于管理用户、账户、角色和数据访问。对于业务应用程序,尤其是特定企业特有的业务应用程序,Force.com 站点是很有吸引力的选择。Salesforce 在开放源码技术和编程选择方面相当受限制。但是,与 Google App Engine 和 Ning 相似,Salesforce 提供可伸缩性很强的专有技术。

结束语

本文讨论了云计算的一些重要的益处。介绍了许多种云计算平台以及它们的相似之处和差异。这些信息可以帮助您选择适合自己的平台。

请继续关注这个 “真实的开放源码云计算” 系列中的后续文章,我们将讨论如何在云计算平台上开发、部署和管理应用程序。


相关主题


评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Open source
ArticleID=385981
ArticleTitle=现实中的开放源码云计算,第 1 部分: 并不是所有云都相同
publish-date=04292009