从计算机诞生开始,就伴随着计算机应用程序的演变。简短的回顾历史,我们可以清楚的看到应用程序发生的巨大变化。上世纪70年代中期,随着个人PC机的爆炸式增长以及程序员的崛起,让计算机的计算能力得到了大跨越的提升,个人PC机上可以运行非常复杂的应用程序。

进入上世纪80年代,随着Bulletin Board
System(简称:BBS)电子公告板系统的兴起,它可以为广大PC机用户提供基本的在线服务,如在线聊天、电子邮件、消息发送和文件下载。由于受到那个时代计算机网络传输速度的限制,在线服务的响应速度慢,交互体验差是最大的通病。

进入90年代中后期,随着万维网的出现,计算机的计算能开始进入快速提升阶段,加之网络基础设施的持续完善,计算机网络技术也随之发展起来,这让Web网站可以提供功能多元化和更为复杂的在线服务,直到今天,我们所看到的互联网(或云)开发的在线服务应用程序。

在这段计算机技术快速成长的时间里,计算机软件到底发生了哪些变化?从历史的发展中,我们可以看到,应用程序本身没有发生本质的变化(程序=数据结构+算法),变化的是软件的供需方式发生了改变。现在,应用程序消费者不需要再在他们的PC机上下载和安装特定的应用程序,即可获得软件所提供的计算服务。在云计算技术的支持下,消费者(企业或个人)只需要使用Web工具(浏览器)访问并登录软件提供商的Web系统,通过简单的配置,就可以获得自己所需应用程序服务。这种通过网络即可使用软件的服务,即使SaaS(软件即服务)。

图 1-1 2015中国SaaS生态

在本篇文章中,我们将着重介绍SaaS架构设计,并围绕WHAT(是什么?)、WHY(为什么?)、WHERE(在哪里?)和HOW(怎么样?)这四个问题,对以下的几点进行阐述:

图 1-2 文章结构

1、什么是SaaS软件?

2、为什么需要使用SaaS软件架构?
3、SaaS软件主要的特性和优势有哪些?
4、SaaS软件适合在什么领域进行实施?
5、SaaS软件有哪些先天性的缺陷?
6、SaaS软件有哪些核心的组件?
7、实施SaaS架构设计时的注意事项有哪些?
2、什么是SaaS软件?

图 2-1 SaaS组成结构

在你决定实施SaaS品台架构设计前,你有必要先了解SaaS软件是什么。从宏观的角度来看,SaaS是一种软件应用程序交付方式,软件提供商集中化托管一个或多个软件应用程序,并通过互联网向租户体用这些软件应用程序。从分类上看,SaaS(软件即服务)也是云计算重要的一部分。目前国内主流的云服务提供商如阿里云、百度云、腾讯云等,为广大用户提供了不同业务需求的云服务,它们大致可以分为以下几类:

1、基础设施即服务:如CPU、Network、Disk和Memory等
2、平台即服务:如阿里云服务器和云数据库等
3、软件即服务:阿里短信、阿里邮箱等
4、数据即服务:如阿里云对象存储,七牛云存储等
5、其他软件服务:机器学习、人工智能等
SaaS应用程序的任何更新或者修复漏洞操作都是由软件提供商负责实施和处理的,由于租户是通过互联网获取软件服务,所以租户端无需下载任何的升级包或者修复补丁,是一种开箱即获取最新软件产品的服务方式。

通过对什么是SaaS的介绍,接下来,我们了解一下选择SaaS作为软件架构来设计产品的一些理由。

3、为什么选择SaaS?
我们将从不同的角度来阐述几个为什么选择SaaS的理由。透过对这些因素的分析,为你是否需要将自己的软件SaaS化提供一定的参考依据。

3.1、消费者角度
获取软件服务的方式足够简单,SaaS也许是迄今为止使用软件最简单的方式之一,租户只需要动动鼠标和键盘,即可在几小时甚至几分钟内获得一个大型的软件服务。相比于传统使用软件的方式,租户省去了研发、部署、运维等一系列繁复的过程,且获得软件的时间和费用成本都大幅度降低。

3.2、商业角度
SaaS可以体用跨地域、跨平台的软件服务。与此同时,软件服务商可以统一对软件进行版本管理,这将带来以下几点好处(包括但不限于):

1、缩短产品上线时间:多端适配,统一版本,统一更新
2、降低维护成本:不需要同时维护多个版本的软件实例,运维压力减小
3、容易升级:由于版本得到有效控制,一次升级,即可覆盖所有租户端
4、SaaS的特性和优势
我们将SaaS应用程序与传统的桌面应用程序做一个水平的对比,部署一个SaaS产品将可以获得以下的几点优势。

4.1、简单
SaaS化的产品通过互联网向租户提供软件服务,随着Web技术(如jQuery、Node.js)的进步,Web页面的交互体验度大幅度提升,交互更流畅、更人性化。与传统的桌面应用程序的人机交互效果相差无几。

4.2、经济实惠
SaaS化产品可以为租户提供弹性的付费方案,如按日、按月、按年、按使用人数或者按使用量进行计费,它将给租户提供更经济的使用软件的财务预算表。

4.3、安全
使用SaaS产品无需担心数据安全问题,这好比将钱存入银行一样安全。相较于企业内部部署的软件系统而言,SaaS产品具备更高的安全保障能力,因为软件提供商具有更多软件安全防护的技术资源、人力资源和财政资源。

4.4、兼容性
与传统软件相比、SaaS软件的兼容性更好,它没有传统软件的多本版维护问题和操作系统兼容问题。在SaaS软件中,租户用户在使用软件的过程中,几乎上感觉不到软件发生了改变。当租户用户登录到系统上时,就已经获得了最新版本的软件。

5、SaaS软件的适用范围
SaaS产品具有广泛的适应范围,特别是与其他云产品(如IaaS(基础设施即服务)和PaaS(平台即服务))配合使用时这种能力表现尤为突出,例如阿里云之类的云计算技术允许你配置可托管的Web站点、数据库服务器等。你只需要打开浏览器并登录到阿里云控制台,通过操作对应的控制面板,即可获得相关的软件服务。

从理论上讲,SaaS可以将任何的软件SaaS,下面列举一些通用的分类供大家参考:

1、Office在线办公类SaaS产品
2、电子邮件和即时消息类SaaS产品
3、社交媒体类SaaS产品
4、第三方API类SaaS产品
5、安全和访问控制类SaaS产品
6、机器学习类SaaS产品
7、人工智能类SaaS产品
8、地理位置服务类SaaS产品
9、数据流和数据检索类SaaS产品
6、SaaS产品的天生缺陷

图 6-1 SaaS产品的缺点

从上图我们可以直观的看到,SaaS产品与生俱来的几个缺陷,接下来我们将逐一进行描述。

6.1、软件控制权
与企业内部部署的软件不同,由于SaaS软件被击中托管在服务提供商的Web服务器中,所以租户无法控制所有的软件应用程序,SaaS化的软件比企业自行部署的软件获得的控制权更少,租户可操作的自定义控制权极度有限。

6.2、消费者基数小
由于SaaS软件是将一套应用程序共享给一个或者多个租户共同使用,这种共享的消费方式还未被大多数的消费者所接受。同时,受制于市场环境的影响,目前还有大多数的软件还未SaaS化。

6.3、性能瓶颈
共享应用程序必然会带来服务器性能的下降、如计算速度、网络资源、I/O读写等都将面临严峻的考验。在性能方面,企业内部部署的“独享模式”的应用程序比SaaS软件的“共享模式”略胜一筹。

6.4、安全问题
当租户在选择一款SaaS产品时,产品的安全性将会被放置在第一位进行考虑。如数据的隔离、敏感数据的加密、数据访问权限控制、个人隐私等问题。在2018年5月25日,GDPR(General
Data Protection
Regulation)《通用数据保护条例》出现之后,越来越多的人开始重视数据安全问题。如何最大程度的打消租户的这一顾虑,需要服务提供商加强对自身可信度度的提升,以赢得租户的信赖。

7、SaaS产品的核心组件
不同类型的SaaS产品,由于要面对不同的用户愿景,可能在功能和业务上会有所不同,但任何一个SaaS产品,都具备以下几个共同的核心组件。

图 7-1 SaaS 核心组件

7.1、安全组件
在SaaS产品中,系统安全永远是第一位需要考虑的事情,如何保障租户数据的安全,是你首要的事情。这如同银行首选需要保障储户资金安全一样。安全组件就是统一的对SaaS产品进行安全防护,保障系统数据安全。

7.2、数据隔离组件
安全组件解决了用户数据安全可靠的问题,但数据往往还需要解决隐私问题,各企业之间的数据必须相互不可见,即相互隔离。在SaaS产品中,如何识别、区分、隔离个租户的数据时你在实施SaaS软件架构设计时需要考虑的第二个问题。

7.3、可配置组件
尽管SaaS产品在设计之初就考虑了大多数通用的功能,让租户开箱即用,但任然有为数不少的租户需要定制服务自身业务需求的配置项,如UI布局、主题、标识(Logo)等信息。正因为无法抽象出一个完全通用的应用程序,所以在SaaS产品中,你需要提供一个可用于自定义配置的组件。

7.4、可扩展组件
随着SaaS产品业务和租户数量的增长,原有的服务器配置将无法继续满足新的需求,系统性能将会与业务量和用户量成反比。此时,SaaS产品应该具备水平扩展的能力。如通过网络负载均衡其和容器技术,在多个服务器上部署多个软件运行示例并提供相同的软件服务,以此实现水平扩展SaaS产品的整体服务性能。为了实现可扩展能力,就需要SaaS展示层的代码与业务逻辑部分的代码进行分离,两者独立部署。例如使用VUE+微服务构建前后端分离且可水平进行扩展的分布式SaaS应用产品。对于可扩展,还有另外一种方式,即垂直扩展,其做法比较简单,也比较粗暴:通过增加单台服务器的配置,如购买性能更好的CUP、存储更大的内存条、增大带宽等措施,让服务器能够处理更多的用户请求。但此做法对于提升产品性能没有质的改变,且成本很高。

7.5、0停机时间升级产品
以往的软件在升级或者修复Bug是,都需要将运行的程序脱机一段时间,等待升级或修复工作完成后,再重新启动应用程序。而SaaS产品则需要全天候保障服务的可用性。这就需要你考虑如何实现在不重启原有应用程序的情况下,完成应用程序的升级修复工作。

7.6、多租户组件
要将原有产品SaaS化,就必须提供多租户组件,多租户组件是衡量一个应用程序是否具备SaaS服务能力的重要指标之一。SaaS产品需要同时容纳多个租户的数据,同时还需要保证各租户之间的数据不会相互干扰,保证租户中的用户能够按期望索引到正确的数据,多租户组件是你必须要解决的一个问题。其余的组件都将围绕此组件展开各自的业务。

总结
本文将软件应用程序的发展历程作为切入点,并围绕WHAT(是什么?)、WHY(为什么?)、WHERE(在哪些领域实施?)和HOW(怎么样?)这四个问题对SaaS展开了介绍。文中详细的阐述了基于SaaS架构的软件设计需要注意的问题,并分析了SaaS产品的特性、有点、缺点。最后还介绍了基于SaaS架构的软件产品应该具备的几个核心组件以及他们各自的作用。希望本次能够让你对SaaS软件架构有一个全面的了解,并且在你准备实施SaaS软件架构设计前能够提供一些价值的参考信息。

推荐文章
Spring Boot 构建多租户 SaaS 平台核心技术指南
Saas 系统架构经验总结
百万级商品数据实时同步,查询结果秒出
详解阿里数据中台架构
学习资料分享
12 套 微服务、Spring Boot、Spring Cloud 核心技术资料,这是部分资料目录:

Spring Security 认证与授权
Spring Boot 项目实战(中小型互联网公司后台服务架构与运维架构)
Spring Boot 项目实战(企业权限管理项目))
Spring Cloud 微服务架构项目实战(分布式事务解决方案)
...

一篇文章让你认识什么是saas模式相关推荐

  1. SaaS模式、技术与案例详解——第11章 可配置性

    [本章导读语] 东临碣石,以观沧海. ________曹操,<观沧海> 就成熟的SaaS应用而言,元数据服务供应商为客户提供了定制和配置应用.满足其特定需求的主要手段. SaaS模式的可配 ...

  2. 一篇文章告诉你标准化和归一化的区别?

    一篇文章告诉你标准化和归一化的区别? 2019-02-28 17:12:39 融融网融融网阅读量:484 进一步推进企业的标准化工作,使之发展水平适应经济全球化下市场竞争的要求,促进企业综合实力的提升 ...

  3. 一篇文章让你读懂Pivotal的GemFire家族产品

    一篇文章让你读懂Pivotal的GemFire家族产品 学习了:https://www.sohu.com/a/217157517_747818 转载于:https://www.cnblogs.com/ ...

  4. DEDECMS教程:上/下一篇文章标题长度的截取方法

    对dedecms了解的朋友们,想必对如何获取上一篇.下一篇文章的标签也是非常熟悉.dedecms获取上一篇.下一篇文章的标签分别为:{dede:prenext get='pre'/}.{dede:pr ...

  5. 一篇文章一张思维导图看懂Android学习最佳路线

    一篇文章一张思维导图看懂Android学习最佳路线 先上一张android开发知识点学习路线图思维导图 Android学习路线从4个阶段来对Android的学习过程做一个全面的分析:Android初级 ...

  6. UML科普文,一篇文章掌握14种UML图

    前言 上一篇文章写了一篇建造者模式,其中有几个UML类图,有的读者反馈看不懂了,我们今天就来解决一哈. 什么是UML? UML是Unified Model Language的缩写,中文是统一建模语言, ...

  7. 用一篇文章说清楚如何写作

    专门讲写作的书就有一大堆,这事能用一篇文章说清楚吗? 答案是能的,不信你往下看. 写之前要先弄清楚文章属于什么类型,类型不同写法当然不一样.以沟通为目的的文章最好写,虚构类文章不好写,因为你还要先虚构 ...

  8. 一篇文章告诉你如何成为数据科学家

    文章讲的是一篇文章告诉你如何成为数据科学家,通常来说,年轻人都很容易立志成为什么,例如成为一名科学家,然后又很快放弃.这一方面是因为摆在他们面前的诱惑太多,也因为成为一名科学家真的很不容易. 这一点放 ...

  9. Android:学习AIDL,这一篇文章就够了(下)

    前言 上一篇博文介绍了关于AIDL是什么,为什么我们需要AIDL,AIDL的语法以及如何使用AIDL等方面的知识,这一篇博文将顺着上一篇的思路往下走,接着介绍关于AIDL的一些更加深入的知识.强烈建议 ...

  10. Android:学习AIDL,这一篇文章就够了(上)

    前言 在决定用这个标题之前甚是忐忑,主要是担心自己对AIDL的理解不够深入,到时候大家看了之后说--你这是什么玩意儿,就这么点东西就敢说够了?简直是坐井观天不知所谓--那样就很尴尬了.不过又转念一想, ...

最新文章

  1. IE6/7 BUG 图片不能居中
  2. Hystrix Health Indicator及Metrics Stream
  3. 微信小程序android错误,app安卓端 跳转到微信小程序失败
  4. 基于知识图谱的问答系统实践
  5. Unity3DGUI:Window
  6. Uva 1025 - A Spy in the Metro(DP)
  7. 一起来玩树莓派--在docker内安装conda(python3.6)
  8. 计算机会计简要回答会计电算化的作用,会计电算化在学校财务管理中的作用
  9. 手动添加linux用户
  10. 循环下标_【转】【Python效率】五种Pandas循环方法效率对比
  11. 对美食评语进行情感分析
  12. 熟练运用计算机进行数学教案,小学数学与信息技术整合教案
  13. MATLAB 比较好入门书籍有哪些推荐
  14. linux下怎么解压tar.gz,linux下怎么解压.tar.gz .tar.bz2命令
  15. 撰写论文时如何复制参考文献公式----Mathpix及Mathtype教程
  16. 【模板一】计算机XXXX系统-毕业设计
  17. DBSCAN聚类算法实用案例
  18. JAVA WEB开发技术作业 HTML国家奖学金申请审批表
  19. HC3i论坛医疗信息化热门资源100个
  20. (五)Latex特殊符号

热门文章

  1. 环境配置 python 3.6+Anaconda+cuda9.0+cudNN7.0+Tensorflow
  2. Windows漏洞修复报告
  3. 如何培养项目管理的领导力?
  4. 手把手和你用原生JS写一个循环播放图片轮播
  5. 以太网帧机构 ,mtu ,分包原理 tcp的三次握手,四次挥手
  6. 电影《鬼子来了》观后感
  7. 通过关键词爬取百度图片——Python爬虫
  8. 51nod 1272 最大距离 By Assassin
  9. Scrum立会报告+燃尽图(十月二十六日总第十七次)
  10. AIBOX-32路智能园区安全视频流分析AI服务器