闲话SAAS系统设计-概述

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
EMR Serverless StarRocks,5000CU*H 48000GB*H
应用型负载均衡 ALB,每月750个小时 15LCU
简介: 闲话SAAS系统设计-概述

1.1  SAAS概述

1.1.1   软件发展的4个阶段

1 项目式软件开发阶段——做项目

–  依客户需求定制开发

–  存在重复开发,开发成本过高的问题

•  2 套装式软件开发阶段——做产品

–  将软件作为产品开发,满足相似需求的用户

–  不可能通过产品满足所有用户的需求

•  3 平台化软件开发阶段——做平台

–  业务驱动的基于基础平台的软件开发

–  软件的升级和运营维护成本越来越高

•  4 社会化软件大开发阶段——做服务

–  以服务为导向的软件开发运营模式

–  SaaS模式应运而生

1.1.2   SaaS(Software as a Service软件即服务)

•      SaaS是一种软件交付模式,将软件以服务的形式交付给用户,用户不再购买软件,而是租用基于Web的软件,

并按照对软件的使用情况来付费

•  SaaS由应用服务提供(Application Service Provider,ASP)模式发展而来

–  SaaS与ASP的相同点

•  通过互联网提供,运营商负责软件的管理和维护

–  SaaS与ASP的不同点

•  ASP仅对用户提供定制化的,一对一的服务方式

•  SaaS一般以一对多的方式提供服务

•  SaaS支持可配置性和可伸缩性

1.1.3   SaaS 与云计算

1.png

1.1.4   SaaS的特性

•      互联网特性

–  SaaS应用一般通过互联网交付,用户仅需要浏览器或联网终端设备就可以访问应用

•  多租户特性

–  通过多租户模式实现多种使用方式,以满足不同用户的个性化需求

•  按需服务特性

–  支持可配置性和按使用付费,按用户需求提供服务

•  规模效应特性

–  一般面向大量用户提供服务,以取得规模效应和效益

1.2  SAAS成熟度模型

1.2.1   四级成熟度模型

 

可配置性

高性能

可伸缩性

特点

Level1

定制开发

×

×

×

设备托管

每个客户拥有单独代码,单独应用实例,功能定制开发(ASP)

Level2

可配置

×

×

设备共享,可配置化

每个客户拥有同一代码,单独应用实例,功能可配置

Level3

高性能的多租户架构(Multi-Tenant)

×

多租户(Multi-Tenant)、数据隔离、高性能

运行一个应用实例为所有客户服务,功能可配置

Level4

可伸缩性的多租户架构

支撑应用规模的增长

运行一个负载均衡的应用实例为所有客户服务,随用户及需求动态增减

1.2.2   四级成熟度模型解析

2.png

①      Level1定制开发

•      为租户单独定制开发应用。

•      与传统软件相比,主要体现在软件租用付费商业模式和托管运行运营模式的区别。

•      一般不涉及大的技术架构变化。

•      为提高应用运行效率,需要更有效地整合硬件资源。

②      Level2 可配置的多租户SaaS应用

•      采用统一开发的模式,所有租户使用相同的程序代码,但各租户分别部署程序实例。

•      与第1级模型相比,降低了定制开发的软件研发成本。

•      关键在于通过元数据实现应用的可配置性。

–元数据:用于描述数据的数据,用于描述租户的个性化需求。

③      Level3 单程序实例支持多租户的SaaS应用架构

•      全部租户运行部署在单一程序实例上的同一套程序代码。

•      最大限度的提高了系统资源利用效率,同时降低程序代码升级维护的工作成本。

•      同时应注意,单实例架构为应用开发带来了更大的复杂度,需要更多的初期投入。

④      Level4 可伸缩的多租户SaaS 应用架构

•      租户通过负载均衡层访问以镜像方式部署在集群上的同一套程序代码实例上。

•      通过负载均衡方法为应用提供可伸缩性,使应用在大量用户访问下保持可接受的应用可用性和性能。

•      关键在于实现应用的可伸缩性,主要涉及负载均衡、资源管理等技术。

1.2.3   四级成熟度模型对比

 

Level1

定制开发

Level2

可配置

Level3

高性能的多租户架构

Level4

可伸缩性的多租户架构

主要特点

托管运营

按需使用付费

多租户模式

可配置性

高性价比

统一维护

支持可伸缩性

动态资源分配

关键技术

实现托管运营

可配置性

租户管理

单实例架构

安全隔离

负载均衡

资源管理

初期投入

中等

较高

单用户成本

中等

目标用户

对个性化需求、安全性、隔离性要求较高的大客户

对安全隔离性有要求,同时关注价格的行业客户

对价格比较敏感,安全隔离性要求不高的中小企业用户

大量的中小企业用户及个人用户

1.3  SAAS的关键技术

1.3.1   多租户技术

多租户是SaaS模式下特有的核心概念之一,租户是指在线使用SaaS服务的企业、机构或个人,由于他们并不是真正的购买SaaS服务,因此没有SaaS服务的版权,只是租赁使用SaaS服务的功能,并按租赁的时间长短和功能多少支付费用,所以将他们称之为租户。而多租户实质上是为了实现SaaS服务的多用户性。达到服务共享使用规模效应,实现用户间最大程度的资源共享,真正达到资源共享的目的。

1.3.2   数据库设计技术

方案一、独立数据库(完全独立)

这是第一种方案,即一个租户一个数据库(Database),这种方案的用户数据隔离级别最高,安全性最好,但成本也高。

优点:

为不同的租户提供独立的数据库,有助于简化数据模型的扩展设计,满足不同租户的独特需求;

如果出现故障,恢复数据比较简单。

缺点:

增大了数据库的安装数量,随之带来维护成本和购置成本的增加。

这种方案与传统的一个客户、一套数据、一套部署类似,差别只在于软件统一部署在运营商那里。如果面对的是银行、医院等需要非常高数据隔离级别的租户,可以选择这种模式,提高租用的定价。如果定价较低,产品走低价路线,这种方案一般对运营商来说是无法承受的。


方案二、共享数据库,隔离数据架构(部分独立)

这是第二种方案,即多个或所有租户共享Database,但一个Tenant一个Schema

优点:

为安全性要求较高的租户提供了一定程度的逻辑数据隔离,并不是完全隔离;

每个数据库可以支持更多的租户数量。

缺点:

如果出现故障,数据恢复比较困难,因为恢复数据库将牵扯到其他租户的数据;

如果需要跨租户统计数据,存在一定困难。

 

方案三、共享数据库,共享数据架构(完全共享)

这是第三种方案,即租户共享同一个Database、同一个Schema,但在表中通过TenantID区分租户的数据。这是共享程度最高、隔离级别最低的模式。

优点:

三种方案比较,第三种方案的维护和购置成本最低,允许每个数据库支持的租户数量最多。

缺点:

隔离级别最低,安全性最低,需要在设计开发时加大对安全的开发量;

数据备份和恢复最困难,需要逐表逐条备份和还原。

如果希望以最少的服务器为最多的租户提供服务,并且租户接受以牺牲隔离级别换取降低成本,这种方案最适合。

 

按数据独立性、隔离性和安全性排序

– 完全独立 > 部分独立 > 完全共享

按硬件共享程度、方案性价比排序

-完全共享 > 部分独立 > 完全独立

  完全独立模式 部分独立模式 完全共享模式
主要特点 独立数据库实例 共享数据库实例
独立表集合
共享数据库实例
共享表集合
数据安全性
与隔离性
高(通过数据库
权限控制实现)
中(通过数据库
权限控制实现)
低(需要通过编
程实现)
数据可配置性 直接实现 直接实现 需要特定
方式实现
数据备份与恢复 容易(采用数据库
备份恢复机制)
容易(按租户的表集合分别恢复) 困难(需要通过
编程实现)
性能可控性 中等
硬件开销性价比 中等
目标用户 对安全性要求
较高的客户
对各方面要求
较为均衡的客户
对硬件性价比
要求较高的客户


相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
6月前
|
Dubbo 前端开发 Java
让你在组建企业级项目时手到擒来——浅谈各类常用工具和框架概述
让你在组建企业级项目时手到擒来——浅谈各类常用工具和框架概述
|
6月前
|
人工智能 数据库
2024年春《企业级应用软件设计与开发》在线说明
《企业级应用软件设计与开发》是2024年春季的在线课程,旨在为学习者提供深入的企业级应用软件设计和开发知识。该课程涵盖了广泛的主题,包括系统架构、数据库设计、用户界面开发和性能优化等关键领域。
|
6月前
|
安全 网络协议 测试技术
网络工程设计教程系统集成方法第3版-第1章 网络工程设计概述
网络工程设计教程系统集成方法第3版-第1章 网络工程设计概述
166 0
化繁为简!阿里新产亿级流量系统设计核心原理高级笔记(终极版)
不管是初入职场的小菜鸟还是有一些工作年限的老司机,系统设计问题对他们来说都是一大困扰。前者主要是在于面试;面试官来一个如何从零到一设计一个完整的系统?大多数人都会直接懵了,因为系统设计覆盖面广,而网上资料又不能面面俱到,单独背背文章肯定是不行的;后者主要在于晋升;想要从程序员进阶到架构师,系统设计是必须要踏入的一道坎,他对你的技术广度跟深度都会有一定程度的考察。
|
开发框架 Ubuntu JavaScript
浅谈USDToch(优多趣)模式系统开发源码搭建(成熟技术)
浅谈USDToch(优多趣)模式系统开发源码搭建(成熟技术)
320 0
|
架构师 程序员 微服务
|
程序员 BI Go
佛萨奇2.0系统开发解析逻辑教程方案(成熟技术)
佛萨奇2.0系统开发解析逻辑教程方案(成熟技术)
162 0
国外经典神作:领域驱动设计软件核心复杂性应对之道手册限时阅读
相信领域驱动设计这个对有些小伙伴来说很陌生,领域驱动设计(Domain Driven Design,DDD)自诞生以来已有十几年时间,这门本已步入老年的方法学却因为微服务的兴起而焕发了第二春。并不是微服务拯救了领域驱动设计,是因为领域驱动设计一直在坚硬的生长,然而看起来,确乎因为微服务,领域驱动设计才又焕发了青春。
国外经典神作:领域驱动设计软件核心复杂性应对之道手册限时阅读
|
应用服务中间件 HSF 架构师
阿里毕玄:系统设计之解决核心问题的设计
作者结合cases来讲讲解决核心问题的设计这个环节,回顾自己的cases,犯了不少的错误,也碰到了非常多复杂的权衡选择的状况,才逐渐更加明白一个架构师应该具备的一些能力。
5089 0