英文原文:Cloud computing service models, Part 3: Software as a Service

  软件即服务 (SaaS) 为商用软件提供基于网络的访问。您有可能已经使用过 SaaS,即使您当时并不知道。SaaS 的示例包括 Netflix、Photoshop.com、Acrobat.com、Intuit QuickBooks Online、Gmail 和 Google Docs。可能不太明显的 SaaS 实现包括移动应用程序市场中的相当一部分。

  SaaS 为企业提供一种降低软件使用成本的方法——按需使用软件而不是为每台计算机购买许可证。尤其是考虑到大多数计算机在差不多 70% 的时间是空闲的,SaaS 可能非常有效。企业不必为单一用户购买多个许可证,而是让许可证的使用时间尽可能接近 100%,从而尽可能节省成本。

  为了方便,表 1 再次给出本系列第 1 部分中提供的三类服务的概念交叉矩阵。

  表 1. 三类云计算的概念交叉矩阵 

  范型转变 特征 关键词汇 优点 缺点和风险 不应该使用的场合
基础设施即服务 (IaaS) 基础设施即资产 常常独立于平台;分担基础设施成本,因此会降低成本;服务水平协议 (SLA);按使用量付费;自我伸缩 网格计算,效用计算,计算实例,系统管理程序,暴雨 (cloudbursting),多租用者计算,资源池 避免在硬件和人力资源方面花费资产费用;降低 ROI 风险;降低进入门槛;简化和自动化伸缩过程 企业效率和生产力很大程度上取决于厂商的能力;可能会增加长期成本;集中化需要新的/不同的安全措施 当资产预算大于运营预算时
平台即服务 (PaaS) 许可证购买 消费云基础设施;能够满足敏捷的项目管理方法 解决方案堆 简化的版本部署 集中化需要新的/不同的安全措施
SaaS 软件即资产(企业和消费者) SLA;由 “瘦客户机” 应用程序提供 UI;云组件;通过 API 进行通信;无状态;松散耦合;模块化;语义性互操作能力 瘦客户机;客户机-服务器应用程序 避免在软件和开发资源方面花费资产费用;降低 ROI 风险;简化和迭代式的更新 数据的集中化需要新的/不同的安全措施

  SaaS 给软件厂商提供了新的机会。尤其是,SaaS 软件厂商可以通过四个因素提高 ROI:

  • 提高部署的速度
  • 增加用户接受率
  • 减少支持的需要
  • 降低实现和升级的成本

  部署的速度

  在过去,部署传统的桌面应用程序需要很大的工作量。实际上,我曾经多次听到桌面应用程序开发人员把更新他们的应用程序称为 “部署噩梦”。正如 Tariq Ahmed 在 Flex 4 in Action (Manning Press) 的第 1 章中指出的,“要想让数千甚至数万客户机同时运行软件的某一版本,后勤方面的复杂性是非常高的。”

  Ahmed 说,复杂性这么高,以致于大多数桌面软件开发公司甚至认为这根本不合理或不可行。过去受到这个问题困扰的开发商应该考虑部署软件的 SaaS 版本。但是,妨碍传统软件开发公司进入 SaaS 市场的最大障碍是让桌面应用程序能够作为 SaaS 应用程序运行。在许多情况下,这需要在某种程度上重新编写软件,一些公司觉得这么做成本太高。

  这正是向云计算转移的过程比较缓慢且平缓的主要原因之一。在大多数情况下,符合逻辑的解决方案是分阶段地把软件转移到云中,首先以 SaaS 的形式提供原应用程序的高度简化的版本。考虑到开发商对版本控制的控制水平,这么做是很合理的。在这里,分析一下 SaaS 的特点会很有帮助。

  您可以看出在云计算与过去的 “LAN 计算” 之间有许多相似之处。典型的 LAN 架构由站内的许多工作站组成,它们常常被称为哑终端,它们通过连接强大的大型机(常常由 IBM 提供)运行应用程序,见 图 1。

  图 1. 显示在基本 LAN 中客户机终端与大型机系统的关系的简单示意图 

云计算服务模型,第 3 部分: 软件即服务(PaaS) 

  这种计算类型过去非常适合企业,因为 IT 部门能够完全控制版本,可以非常方便地多次部署更新。同样,过去妨碍桌面软件应用程序开发商进行版本控制的后勤障碍在云中也不存在,因为软件在开发公司能够直接访问的基础设施上运行。

  考虑到 SaaS 必须能够服务的客户机数量,SaaS 基础设施的规模要比 LAN 大得多。但是,底层的概念是相同的。图 1 所示的大型机能够驻留足够多的软件实例,从而为本地网络中连接它的所有客户机提供服务;而 图 2 所示的云由许多不同的计算机资源组成,它们共同提供计算能力,从而运行为世界各地的客户机提供服务所需的许多软件实例。

  图 2. 显示在 SaaS 中客户机设备与云的关系的简单示意图
云计算服务模型,第 3 部分: 软件即服务(PaaS) 

  增加接受率

  如果您走出企业,看看 SaaS 对于一般消费者的意义,就会发现以前一些软件的许可证费用太高,而现在 SaaS 让一般消费者能够以合理的价格使用它们。一个好例子是 Adobe 以 SaaS 的形式提供 Adobe® Photoshop®。尽管这项工作是 Adobe 正在做的试验,但是已经取得了一些效果。例如,我注意到在需要执行简单的照片编辑任务时,在我的朋友和家庭成员中越来越多的人开始使用 Photoshop.com 进行基本的照片编辑,而不是启动全功能的版本。出现这种趋势的原因是,不需要完整版本中的功能的人现在可以省钱。与此同时,过去不使用 Photoshop 的人也开始使用 Photoshop.com 了,这给 Adobe 带来了争取新的长期客户的机会,扩大了潜在客户的范围。

  SaaS 提供的多种业务模型尤其有吸引力。例如,Intuit 以 SaaS 的形式提供 QuickBooks Online,按月收取服务费。作为经常旅行的企业主,我发现这种服务非常有用,尤其是因为我的业务伙伴住在 400 英里外的另一个州里。同时,Adobe 在 Photoshop.com 和 Acrobat.com 中应用了 SaaS,以 freemium 服务的形式提供软件——freemium 服务是指一种基于许可证软件产品的 SaaS 缩略版的业务模型。

  freemium SaaS 基于的收入模型是,预计免费用户中的一部分最终会觉得软件很有用,他们会升级到启用了更多特性的 SaaS 付费版本,或者购买包含所有特性和功能的桌面版本的许可证。这种方法往往比通过 “受限制的演示” 模式试用软件更好,因为演示模式要求用户在桌面计算机上安装他们可能不会购买的应用程序。另外,如果免费用户中升级的比例低于预期,还可以通过广告进一步补充这个模型。随着云计算的发展,传统的桌面软件厂商经常使用这种方法适应市场的变化。

  减少支持的需要

  大型客户服务中心的成本很高,不得不支持多种平台会导致支持问题增加,而 SaaS 可以大大缓解这些难题。首先,部署的简便性让开发人员能够在发现 bug 之后很快进行修复,这意味着大多数 bug 可以在大量用户遇到它们之前被修复,这会减少客户支持部门接到的电话数量,提高客户满意度,降低客户流失的可能性。

  另外,传统桌面软件应用程序的开发商常常必须支持多种平台。例如,开发商可能必须支持 Windows® 7 和 Apple Mac OS X 10.6 操作系统,添加对第二种操作系统的支持差不多会让开发成本加倍;而且,如果支持这些操作系统的许多不同版本,问题会更多。支持操作系统的多个版本还会产生限制。

  例如,如果您要构建一个在 Windows 7 上运行的程序,但是它必须与 Windows XP 兼容,就必须非常小心,要确保特性和功能在这两个版本上都能够运行;否则,就必须把项目分为两个分支,为每个版本开发单独的代码,这会不可避免地降低生产力和效率,延长完成项目的预期时间。让业务执行官心跳加速的最快方法之一是,告诉他后两年的预期开发进度要减慢一半儿。另外,支持不同的操作系统和这些操作系统的不同版本会增加预算;这个问题和其他因素导致目前软件开发项目的失败率非常高。

  降低实现和升级的成本

  SaaS 推动 ROI 的第四个因素与第一个因素有点儿相似。但是,部署的速度是指快速、简便地部署应用程序更新所带来的好处。与之相反,降低实现和升级的成本是指开发公司由于能够控制版本和运行软件的基础设施所获得的经济利益。

  因为开发商可以控制运行软件的平台(平台通常对于用户完全透明),所以他们不必负担在多个平台上测试和部署 bug 补丁和新特性的额外开销,这会节省大量资金。这让 SaaS 应用程序的升级成本更低。节省的大量时间和资金让开发商有机会更好地响应客户的请求并增强易用性,从而提高客户满意度,降低客户流失的可能性,这会带来间接的经济利益。

  SaaS 和用户体验设计

  SaaS 应用程序代表着一种新一代应用程序设计方式。尽管在我目前看到的文档中没有明确地指出,但是看起来 SaaS 程序也带来了一种新的 UI 设计方式,这种方式与大多数其他行业中的产品设计流程更一致。这种方式包含一个称为用户体验设计 (UXD) 的流程,在这个流程中由产品团队而不是开发团队设计 GUI。

  UXD 的主要目的是,确定哪些特性会让应用程序对于目标客户最有价值,并在设计中融入这些知识。尽管对于是否应该在所有类型的软件的开发中都执行这个流程有争议,但是在 SaaS 应用程序开发中这种做法非常普遍。出现这种现象的原因可能是,SaaS 可以实现的业务模型与传统软件不同,需要执行 UXD;而且通过开发 SaaS 可以节省大量时间和资金,让开发商有能力执行 UXD。

  SaaS 对于开发人员的意义

  正如您看到的,完全成熟的云计算对于企业和消费者来说都是巨大的转变,必须克服很多难题。因此,这个转变过程会花费一段时间,要经过几个阶段的渐进迁移。在这次计算模式演变期间,软件开发商必须能够适应变化的环境,从而继续满足企业和消费者的需要。

  随着云计算的发展,企业必须能够适应变化的环境,而软件程序员需要扩充他们的技能并了解 SaaS 编程模型,从而适应企业的要求。云计算不仅仅是通过虚拟化提供可伸缩的基础设施和平台可移植性。它还把软件提升到全新的水平,可以认为它代表着新一代计算机编程模型。这一论断可能比较大胆,但是考虑到本文中讨论的 SaaS 提供的机会,这并非没有根据。

  例如,一般消费者能够负担软件费用意味着潜在客户更多。能够控制平台、基础设施和软件版本会直接节省成本。显然,SaaS 很快会带来某种程度的 “民主”,也就是说中小型的开发企业也能够与大型开发商在同一领域中竞争。

  结束语

  在本文中,我们分析了云计算的第三种类型 SaaS。更重要的是,您了解了 SaaS 应用程序的日益流行所带来的机会和挑战。

  在阅读本系列中的三篇文章之后,我希望您对云计算对于您的职业前途和企业意味着什么有了更清晰的认识。除了前两篇文章中提供的 IaaS  PaaS 方面的参考资料之外,参考资料提供关于 SaaS 的更多信息的链接。

  参考资料

  关于作者

  Dan Orlando 是企业开发社区公认的领导者。作为长期顾问,Dan 经常向行业领导者以及 IBM developerWorks、Adobe Developer Connection 和 Amazon Web Services 等出版物提供 Adobe 技术平台方面的专业经验。Dan 还在 DanOrlando.com 上定期发表博客文章。