65.9K
CodeProject 正在变化。 阅读更多。
Home

云计算 - SaaS

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.70/5 (17投票s)

2009 年 12 月 30 日

CPOL

15分钟阅读

viewsIcon

90390

云计算简介 - SaaS。

引言

云计算是当前空气中热门的词汇。本文首先探讨云计算究竟是什么。我们将从高层次的角度了解云计算的工作原理,以及它将如何影响我们当前的工作环境。在本文的后半部分,我们将深入探讨云计算的一个类别,即 SaaS(软件即服务)。但首先,让我们了解云计算的基本概念。

什么是云计算?

顾名思义,云计算是一种计算风格,其中动态可扩展且通常可视化的资源作为服务通过互联网提供。这些服务可以由任何用户通过标准的 HTTP 介质进行消费。用户不需要了解支持他们的“云”中的技术基础设施的知识、专业知识或控制权。云计算的名称灵感来源于云符号,该符号经常用于图表中表示互联网的流入和流出。云表示其隐藏的复杂基础设施的抽象。

下图显示了云计算的基本高层布局,其中提供商将在互联网上创建他们的解决方案(软件、基础设施或平台),一个或多个用户可以“按需”消费该服务。

云计算可分为三类

  1. 平台即服务(PaaS)
  2. 基础设施即服务(IaaS)
  3. 软件即服务(SaaS)

本文将深入探讨云计算的软件即服务(SaaS)类别。

云可以是私有的,也可以是公有的。公共云向互联网上的任何人销售服务。私有云是专有网络或数据中心,为有限数量的人提供托管服务。当服务提供商使用公共云资源来创建其私有云时,结果称为虚拟私有云。无论是私有云还是公共云,云计算的目标都是提供便捷、可扩展的计算资源和 IT 服务访问。

所有大型公司都推出了自己的基于代码或非基于代码的云计算框架。一些最突出的基于代码的框架是

  1. Java Google Web Toolkit(Google App Engine)。
  2. Python Djangno(Google App Engine)
  3. Ruby on Rails
  4. Microsoft .NET(Azure 服务平台)

有许多独立软件供应商(ISV)(例如 Mosso)提供了一个平台来托管基于云的解决方案。

SaaS 的定位

SaaS 是云计算的方法之一,它基于“一对多”模型,其中应用程序在多个客户端之间共享。软件即服务(SaaS)的确切定义存在争议,询问不同的人可能会得到不同的定义。每个人都相信 SaaS 将对软件行业产生重大影响,因为软件即服务将改变人们构建、销售、购买和使用软件的方式。然而,要实现这一点,软件供应商需要有关有效开发 SaaS 应用程序的资源和信息。尽管如此,大多数专家可能会同意一些基本原则,这些原则将 SaaS 与传统打包软件以及简单的网站区分开来。最简单的说法是,软件即服务可以被描述为“部署为托管服务并通过互联网访问的软件”。

软件即服务(或 SaaS)是一种通过互联网交付应用程序作为服务的方式。您无需安装和维护软件,只需通过互联网访问它,从而摆脱复杂的软件和硬件管理。SaaS 应用程序有时被称为基于 Web 的软件、按需软件或托管软件。无论名称如何,SaaS 应用程序都在 SaaS 提供商的服务器上运行。提供商负责管理对应用程序的访问,包括安全性、可用性和性能。SaaS 客户无需购买、安装、维护或更新任何硬件或软件。访问应用程序非常简单:您只需要互联网连接。这种类型的云计算通过浏览器向成千上万的客户交付单个应用程序,并使用多租户架构。在客户方面,这意味着无需预先投资服务器或软件许可;在提供商方面,由于只有一个应用程序需要维护,与传统托管相比,成本很低。

Salesforce.com 是企业应用程序中提供 CRM 解决方案作为 SaaS 的最知名例子,但 SaaS 也普遍用于 HR 应用程序,并且甚至通过 Workday 等公司进入了 ERP 领域。除此之外,一些桌面应用程序,如 Google Apps 和 Zogo Office,也在市场上留下了自己的印记。

深入了解:SaaS

让我们更深入地探讨 SaaS 的基本原则,即部署为托管服务并通过互联网访问的软件。我们可以得出 SaaS 的两大类别

  1. 业务线服务,提供给各种规模的企业和组织。业务线服务通常是大型、可定制的业务解决方案,旨在促进财务、供应链管理和客户关系等业务流程。这些服务通常按订阅方式出售给客户。
  2. 面向消费者的服务,提供给公众。面向消费者的服务有时按订阅方式出售,但通常免费提供给消费者,并由广告支持。

从提供本地软件转向提供软件即服务,需要软件供应商在三个相互关联的领域改变思维方式:商业模式、应用程序架构和运营结构。

商业模式

大多数软件的销售方式与几十年前相同。客户购买软件使用许可,并将其安装在客户自己的硬件或客户控制的硬件上,供应商根据许可协议或支持协议的条款提供支持。在诚实、正当的软件交易中,“许可”的概念可能有点技术性:从法律上讲,客户只是购买了使用软件副本的权利,但出于实际目的,这就像客户“拥有”软件,并可以根据需要频繁、长期地使用它。SaaS 带来了一个新的概念,即客户不再“拥有”重要的软件,而是被告知可以付费订阅在他人服务器上运行的软件,如果他们停止订阅,该软件将消失。

让我们从另一个角度来看。基本上,一家公司的 IT 基础设施包含三个组成部分

  1. 软件
  2. 硬件
  3. 专业服务

其中,从组织的角度来看,软件是最重要的方面,因为软件是帮助他们完成组织目标的组成部分。而硬件和专业服务则使软件能够运行并产生组织所需的成果。换句话说,如果现有硬件能够有效地运行新的软件/功能,组织将乐于在不增加硬件的情况下添加新的软件或功能,但如果没有预期的对新软件的需求,任何组织都不会添加新硬件。

但目前的情况是,大部分预算都花在了硬件和运行软件的软件专业人员身上。这使得用于软件的预算比例很小,而软件是直接涉及信息管理的,这是一家 IT 组织的最终目标。

相比之下,如果组织可以从远程位置消耗由第三方 SaaS 供应商管理的这些软件,并且他们只需要支付该软件的订阅费用,那么他们的预算中很大一部分可以节省在硬件和专业服务上,因为硬件和专业服务将由第三方 SaaS 供应商管理。这将使他们能够将大部分预算用于软件服务,这将对实现组织目标产生直接影响。此外,通过 Web 或智能客户端交付的应用程序对桌面计算机的要求比传统的本地安装应用程序要低得多,这使得客户能够显著延长桌面技术的生命周期。

从 SaaS 提供商的角度来看,对于能够良好扩展的 SaaS 应用程序,随着客户数量的增加,每个客户的运营成本将继续下降。随着这种情况的发生,提供商将开发多租户作为核心竞争力,从而以更低的成本提供更高质量的产品。因此,即使考虑到 SaaS 供应商产生的硬件和专业服务成本,客户仍然可以用相同的 IT 预算获得显著更多的纯软件功能。

一个小问题,这难道不是童话吗,因为软件服务的订阅也包括服务器管理和专业服务?答案是“”,其背后的魔力是“规模经济”。一个 SaaS 供应商拥有 X 个订阅同一、集中托管的软件服务的客户,使供应商能够在集中化的环境中为所有客户提供服务。例如,安装在五个服务器的负载均衡集群中的业务线 SaaS 应用程序可能能够支持 50 个中型客户,这意味着每个客户只需承担服务器成本的十分之一。类似地,在本地安装的应用程序可能要求每个客户将一台服务器专用于该应用程序——如果涉及负载均衡和高可用性,可能不止一台。

显然,对消费者(最终用户)和提供商来说,都有很多好处。我们可以将一些核心要点总结如下

要实现 SaaS 的好处,提供商和客户双方都需要改变思维方式,而提供商有责任帮助客户完成这种转变。

应用程序架构

听起来不错?但是,应用程序将如何构建,以便最终用户和提供商能够最大程度地从中受益?

与任何其他软件一样,软件即服务也可以利用面向服务的架构(SOA)来使软件应用程序相互通信。每个软件服务都可以充当服务提供商,通过公共代理将其功能暴露给其他应用程序,也可以充当服务请求者,整合来自其他服务的数据和功能。

重要的是要理解,SaaS 方法要求系统架构能够支持高峰使用需求,并能在安全可靠的环境中处理大量事务。软件需要满足某些标准才能在这种模型下工作。该应用程序需要设计得当,以维持并提供传统桌面应用程序的可扩展性和易用性。有三个关键点可以区分成功的 SaaS 应用程序和不成功的 SaaS 应用程序

  • 可扩展性:扩展应用程序意味着最大化并发性并更有效地利用应用程序资源;例如,优化锁定时间、无状态性、共享线程和网络连接等池化资源、缓存引用数据以及分区大型数据库。
  • 多租户高效:多租户可能是架构师在设计隔离的单租户应用程序时需要做出的最重大的范式转变。例如,当一家公司的用户通过使用 CRM 应用程序服务访问客户信息时,用户连接到的应用程序实例可能正在为数十家甚至数百家其他公司的用户提供服务——所有这些对用户来说都是完全抽象的。这需要一种能够最大化租户之间资源共享,但仍能区分属于不同客户数据的架构。
  • 可配置:如果单个服务器上的单个应用程序实例必须同时容纳来自多个不同公司的用户,您就不能仅仅编写自定义代码来定制最终用户体验——您为某个客户定制应用程序的任何操作都会改变其他客户的应用程序。因此,与其按传统方式定制应用程序,不如让每个客户使用元数据来配置应用程序的外观和行为。SaaS 架构师面临的挑战是确保为客户配置应用程序的任务简单易行,而无需为每次配置产生额外的开发或运营成本。

有四种在 SaaS 架构上托管应用程序的方式。这些也称为 SaaS 的成熟度模型

  • 临时/自定义:它类似于传统的应用程序服务提供商(ASP)软件交付模式,可以追溯到 20 世纪 90 年代。每个客户都有自己定制的托管应用程序版本,并在主机服务器上运行自己的应用程序实例。
  • 可配置:供应商为每个客户(或租户)托管一个单独的应用程序实例。与前一个不同,每个实例都单独为租户定制;在此级别,所有实例都使用相同的代码实现,并且供应商通过提供详细的配置选项来满足客户的需求,这些选项允许客户更改应用程序的外观和行为。尽管在代码级别上彼此相同,但每个实例仍然与其他实例完全隔离。
  • 可配置,多租户高效:供应商运行一个单一实例,为所有客户提供服务,可配置的元数据为每个客户提供独特的用户体验和功能集。授权和安全策略确保每个客户的数据与其他客户的数据分开;并且,从最终用户的角度来看,没有迹象表明应用程序实例被多个租户共享。这种方法消除了为供应商的客户数量提供服务器空间的需求,从而比第二个级别更有效地利用计算资源,这直接转化为更低的成本。这种方法的一个显着缺点是应用程序的可扩展性受到限制。
  • 可扩展,可配置,多租户高效:供应商在相同的实例的负载均衡集群上托管多个客户,每个客户的数据分开,并且可配置的元数据为每个客户提供独特的用户体验和功能集。

高层架构

SaaS 经济优势的关键在于使用“通过配置进行定制”和智能数据分区的架构。没有这两个要素,您可能无法超越第一个成熟度级别(临时/自定义)并认识到多租户的效率。

SaaS 的基本架构与任何 SOA(面向服务的架构)应用程序非常相似。可能,一些增加是两个额外的层

  1. 元数据服务:元数据服务为客户提供了定制和配置应用程序以满足其需求的主要手段。通常,这可以分为广义的几个领域:用户界面和品牌、工作流和业务规则、数据模型访问控制的扩展。
  2. 安全服务:SaaS 提供商通常将创建和维护自己的用户帐户的责任委托给每个租户,这个过程称为委托管理。委托管理造成的情况是,客户负责创建个人用户帐户,但供应商必须对其进行身份验证。通常,SaaS 应用程序中的资源和业务功能访问是通过使用映射到组织内特定工作职能的角色来管理的。每个角色都授予一个或多个权限,允许分配给该角色的用户根据任何相关的业务规则执行操作。

大型企业软件旨在供数千人同时使用。如果您有构建此类企业应用程序的经验,您将亲身体验创建可扩展架构的挑战。对于 SaaS 应用程序来说,可扩展性更为重要:您必须支持单个客户的平均用户基础,乘以您拥有的客户总数。应用程序可以纵向扩展(通过将应用程序迁移到更大、更强大的服务器)和横向扩展(通过在更多服务器上运行应用程序)。专家们在设计 SaaS 应用程序时遵循的一些常见最佳实践是

  • 将应用程序设计为无状态运行,将任何必需的用户和会话数据存储在客户端,或存储在任何应用程序实例都可以访问的分布式存储中。无状态意味着每个事务都可以由一个实例或任何其他实例处理;用户在单个会话期间可以与数十个不同的实例进行事务处理,而无需意识到。
  • 将应用程序设计为异步执行 I/O 操作,以便应用程序在等待输入输出完成的同时可以执行有用的工作。
  • 池化资源,如线程、网络连接和数据库连接;这有助于最大化您的计算资源,并提高您预测资源使用情况的能力。
  • 以最大化并发性和最小化独占锁定的方式编写数据库操作。例如,在执行只读操作时不要锁定记录。

根据为 SaaS 实现选择的成熟度模型,数据库模式会有所不同。考虑到多租户,数据库模式可以是

共享数据库、共享模式(适用于临时/自定义和配置成熟度模型) 共享数据库、单独模式(适用于配置、多租户高效成熟度模型)和 单独数据库(适用于可扩展、可配置、多租户成熟度模型)。

结论

云计算和 SaaS 肯定会极大地影响我们当前的工作方式。通过 HTTP 网络消费和公开所有软件服务将使组织的 IT 基础设施完全依赖于互联网媒介。对于这种依赖性,已经存在批评和反批评。如果 SaaS 完全投入使用,它可能会解决软件行业的一个主要问题,即每年导致应用程序开发公司损失数十亿美元,那就是非法盗版软件。时间会证明一切。

© . All rights reserved.