云计算的目标之一就是让开发人员降低理解和管理软硬件基础架构的复杂性,使他们能够专注于应用程序的功能。这个目标通过基础架构即服务 (IaaS) 云和平台 (PaaS) 云在不同程度上得到了实现。IaaS 云提供了硬件并允许您携带自己的软件。PaaS 云还额外提供了软件,通常允许您关注于构建和部署应用程序、代表您处理基础架构和中间件的部署。本文简单调查了在云中运行 Java 的一些 PaaS 和 IaaS 选项,然后通过 IBM Application Pattern for Java 深入研究了 IBM 为您提供了什么。
云中的 Java 应用程序
大多数的云供应商都允许或支持在其云产品中使用 Java 技术。Amazon EC2 就是其中的一个例子,它实际上是一个 IaaS 云。您可以部署 Amazon Machine Images (AMI),Amazon 将其描述为 “一种特殊类型的预设置操作系统和虚拟应用程序软件,用于在 Amazon Elastic Compute Cloud (EC2) 中创建虚拟机”。也就是说,您需要部署一个包含了所需软件的自构建映像或预构建映像,并可包括一个 Java 运行时。
接下来的另一个例子是 Microsoft Azure 和 Salesforce.com Heroku。二者都是 PaaS 云,提供了软件环境并允许运行 Java 应用程序。不过,这二者中只有 Heroku 通过启用 OpenJDK 6 提供了 Java 运行时。对于 Azure,您必须提供自己的 Java 运行时。
Google App Engine 和 Amazon Elastic Beanstalk 提供了大多数的产品应用。您无需担心虚拟机和软件的安装;只需提供自己的应用程序即可。不过,您可以只运行基于 Web 的应用程序,而且这两项服务均对应用程序的功能强加了一些限制。
部署到 IBM 云中
IBM 的做法是提供一整套 IaaS 和 PaaS 类型的功能技术。IaaS 类型的功能示例是部署虚拟设备的功能。虚拟设备是使用标准的 Distributed Management Task Force (DMTF) Open Virtualization Format (OVF) 规范的某个映像中的预打包的软件堆栈,包含操作系统、软件应用程序、中间件、应用程序和额外的库以及用来配置和启用软件堆栈的元数据。它还支持使用脚本来重新配置此设备中包含的软件堆栈。
而更加类似 PaaS 的功能是由两种类型的工作负载模式提供的,即 虚拟系统 模式和虚拟应用程序 模式:
虚拟系统模式是一种以拓扑为中心的部署定义。Pattern Editor 使您能够通过定义一些虚拟机映像、将在这些虚拟机映像上安装软件组件和配置虚拟机映像所需的脚本包(元数据)来定义一种拓扑。为此,您可以使用手动创建的虚拟机、导入的虚拟机或者是一些 IBM Hypervisor Edition 映像。一旦为反复出现的拓扑和用来安装应用程序的配置脚本创建虚拟系统模式,就可以将它重用为一个标准的平台。 虚拟应用程序模式是一种以应用程序为中心的部署定义。Virtual Application Builder 使您能够配置应用程序本身、使用组件(包括数据库连接、消息队列等)所需的资源定义,以及包括可伸缩性、服务水平协议 (SLA) 等在内的策略。
图 1 展示了这三种部署到 IBM 云的机制:
图 1. 部署到 IBM 云的机制
表 1 对比了这三种部署机制各自的特点:
表 1. 部署机制的比较
虚拟设备 虚拟系统模式 虚拟应用程序模式
OS 上的标准软件安装和配置
传统监管和管理模型
基础架构驱动的弹性
通过扩展/捕获创建的映像
现有应用程序的标准的总体拥有成本 (TCO)
中间件技术的自动部署
传统监管和管理模型
应用程序和基础架构驱动的弹性
针对虚拟化应用程序而改进的 TCO
使用专家模式的高度自动化部署
利用弹性的工作负载管理服务
业务策略驱动的弹性
为云环境而构建
适用于云应用程序的最佳 TCO
IBM 云产品
虚拟设备、虚拟系统模式和虚拟应用程序模式在所有这三种 IBM 云产品中都可以使用。这些云产品既包括 IBM 提供的公共云,也包括用于私有云的集成了软硬件的设备:
IBM SmartCloud:IBM SmartCloud 是 IBM 托管的云,它可以是私有云,特定于某个给定的客户,也可以在完成配置后成为公共云。您可以将它想象成为 IBM 提供的云解决方案。 IBM Workload Deployer:IBM Workload Deployer 是一个硬件设备,提供了相应的配置和管理,可以将虚拟设备和工作负载模式部署到用户提供的硬件上,使现
有的硬件资源
具备云功能。您可以将它想象成为自带的云。 IBM PureApplication System:IBM PureApplication System 是一个优化了工作负载的集成式软件和硬件设备(提供了配置和管理功能),以及优化了的硬件,工作负载将部署在该硬件中。您可以将它想象成为云套装解决方案。
这三种产品使用了相同的部署和管理机制,这意味着能够轻松的将应用程序从一个产品到另一个产品,并且有可能采用使用了两个或多个部署产品的混合模型。