前言
最近被一个真-大佬问了几个问题: 你觉得做SaaS平台最大的难点在哪里,怎么解决客户的不同需求。(其实第二个问题已经是第一个问题的答案了)。自己做了很久的各式各样的系统平台,也从没将完成的业务系统准确定位过,加上目前业务遇到一些商业的瓶颈,这些都促使自己想弄清楚自己所在的系统平台的定位和以后发展的方向,所以有了本篇的知识整理。
1. 模式定义
- IaaS:基础设施服务,Infrastructure-as-a-service, 把基础设施作为一种服务通过网络对外提供。 在这种服务模型中,用户通过租用的方式来使用基础设施服务,包括服务器、存储和网络等。
- PaaS:平台服务,Platform-as-a-service,是指用来支持 Web 应用程序的完整生命周期:生成、测试、部署、管理和更新的平台,包括了完整开发和部署环境,用户可使用其中资源交付应用内容。用户以即用即付的方式从云服务提供商处购买所需资源,并通过安全连接访问这些资源。其中PaaS 包括服务器、存储空间和网络等基础结构,还包括中间件、开发工具、商业智能 (BI) 服务和数据库管理系统等运维工具。
- SaaS:软件服务,Software-as-a-service,是一种通过互联网方式提供软件服务的模式,厂商将软件统一部署在服务器上,客户可以根据自己实际需求,通过互联网厂商定购所需要的应用软件服务,按定购的服务多少和时间长短向厂商支付费用,并通过互联网获得厂商的服务。用户不再购买软件,而改用向提供商租用基于Web的软件,来管理企业经营活动,且无需对软件进行维护,服务提供商会全权管理和维护软件,软件厂商向客户提供互联网应用的同时,也提供软件的离线操作和本地数据存储, 让用户随时随地可以使用其定购的软件和服务。
2.模式具体介绍
2.1 IaaS模式
云服务提供商负责管理机房基础设施、计算机网络、磁盘柜、服务器和虚拟机,租户自己安装和管理操作系统、数据库、中间件、应用软件和数据信息,所以 IaaS 云服务的消费者一般是掌握一定技术的系统管理。IaaS 云服务提供商计算租赁费用的因素包括 CPU、内存和存储的数量,一定时间内消耗的网络带宽,公网 IP 地址数量及一些其他需要的增值服务(如监控、自动伸缩等)等。
一个典型的IssA模式的软件架构设计可分为以下三层:
- 云管理器:云端对外的总入口,在这里验证用户身份,管理用户权限,向合法用户发放凭证(然后用户持此凭证使用计算资源)、分配资源并管理用户租赁的资源。
- 集群管理器:每一个集群负责管理本集群内部的所有计算机/服务器。集群管理器接受上层的资源查询请求,然后向下层的计算机管理器发送查询请求,最后汇总并判断是部分满足还是全部满足上层请求的资源,再反馈给上层。如果收到上层分配资源的命令,那么集群管理器指导下层的计算机管理器进行资源分配并配置虚拟网络,以便能让用户后续访问。
- 计算机管理器:每台计算机上都有一个计算机管理器,负责与上层集群管理器和下层的虚拟机进行交互。它会把本机的状态(如正在运行的虚拟机数、可用的资源数等)反馈给上层,当收到上层的命令时,计算机管理器就指导本机的虚拟机软件执行相应命令。这些命令包括启动、关闭、重启、挂起、迁移和重配置虚拟机,以及设置虚拟网络等。
目前IaaS云服务的常见应用如下:
- 备份和恢复服务;
- 计算服务:提供弹性资源;
- 内容分发网络(CDN);
- 服务管理:管理云端基础设施平台的各种服务;
- 存储服务:提供用于备份、归档和文件存储的大规模可伸缩存储.
2.2 PaaS模式
在实际应用中,PaaS 模式的重要应用场景之一是向用户交付一个支撑应用运行的应用运行平台(Applications Running Platform,以下简称 ARP)。基于 PaaS 模式构建应用运行平台,需要满足以下典型需求:
- 提供定义应用需求的接口:用户可以方便地定义满足应用功能需求所需的组件,同时可以定义应用的非功能性需求,例如可用性,服务水平等;
- 提供基于应用需求快速构建应用运行环境的能力:能将应用需求映射为物理的 IT 资源和基础设施的具体配置和拓扑结构,并进行快速部署;
- 提供运行时实时动态满足应用需求的能力:将应用需求映射为运行策略,在运行时,根据系统运行的实际状况,例如负载状况,动态地对物理的 IT 资源和基础设施进行调整,例如调整负载分配或增减计算资源,使 ARP 具备足够的弹性和灵活性,以实时动态地满足应用需求。
上图是一个典型PaaS模式的软件架构设计,包括了如下组件:
- 需求与运行策略库: 向用户提供定义应用需求的界面,保存应用需求,并将应用需求转化为部署及运行策略,提供给平台交付组件和运行时控制组件;
- 软件映像库: 提供应用运行平台所需的基础软件如操作系统/各种中间件等;
- ARP硬件资源池: 以虚拟化的方式提供应用运行平台所需的硬件资源;
- 平台交付组件: 根据部署或调整策略,通过部署或调整软件及 APR 硬件资源池来创建或调整应用运行平台;
- 运行时控制组件: 根据运行策略和实际运行状况动态调整 ARP 资源池,并向平台交付组件动态提供调整策略。
目前 PaaS 云服务常见应用如下:
- 商业智能(BI) : 用于创建仪表盘、报表系统、数据分析等应用程序的平台;
- 数据库 : 提供关系型数据库或者非关系型数据库服务;
- 开发和测试平台;
- 软件集成平台;
- 应用软件部署: 提供应用软件部署的依赖环境.
2.3 SaaS模式
SaaS 模式下软件部署在云端,让用户通过网络来使用它,即服务提供商把 IT 系统的应用软件层作为功能服务出租出去,而消费者可以使用任何云终端设备接入计算机网络,然后通过网页浏览器或者编程接口使用云端的软件。
SaaS模式实现了用户、租户、租户系统、组件或系统资源池、数据各层次的独立管理,实现了不同层次的按需组合,从而实现了租户能够根据需要从平台的资源池中选择自己需要的资源,组装成自己的系统,并添加能够访问本系统功能的用户到系统中使用系统。在整体架构上主要可分为以下几层:
- 用户管理: 所有用户信息由平台统一管理,管理用户的登陆验证(用户名、密码),用户具有唯一标识。这样实现了一个用户可以访问多个系统,管理多个系统。可以在平台上注册用户,也可以在系统中注册用户。注册信息存储在平台的用户信息表里。平台上管理使用系统的所有用户,用户分为订购者和普通用户。平台只管理用户的基本属性信息,包括用户的登陆名,密码等信息。为实现租户系统的个性化,可以在租户系统中保存用户的扩展信息,如用户的学历、职称、职务等。为了满足用户透明的在不同系统之间切换,以及在同一系统的不同模块间切换,需要实现单点登录。
- 租户管理: 租户管理主要实现租户信息的统一管理以及和租户系统间的对应关系。一个租户可以租用一套系统或多套系统,一个租户可以包括多个系统的使用者。维护着租户的基本信息及状态,租户的系统个数,租户系统的使用情况及租户和用户的从属关系。租户可以在租用系统的同时建立租户信息,也可以在平台中独立注册。租户系统的创建者会自动成为该系统的管理员,管理员可以邀请或直接添加本租户系统的用户。
- 数据管理: 理论上每个租户对应一个逻辑数据库。程序运行实例只有一个,不同的租户使用系统时要动态的切换到对应的逻辑数据库。系统访问对租户是透明的。这里采用数据路由是为了解决租户数据源的管理和运行时各租户数据源的动态切换。
SaaS是客户需求导向较强的模式,不仅体现在需求的多样性上,还体现上运行环境的多样性上,混合云和边缘节点等技术的出现就体现了这点,很多客户自己有较完整的服务部署与运行环境,希望将应用软件部署到他们的环境上,类似这样的限制与约束条件还有很多。
- 租用 PaaS 云服务,自己部署和管理应用软件层,研发成本最低,运维容易;
- 租用 IaaS 云服务,自己搭建和管理平台软件层和应用软件层,研发成本稍高,运维稍难;
- 自己搭建和管理基础设施层、平台软件层和应用软件层,研发成本最高,运维难.
目前SaaS 云服务的一些应用较广泛的领域:
- 办公软件;
- 客户关系管理(CRM);
- 内容管理(CMS);
- 财务软件;
- 人力资源管理;
- 系统销售;
- 社交网络;
参考文献
www.ruanyifeng.com/blog/2017/0…
www.infoq.cn/article/sma… SaaS架构设计参考指南
www.oschina.net/p/paas?hmsr… 平台即服务
azure.microsoft.com/zh-cn/overv… 什么是PaaS?
cloud.tencent.com/developer/a… 基于SaaS模型下的业务中台运营工作
c.biancheng.net/view/3787.h… 云计算的三种服务模式
zhuanlan.zhihu.com/p/101008212 多租户与单租户
www.cccup.cn/b/xwzx/gong… 多租户引擎
-----------------------------------------------------------------------------------------
各位,以上就是这篇文章的全部内容了,能看到这里的人呀,都是大神👍。
每篇章内容不能保证完全原创和正确,但也是经过深思与实践的内容结晶,如有版权和需更正的问题,请大家马上联系留言,本人不胜感激。
非常感谢大神们能看到这里,如果觉得这个文章写得还不错,点个赞呗!
求点赞👍 求关注❤️ 求分享👥