平台即服务 (PaaS) 常常是最容易让人迷惑的云计算类别,因为很难识别它,常常把它误认为是基础设施即服务 (IaaS) 或软件即服务 (SaaS)。在这个分三部分的文章系列的第二部分中,了解 PaaS 的特点以及如何在企业中应用它。
PaaS 的独特特点是,它让开发人员可以在驻留的基础设施上构建并部署 web 应用程序。换句话说,PaaS 让您能够使用云基础设施似乎无穷的计算资源。
当然,计算资源的数量看起来无穷只是幻想,限制取决于基础设施的规模。但是,正如在本系列的第一篇中了解到的,Google 基础设施大约包含超过一百万台基于 x86 的计算机。另外,因为用于 PaaS 的基础设施是弹性的(第 1 部分中讨论过这个概念),在需要时云可以扩展以提供更多的计算资源,所以无穷的资源并不完全是想像。
开发人员常常误以为云计算只适用于网络管理员。但是,这个错误的观念忽视了云计算可能给开发和质量保证团队带来的许多好处。
在软件开发过程中,一些东西常常会出问题。以我的经验,设置服务器环境以驻留开发团队要构建的 Web 应用程序可能会带来许多争吵。即使在最大的企业中,通常一位网络管理员要负责为几个开发团队服务。在不使用 PaaS 的情况下,设置开发或测试环境通常需要完成以下任务:
- 获取并部署服务器。
- 安装操作系统、运行时环境、源代码控制存储库和必需的所有其他中间件。
- 配置操作系统、运行时环境、存储库和其他中间件。
- 转移或复制现有的代码。
- 测试并运行代码以确保一切正常。
在很多情况下,管理员已经非常忙了,所以让他们抽出时间部署新环境会很困难。对于客户机和服务器端的 web 应用程序开发人员来说,另一个主要问题是在本地复制运行时环境以便执行测试。
现在,想像一下您是使用 PaaS 的开发团队的成员。在这种情况下,您会有一个虚拟机 (VM),其中包含完整的服务器环境,可以把它放在 USB 闪存驱动器中带在身边。
我希望您把注意力转到第 1 部分中给出的概念交叉矩阵上,使用它作为参考分析 PaaS。表 1 再次给出这个矩阵。
表 1. 三类云计算的概念交叉矩阵
范型转变 | 特征 | 关键词汇 | 优点 | 缺点和风险 | 不应该使用的场合 | |
---|---|---|---|---|---|---|
IaaS | 基础设施即资产 | 常常独立于平台;分担基础设施成本,因此会降低成本;服务水平协议 (SLA);按使用量付费;自我伸缩 | 网格计算,效用计算,计算实例,系统管理程序,暴雨 (cloudbursting),多租用者计算,资源池 | 避免在硬件和人力资源方面花费资产费用;降低 ROI 风险;降低进入门槛;简化和自动化伸缩过程 | 企业效率和生产力很大程度上取决于厂商的能力;可能会增加长期成本;集中化需要新的/不同的安全措施 | 当资产预算大于运营预算时 |
PaaS | 许可证购买 | 消费云基础设施;能够满足敏捷的项目管理方法 | 解决方案堆 | 简化的版本部署 | 集中化需要新的/不同的安全措施 | 无 |
SaaS | 软件即资产(企业和消费者) | SLA;由 “瘦客户机” 应用程序提供 UI;云组件;通过 API 进行通信;无状态;松散耦合;模块化;语义性互操作能力 | 瘦客户机;客户机-服务器应用程序 | 避免在软件和开发资源方面花费资产费用;降低 ROI 风险;简化和迭代式的更新 | 数据的集中化需要新的/不同的安全措施 | 无 |
了解 PaaS 的最好方法可能是把它分解为主要组件:平台和服务。现在,考虑提供的服务,这称为解决方案堆。也就是说,PaaS 的两个主要成分是计算平台和解决方案堆。
为了说明这两个 “成分”,我们进一步研究一下它们的定义。按照最简单的形式,计算平台 是指一个可以一致地启动软件的地方(只要代码满足平台的标准)。平台的常见示例包括 Windows™、Apple Mac OS X 和 Linux® 操作系统;用于移动计算的 Google Android、Windows Mobile® 和 Apple iOS;以及作为软件框架的 Adobe® AIR™ 和 Microsoft® .NET Framework。要记住的重点是,计算平台不是指软件本身,而是指构建并运行软件的平台。图 1 提供一张示意图以帮助理解这种关系。
图 1. 云计算分类与 PaaS 元素之间关系的图形化解释
既然理解了计算平台的概念,现在就来看看什么是解决方案堆。解决方案堆由应用程序组成,这些应用程序有助于开发过程和应用程序部署。这些应用程序是指操作系统、运行时环境、源代码控制存储库和必需的所有其他中间件。
解决方案堆也反映不同 PaaS 公司的差异,在决定采用 PaaS 之前,需要深入考察各个提供商提供的解决方案堆。
在与某家 PaaS 提供商签约之前,您应该问几个基本问题:
- 它支持哪些框架和语言?理想情况下,PaaS 应该支持基于此平台选用的语言的任何框架。
- 可以创建多少个应用程序?大多数 PaaS 提供商会根据您签订的计划或服务包限制可以构建的应用程序数量。要确保提供商提供的计划或服务包能够满足您的需要。
- 允许哪些内容类型?支持 PaaS 的基础设施通常涉及多租用者计算 的概念,也就是说许多 “租用者” 分享单一服务器上的 “空间”,这些空间由系统管理程序 管理的 VM 实例分隔。PaaS 提供商可能会对要驻留的应用程序和内容的类型加以限制。
- 支持哪些数据库类型?如果您的数据要随应用程序转移,这个问题就是非常重要的。必须确保提供商提供的数据库与您想要用来导入数据的格式兼容。
- 它是否支持 SSL (HTTPS)?这个问题对于确保安全性非常重要。如果您打算通过应用程序处理事务,但是发现不支持 SSL,您就遇到大麻烦了。
既然已经了解了 PaaS 的基本知识,现在研究一下在比较 PaaS 提供商时应该考虑的特性:
- 应用程序开发框架。健壮的应用程序开发框架应该基于广泛使用的技术。理想情况下,您应该避免厂商锁定。使用 Java™ 技术等开放源码框架通常比较好。
- 容易使用。PaaS 应该附带容易使用的 WYSIWYG 工具,应该有预先构建的部件、现成的 UI 组件、拖放工具和对某些标准 IDE 的支持。这应该会促进快速的迭代式应用程序开发。
- 业务流程建模 (BPM) 工具。需要使用强大的 BPM 框架对业务流程进行建模,围绕业务流程构建应用程序。
- 可用性。应该能够在任何时候从任何地方访问并使用所选的平台。
- 可伸缩性。平台应该足够智能化,能够利用底层基础设施的弹性计算能力处理应用程序将承受的负载。
- 安全性。为了有效地防御安全威胁,平台应该解决跨站点脚本、SQL 注入、拒绝服务和通信流加密等问题,并让安全措施完全融入应用程序开发中。另外,平台必须支持单点登录功能,让您能够把它与现有的内部应用程序或其他云应用程序集成起来。
- 包容性。平台应该能够包容、嵌入和集成在相同平台或其他平台上构建的其他应用程序。
- 可移植性。平台应该不限制底层基础设施类型,允许公司把应用程序从一个 IaaS 转移到另一个。
- 移植工具。为了轻松、快速地把数据从陈旧的内部应用程序迁移到基于新平台的应用程序中,平台的工具包中必须有批量导入转换工具。
- API。为了执行各种任务,比如用户身份验证、存储和获取文件(例如 Web 应用程序文件和资产)甚至直接调用数据库,平台应该有文档齐全的 API。这让企业能够灵活地创建和定制软件应用程序以与平台交互,从而满足公司的特殊需要。
厂商锁定 (Vendor lock-in) 意味着消费者依赖于某一厂商,除非花费巨大的转换成本,否则无法使用另一厂商的产品。当采用像云计算这样的正在流行起来的新技术时,会增加出现厂商锁定局面的机会。早期的使用者必须很清楚他们将处于什么境地,然后才能够签署长期的 IaaS 和 PaaS 协议。
避免厂商锁定的方法之一是通过 API 和平台技术的标准化。Simple Cloud(见 参考资料)等组织已经开始与参与这个开放源码项目的各种规模的厂商协作,力求让云中的 PHP 保持一致。为了创建 Simple Cloud,Zend Technologies、Microsoft、IBM 和 Rackspace 正在共同努力,其目标是跨不同的平台提供一个抽象层。
Simple Cloud API 的目标是为文件存储、文档存储和简单队列服务创建通用的接口。这让开发人员能够编写出可跨主要云平台移植的应用程序。参与云计算标准化的厂商应该得到赞扬,应该鼓励他们继续努力。在选择为您的公司提供 PaaS 服务的厂商时,我强烈建议优先考虑支持标准化的提供商。标准化会让 IT 部门的工作更轻松,更重要的是,这会节省公司的资金。
为了避免 PaaS 市场上出现厂商锁定,需要支持相同底层 API 的服务提供商。答案很简单:坚持采用专有技术的服务提供商必须同意支持 Simple Cloud 等标准化项目。
没有评论:
发表评论