英文原文: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 推动 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 中客户机终端与大型机系统的关系的简单示意图 

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

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

  图 2. 显示在 SaaS 中客户机设备与云的关系的简单示意图

  增加接受率

  如果您走出企业,看看 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 上定期发表博客文章。

云计算服务模型,第 3 部分: 软件即服务(PaaS)的更多相关文章

  1. 云计算服务模型,第 2 部分: 平台即服务(PaaS)

    英文原文:Cloud computing service models, Part 2: Platform as a Service 平台即服务 (PaaS) 常常是最容易让人迷惑的云计算类别,因为很 ...

  2. 云计算 --> 三种服务模式IaaS,PaaS,SaaS

    三种服务模式IaaS,PaaS,SaaS “云”其实是互联网的一个隐喻,“云计算”其实就是使用互联网来接入存储或者运行在远程服务器端的应用,数据,或者服务.任何一个使用基于互联网的方法来计算,存储和开 ...

  3. 以吃货的角度去理解云计算中On-Premise、IaaS、PaaS和SaaS

    了解云计算的一定都听过四个“高大上”的概念:On-Premise(本地部署),IaaS(基础设施及服务).PaaS(平台即服务)和SaaS(软件即服务),这几个术语并不好理解.不过,如果你是个吃货,还 ...

  4. 什么是云计算?云计算三种模式Sass、Paas、Iaas

    云计算 云计算的"云"指的是计算机网络(一般指的是 Internet),"计算"指的是多个计算机共同计算巨大的数据的过程.通过云计算平台把任务分解成一个个小的任 ...

  5. 云计算服务模型,第 1 部分: 基础架构即服务(IaaS)

    英文原文:Cloud computing service models, Part 1: Infrastructure as a Service 本文介绍三个云类别中的第一个:基础架构即服务(infr ...

  6. 关于云计算三大服务模式LAAS,PAAS,SAAS的含义及区别

    根据NIST的权威定义,云计算有SPI,即SAAS,PAAS和LAAS三大服务模式,上层是SAAS,中间层是PAAS,底层是LAAS,一层支撑一层. LAAS(Infrastucture-as-a-S ...

  7. 物联网全景动态图谱2.0|PaaS物联网平台汇总(上篇)

    物联网智库 原创 物联网智库 整理发布 转载请注明来源和出处 ------   [导读]   ------ 毫无疑问,2018年物联网对行业的深度变革才刚刚开启. 物联网产业链企业的质与量将进入全面爆 ...

  8. 云计算时代,你所不了解的 DevOps

    在本文中,我们讨论如何快速地从更高的层面理解DevOps,介绍准备改变文化的最佳实践.我们将讨论DevOps的目标以及从组织管理层得到支持的方法,为DevOps的概念打下基础.我们将试着从根本上介绍使 ...

  9. IaaS, PaaS和SaaS的区别

    从小型企业到全球企业,云都是一个非常热门的话题,它是一个非常广泛的概念,涵盖了很多在线领域. 无论是应用程序还是基础架构部署,当您开始考虑将业务转移到云时,了解各种云服务的差异和优势比以往任何时候都更 ...

随机推荐

  1. String 内在分配解析

    1.String类概念 (1)String是final的,不可被继承.public final class String.String是的本质是字符数组char[], 并且其值不可改变.private ...

  2. java reflect 例子

    public static void main(String[] args) { Student stu1 = new Student(); stu1.setId(1); stu1.setName(& ...

  3. Codeforces400D Dima and Bacteria

    题意:给你一个无向有权的图,图上的点被分成了几类,对于同类的点你需要判断它们之间相互的最短距离是不是0.满足这个条件之后要输出的是类与类之间的最短距离的矩阵.点给到10^5这么多,判断同类的点显然不能 ...

  4. POJ3468 A Simple Problem With Integers 树状数组 区间更新区间询问

    今天学了很多关于树状数组的技巧.一个是利用树状数组可以简单的实现段更新,点询问(二维的段更新点询问也可以),每次修改只需要修改2个角或者4个角就可以了,另外一个技巧就是这题,原本用线段树做,现在可以用 ...

  5. HDU 3038 How Many Answers Are Wrong(带权并查集)

    太坑人了啊,读入数据a,b,s的时候,我刚开始s用的%lld,给我WA. 实在找不到错误啊,后来不知怎么地突然有个想法,改成%I64d,竟然AC了 思路:我建立一个sum数组,设i的父亲为fa,sum ...

  6. 提交jar作业到spark上运行

    1.引入spark包:spark-assembly-1.4.0-hadoop2.6.0,在spark的lib目录下 File-->project structure 2.用IDEA建立一个sca ...

  7. REST_FRAMEWORK加深记忆-加了用户登陆认证,自定义权限的API接口

    哈哈,终于快结束了.. urls.py from django.conf.urls import include, url from django.contrib import admin urlpa ...

  8. java工具类系列 (四.SerializationUtils)

    java工具类系列 (四.SerializationUtils) SerializationUtils该类为序列化工具类,也是lang包下的工具,主要用于序列化操作 import java.io.Se ...

  9. Resource is out of sync with the file system的解决办法

    在eclipse中,启动server时报此错,是因为文件系统不同步造成的,解决方法有两个: (1)选中工程,右键,选择F5(手动刷新): (2)Window->Preferences->G ...

  10. Java API —— Calendar类

    1.Calendar类概述  Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR.MONTH.DAY_OF_MONTH.HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段 ...