前言
首先云服务器可以分为
- IaaS:基础设施即服务,
Infrastructure-as-a-service - PaaS:平台即服务,
Platform-as-a-service - SaaS:软件即服务,
Software-as-a-service - 数据即服务:如阿里云对象存储,七牛云存储等
- 其他软件服务:机器学习、人工智能等
公司要开发一个SaaS云服务器的软件,借此来加深下lasS,PaaS,SaaS的概念及区别
比喻lasS,PaaS,SaaS
请设想你是一个餐饮业者,打算做披萨生意。
你可以从头到尾,自己生产披萨,但是这样比较麻烦,需要准备的东西多,因此你决定外包一部分工作,采用他人的服务。你有三个方案。
(1)方案一:IaaS
他人提供厨房、炉子、煤气,你使用这些基础设施,来烤你的披萨。
(2)方案二:PaaS
除了基础设施,他人还提供披萨饼皮。
你只要把自己的配料洒在饼皮上,让他帮你烤出来就行了。也就是说,你要做的就是设计披萨的味道(海鲜披萨或者鸡肉披萨),他人提供平台服务,让你把自己的设计实现。
(3)方案三:SaaS
他人直接做好了披萨,不用你的介入,到手的就是一个成品。你要做的就是把它卖出去,最多再包装一下,印上你自己的 Logo。

从左到右,自己承担的工作量(上图蓝色部分)越来越少,IaaS > PaaS > SaaS。
对应软件开发,则是下面这张图。

SaaS 是软件的开发、管理、部署都交给第三方,不需要关心技术问题,可以拿来即用。普通用户接触到的互联网服务,几乎都是 SaaS,下面是一些例子。
- 客户管理服务 Salesforce
- 团队协同服务 Google Apps
- 储存服务 Box
- 储存服务 Dropbox
- 社交服务 Facebook / Twitter / Instagram
PaaS 提供软件部署平台(runtime),抽象掉了硬件和操作系统细节,可以无缝地扩展(scaling)。开发者只需要关注自己的业务逻辑,不需要关注底层。下面这些都属于 PaaS。
- Heroku
- Google App Engine
- OpenShift
IaaS 是云服务的最底层,主要提供一些基础资源。它与 PaaS 的区别是,用户需要自己控制底层,实现基础设施的使用逻辑。下面这些都属于 IaaS。
- Amazon EC2
- Digital Ocean
- RackSpace Cloud
SaaS详细介绍
我们将着重介绍SaaS架构设计,并围绕WHAT(是什么?)、WHY(为什么?)、WHERE(在哪里?)和HOW(怎么样?)这四个问题
什么是SaaS?
从宏观的角度来看,SaaS是一种软件应用程序交付方式,软件提供商集中化托管一个或多个软件应用程序,并通过互联网向租户体用这些软件应用程序;从分类上讲SaaS也是云计算的一部分
SaaS应用程序的任何更新或者修复漏洞操作都是由软件提供商负责实施和处理的,由于租户是通过互联网获取软件服务,所以租户端无需下载任何的升级包或者修复补丁,是一种开箱即获取最新软件产品的服务方式。
为什么选择SaaS?
1.消费者角度
获取软件服务的方式足够简单,SaaS也许是迄今为止使用软件最简单的方式之一,租户只需要动动鼠标和键盘,即可在几小时甚至几分钟内获得一个大型的软件服务。相比于传统使用软件的方式,租户省去了研发、部署、运维等一系列繁复的过程,且获得软件的时间和费用成本都大幅度降低
2.商业角度
SaaS可以体用跨地域、跨平台的软件服务。与此同时,软件服务商可以统一对软件进行版本管理,这将带来以下几点好处(包括但不限于):
1、缩短产品上线时间:多端适配,统一版本,统一更新
2、降低维护成本:不需要同时维护多个版本的软件实例,运维压力减小
3、容易升级:由于版本得到有效控制,一次升级,即可覆盖所有租户端
SaaS的特性及优势是什么?
1.简单
2.经济实惠
3.安全
4.兼任性
SaaS软件的适用范围
从理论上讲,SaaS可以将任何的软件SaaS,下面列举一些通用的分类供大家参考:
1、Office在线办公类SaaS产品
2、电子邮件和即时消息类SaaS产品
3、社交媒体类SaaS产品
4、第三方API类SaaS产品
5、安全和访问控制类SaaS产品
6、机器学习类SaaS产品
7、人工智能类SaaS产品
8、地理位置服务类SaaS产品
9、数据流和数据检索类SaaS产品
SaaS产品的缺陷
1.软件控制权
与企业内部部署的软件不同,由于SaaS软件被击中托管在服务提供商的Web服务器中,所以租户无法控制所有的软件应用程序,SaaS化的软件比企业自行部署的软件获得的控制权更少,租户可操作的自定义控制权极度有限。
2.消费者基数小
由于SaaS软件是将一套应用程序共享给一个或者多个租户共同使用,这种共享的消费方式还未被大多数的消费者所接受。同时,受制于市场环境的影响,目前还有大多数的软件还未SaaS化
3.性能瓶颈
共享应用程序必然会带来服务器性能的下降、如计算速度、网络资源、I/O读写等都将面临严峻的考验。在性能方面,企业内部部署的“独享模式”的应用程序比SaaS软件的“共享模式”略胜一筹。
4.安全问题
当租户在选择一款SaaS产品时,产品的安全性将会被放置在第一位进行考虑。如数据的隔离、敏感数据的加密、数据访问权限控制、个人隐私等问题。
SaaS产品的核心组件
不同类型的SaaS产品,由于要面对不同的用户愿景,可能在功能和业务上会有所不同,但任何一个SaaS产品,都具备以下几个共同的核心组件。
安全组件
在SaaS产品中,系统安全永远是第一位需要考虑的事情,如何保障租户数据的安全,是你首要的事情。这如同银行首选需要保障储户资金安全一样。安全组件就是统一的对SaaS产品进行安全防护,保障系统数据安全。
数据隔离组件
安全组件解决了用户数据安全可靠的问题,但数据往往还需要解决隐私问题,各企业之间的数据必须相互不可见,即相互隔离。在SaaS产品中,如何识别、区分、隔离个租户的数据时你在实施SaaS软件架构设计时需要考虑的第二个问题。
可配置组件
尽管SaaS产品在设计之初就考虑了大多数通用的功能,让租户开箱即用,但任然有为数不少的租户需要定制服务自身业务需求的配置项,如UI布局、主题、标识(Logo)等信息。正因为无法抽象出一个完全通用的应用程序,所以在SaaS产品中,你需要提供一个可用于自定义配置的组件。
可扩展组件
随着SaaS产品业务和租户数量的增长,原有的服务器配置将无法继续满足新的需求,系统性能将会与业务量和用户量成反比。此时,SaaS产品应该具备水平扩展的能力。如通过网络负载均衡其和容器技术,在多个服务器上部署多个软件运行示例并提供相同的软件服务,以此实现水平扩展SaaS产品的整体服务性能。为了实现可扩展能力,就需要SaaS展示层的代码与业务逻辑部分的代码进行分离,两者独立部署。例如使用VUE+微服务构建前后端分离且可水平进行扩展的分布式SaaS应用产品。对于可扩展,还有另外一种方式,即垂直扩展,其做法比较简单,也比较粗暴:通过增加单台服务器的配置,如购买性能更好的CUP、存储更大的内存条、增大带宽等措施,让服务器能够处理更多的用户请求。但此做法对于提升产品性能没有质的改变,且成本很高。
0停机时间升级产品
以往的软件在升级或者修复Bug时,都需要将运行的程序脱机一段时间,等待升级或修复工作完成后,再重新启动应用程序。而SaaS产品则需要全天候保障服务的可用性。这就需要你考虑如何实现在不重启原有应用程序的情况下,完成应用程序的升级修复工作。
多租户组件
要将原有产品SaaS化,就必须提供多租户组件,多租户组件是衡量一个应用程序是否具备SaaS服务能力的重要指标之一。SaaS产品需要同时容纳多个租户的数据,同时还需要保证各租户之间的数据不会相互干扰,保证租户中的用户能够按期望索引到正确的数据,多租户组件是你必须要解决的一个问题。其余的组件都将围绕此组件展开各自的业务。