内容


软件即服务(SaaS)在云计算中扮演的角色

Comments

简介

如果使用过 Amazon Web 服务,您一定会对 SaaS 在云计算中扮演的角色很感兴趣。好消息是您可以基于这些 Web 服务开发 Web 感知、云友好的 SaaS。您可以将这个 SaaS 销售给许多用户,比如顾问或产品工程师,并通过更实惠的按需付费方式减少提前购买软件的成本。另一个好处是 SaaS 在一个集中的位置提供更新,避免经常下载补丁和进行升级。

在本文中,我将向您展示 SaaS 和云计算之间的异同,并讨论 SaaS 在云计算中扮演的角色,以及展示它与效用计算和平台即服务(Platform as a service,PaaS)等其他形式的云计算的巨大差别。我还将给出服务类别和应用程序示例,探讨关于结合多租赁和虚拟化的内容。然后,我将论及未使用的资源和互操作性问题,并提供一些相应的解决方案。最后介绍测试 SaaS 在云计算中的执行情况所需的条件,以及 SaaS 在安全性方面的问题。

SaaS 的成熟度

SaaS 已经非常成熟,可以看作是 mashup 的一部分,或是 PaaS 产品或基于 Internet 的服务的一个插件。它提供开箱即用的应用程序,比如企业资源管理或工厂工程管理。不管您身居何处,都可以从 Web 浏览器访问这个应用程序。

SaaS 服务的完善得益于服务器和磁盘上的虚拟平台软件。服务完善程度仅次于它的是 PaaS 和基础设施即服务(Infrastructure as a Service,IaaS)。服务完善程度最低的是基于 Internet 的服务。PaaS 在磁盘上运行 API 和虚拟平台软件,而 IaaS 则通过 Internet 提供了一个完整的计算机基础设施,并仅为 Amazon EC2 和 IBM Blue Cloud 等的用户提供了服务器虚拟化。Amazon S3、Amazon Simple DB 和 Google Base 等都是基于 Internet 的服务。

示例 1:工厂工程管理

我们可以构建一个完善的 SaaS,工厂工程公司可以利用它改进生产周期,以及为商品采购、销售和财务交易提供保障。这个 SaaS 还能帮助决定生产转包中的容量计划所需的业务流程。它的用户群很大,可以是厂长、质量经理、生产线管理员、COO 和 CFO。

主管人员不仅可以利用 SaaS 在按需付费的订阅环境中访问数据,他们还可以借助它在财务、工厂工程、生产周期、供应管理和人力资源计划方面做出关键决策。SaaS 可充当制造型工厂的决策者的经营业务智能工具。比如,通过 SaaS 提供的工具可以为决策者提供原料处理时间、生产周期时间和设备更换时间的理想指标。这些工具还可以给出分析,并在某个指标没有达到理想指标时为决策者提供补救措施。

示例 2:远程学习

我们可以将一个培训程序构建为 SaaS。DigitalChalk 的 SaaS 模型专门针对大学或企业客户,帮助他们通过 Web 站点传输培训内容(包括远程学习)。在构建这个 SaaS 时,它创建了自己的 Amazon Machine Image (AMI) 并使用 Amazon S3、EC2 和 SQS,而不是使用数据中心。

要开发其他的 SaaS 服务,可以使用 EC2 将要运行的 IBM AMI。其中包括 IBM DB2、IBM Informix、IBM Websphere Smash 和 IBM Lotus Web Content。要扩展 AMI 存储库,可以使用预先配置好的 AMI 模板,也可以创建一个包含有应用程序、库、数据和相关设置的 AMI。

SaaS 服务的分类

Microsoft® 将 SaaS 分为两类:面向企业的服务和面向个人消费者的服务。这两种服务均可通过订阅购买得到。面向企业的服务是用于金融、供应链管理及客户关系等方面的、基于按需付费的大型定制商业解决方案(例如,工厂工程管理)。面向个人消费者的服务的目标是不需要他们付费,而是依靠广告支持获得收入。

由于这两种分类仍然很有限,我这里再增加两个种类:共享资源服务外包服务。共享资源服务在一个用户池中分发服务,能够让大型公司以很低的成本能获得峰值的负荷容量,减少了对大型内部数据中心的需求。外包服务则让中小型企业可以通过完全外包数据中心基础设施的方式提供服务(比如,远程学习)。

除了面向个人消费者的服务外,只有企业向大量客户提供服务时,才可能有收益。因为只有客户群足够大,按需付费订阅的低收益才能弥补基础设施的高成本 — 它不像效用计算那样按使用率来收费。除订阅外,收入来源还有介绍费、交易费、基于消费的定价、基于性能的定价、转销收益及收入分成。

最佳性能调优

每个示例都显示 SaaS 的三个属性:可配置性、可伸缩性及多租赁效率。如果 SaaS 不具备一个或多个这样的属性,那么这个 SaaS 就是不成熟的。为了获得更灵活的系统最佳性能调优,可以将多租赁与虚拟化相结合。

多租赁

多租赁是指一种软件架构,在这种架构下,软件的单个实例作为一个 SaaS 运行,服务于多个客户组织(租户)。对于这种多租户的架构,数据和配置被虚拟分区,以使每个客户组织都能处理一个虚拟的应用程序实例。通过合并单个操作中的 IT 资源,多租赁节约了成本。

多租赁的一个缺点就是当用户的基数很小时,它也要占用大量的内存和进行大量的应用程序处理。当用户基数很大时,由于负荷可以在多个用户间分摊,就克服了这个缺陷。多租赁的另一个缺点就是构造一个高效的多租赁应用程序可能需要额外的编程,这就增加了开销。

虚拟化

SaaS 架构中的服务器虚拟化不局限于多租赁的数据和配置虚拟分区。虚拟化的好处之一就是它能通过动态调整实际服务器的数量以及资源的合理大小(包括存储和数据库资源),从而提高系统的容量以满足需求(比如在 12 月份购买会增加)。不好的一面是,由于虚拟化软件互操作性方面的问题,虚拟化后的服务器有可能不能从一个厂商转移到另一个厂商。

问题 1:未使用资源

运行在 Web 服务之上的 SaaS 利用 SOA 在软件应用程序之间进行交互。每个软件服务均可充当一个服务提供者或请求者。SaaS 服务提供者通过公共代理向其他应用程序公开其功能。SaaS 服务请求者合并来自其他服务的数据和功能。二者均在 SaaS 服务的部署和管理上因经营规模扩大而得到节约。

不管资源是否缺乏,Web 服务通常会松散地耦合。要确保用于服务器提供者和请求者的资源在容量随需求上下波动时不会被浪费,需要创建一个具有耦合开关的 Web 服务以配合 SaaS 应用程序。当 Web 服务收到一个告警表示其对应的资源已经达到特定的浪费级别时,这个开关就会从松散耦合倒向紧密耦合。

问题 2:互操作性问题

如果您的 SaaS 是 Web 感知、云友好的,公司可能会发现很难对不同的厂商运行同一个 SaaS 应用程序,因为这些厂商可能具有不同的导入和导出数据的格式。考虑这样一个场景:假设您有两个 SaaS 应用程序需要 mashup。一个在某个厂商的云计算环境中使用了行业标准 API。另一个则在另外一个厂商的云计算环境上运行了专有 API。不经过某些修改,这种 mashup 将不能工作。

首先必须解决这两个云计算厂商间的可移植性问题。这两个厂商是已经允许两种环境之间的通信,还是必须要对二者间的数据进行处理?这两种类型 API 的数据格式和逻辑是兼容的,还是必须要重新格式化两个应用程序间的数据或更改逻辑?目前,还没有 API 导入和导出数据的相关标准。不过,IBM 和 Amazon 正在共同努力以使互操作性和 mashup 更易于设计和管理。

测试非常关键

作为软件开发的一部分,测试可以确保云计算和 SaaS 能正常工作。为了提高服务质量,也需要进行 SaaS 服务和应用程序的测试。为了开始测试,需要仿真终端用户环境,比如多个 Web 浏览器、操作系统和网络连接性。没有这些条件就不是一个好开端。例如,一个 Web 浏览器有的特性,另一个浏览器可能没有。特性的缺少有可能会影响用户访问云计算中的 SaaS 服务的方式或者未使用资源如何处置的方式。

接下来,测试是否有多租赁漏洞,比如由于软件漏洞,用户 A 得以假冒成用户 B。其他需要进行测试的还有:在系统负载正常的情况下,用户使用的扩展范围是多少。在按需付费的环境中如何最好地管理专有密钥。云中的大量数据应如何备份和存储。在 SaaS 模型中,版本控制和更改管理并非客户行为,但必须对其进行须测,以确保它们能被充分验证。同样重要的是要测试 SaaS 是否满足垂直需要,因为 SaaS 是一个水平应用程序。

要记住,与部署于典型的数据中心环境中的产品相比,云中的 SaaS 产品有着不同的部署和使用条件。因此,基于云的应用程序的测试要求也是不一样的。例如,SaaS 产品可以在用户不知情的情况下被更改。由于集中化的管理使进行微小更新变得更为容易,SaaS 部署模式的发布与其他模式相比更为频繁,因此 SaaS 产品的客户支持周期更短些。然而,如果不经过充分测试就频繁进行更改,这种短的发布周期就会给用户造成很大的麻烦。

购买、维护与运营测试所需基础设施成本非常昂贵。在 SaaS 基础设施不断增长时,设置功能、回归、性能和压力测试的成本肯定不会低。在一个 SaaS 产品最终发布前,需要建立 Alpha 和 Beta 测试环境来获取潜在用户的反馈。因此,提前计划并赢得一个大的市场份额至关重要,只有这样才能从价格低廉的订阅中实现盈利,并且抵消昂贵的测试成本。

安全性问题

在按需付费的基础设施中,灾难恢复、专用密钥管理和控件行为公开是 SaaS 环境中的主要安全性顾虑。如果不进行适当的计划和实现,那么安全防护的成本很可能会远远超出 SaaS 及云计算的经济优势。

灾难恢复

在 2008 年初 Amazon 的 S3 和 EC2 遭遇了一次三小时停机后,针对灾难恢复提前进行计划就显得尤为重要。在停机期间,用户错过了很多销售机会,主管人员也无法访问关键业务信息。停机所产生的影响要远远超出了一个 SLA 所提供的数据恢复和服务信用。

在没发生停机之前,用户不妨自己进行安全性测试,以检查 SaaS 供应商是否可以很快地恢复数据。这个测试很简单:只要给供应商发一封电子邮件索要您的存储数据,并检查此供应商恢复这些数据要花多久。如果恢复所需时间太长,请询问此提供商其中的原因以及您在其他的情形下可以获得多少服务信用。即便恢复大量数据所需的时间很短,也要验证校验和能否与原始数据匹配。另外,还需要在高峰时和低谷时测试灾难恢复。

数据保护

测试一种可信算法来加密您看得见的本地计算机上的数据,然后再用解密密钥访问您在云中看不见的远端服务器上的数据。这个测试非常必要。如果试图访问数据时无法读取数据,原因之一是解密密钥无效,原因之二是遭服务器拒绝,因为此提供商使用的是自己的加密算法。请询问您的提供商它所使用的是哪种加密算法。

云中的数据也可能存在一些问题。要保护数据,最好是管理自己的专用密钥。请咨询提供商有关专用密钥管理的相关信息。如果在 Amazon 上注册,它将会给您这种证书。

控件行为公开

并非所有提供商都愿意公开它在 SaaS 环境中是如何管理控件行为的。有些提供商具有审计其控件行为的策略。

请询问您的提供商在向用户公开控件行为和过程时使用的是不是 SAS 70 Type II 认证。这种认证可以确保数据中心(包括云计算内的访问和镜像数据中心)具有完善的更改管理文档、备份和恢复需求、灾难恢复需求以及物理级安全需求。如果它不是认证的,那么就要询问此提供商如何能够获得它管理控件行为方式的信息。如果您对您的提供商的程序质量很满意,那么就无需这种认证。Amazon 已经在一篇文章中公布了其安全处理,请参见 参考资料 小节。

结束语

本文帮助您规划云计算中 SaaS 的开发和管理。用户希望通过廉价订阅按需付费的基础设施来获得服务,这为开发人员和项目团队中的其他人员带来了挑战。认识并解决开发和管理 SaaS 的问题,包括潜在的安全性问题,能够让您的团队免受麻烦的干扰。使用 IBM Rational Web Developer WebSphere Software 和 IBM Rational ClearQuest 发现缺陷并跟踪使用 IBM AIM 构建的 SaaS 应用程序可以实现这个目标。(请参阅 参考资料 了解更多信息)。


相关主题


评论

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

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Web development
ArticleID=395748
ArticleTitle=软件即服务(SaaS)在云计算中扮演的角色
publish-date=06102009