odoo开发学习--saas环境搭建(一)

********************************************
本节目录:
一、SaaS & 云计算
二、SaaS模式介绍及优势
三、SaaS模式软件的核心技术:多租户(Multi-tenancy)
四、常见SaaS多租户数据隔离的三种方案
五、Odoo SaaS模式的架构
********************************************

一、SaaS & 云计算

---说起SaaS就绕不过云计算的概念,云计算的底层是基于虚拟化,从底层到上层,云计算包含三种服务模式,分别是:

IaaS(Infrastructure-as-a-Service),基础设施即服务
PaaS(Platform-as-a-Service),平台即服务
SaaS(Software-as-a-Service),软件即服务

SaaS模式,便是云计算的三种服务模式其中之一。

    上图中对比了传统IT服务架构和云计算几种服务架构,传统IT服务架构中,作为用户来讲,从底层网络到系统应用,都需要用户自己去管理维护,也就是说需要用户自己去建设机房,购买服务器,存储,交换机设备,包括操作系统中间件等的管理维护;

    而云计算的几种模式,会随着服务层级的不断往上,用户需要管理维护的地方会逐渐减少,作为用户(公司企业)来讲,可以搭建自己的IaaS基础设施,也可以搭建PaaS平台,然后将自己的角色转变为服务提供商,但是云计算的架构,对企业的技术要求,以及维护成本相对比较高,因此作为普通用户(公司企业)来讲,前期不需要按照云计算的服务架构全部搭建,只需要购买相应服务商提供的云计算产品就可以,这样可以节约成本,将主要技术精力集中在自己公司的产品研发上,待公司发展到一定规模,随着业务的增长,技术的沉淀,再考虑搭建企业自身完整的云计算平台。

    目前,市场上提供云计算不同服务模式的服务商有好多,比如:亚马逊,华为云,阿里云,腾讯云等;一般这些服务商,会将云计算3个层级的技术,封装成不同的产品对外提供, 对于中小企业来讲,购买这些成熟服务商的相应产品即可。

 好了,到这里,我们对云计算的概念,以及三种服务模式已有了大概的了解。

二、SaaS模式介绍及优势

关于SaaS模式产品,我们可以简单的理解成,SaaS模式的产品更接近目标用户,例如,对于企业来讲可以购买阿里云提供的SaaS层面的产品,如:云服务器ECS,云数据库RDS、对象存储OSS......;这些SaaS产品,目标用户大多数偏向于企业的技术人员,运营人员等。

那对于我们企业自身来讲,也可能做自己的SaaS模式产品,例如:企业ERP、OA办公系统、CRM等,来提供给行业内的目标用户。

因此,SaaS模式也可以理解成:通过互联网提供软件的模式,软件提供商将产品部署在云端服务器,目标客户基于Web来使用所需的软件服务,按照使用软件的时长or功能来支付相应费用。

在介绍SaaS模式核心技术前,我们先了解下SaaS模式应用软件的优势,以及该模式的重要关注点:

优势:

1. 部署开通方便 --较短的时间内,即可部署开通相应的软件客户端,开通后做一些基本的初始化配置,用户即可访问使用。
2. 降低企业设备人力成本 --目标用户不需要购买硬件,不用维护后台,由SaaS提供商负责管理维护,只需要关注软件使用本身。
3. 没有使用位置局限 --只要有互联网,随时随地使用,用户不需要在指定的场所才能使用。
4. 提高企业管理水平 --帮助企业业务实现从线下到线上的整合,并提供相应解决方案,提升企业信息化管理水平。

重要关注点:

1. 安全性:保证企业数据的安全性和保密性
2. 系统健壮性
3. 系统稳定性 

三、SaaS模式软件的核心技术:多租户(Multi-tenancy)

    多租户(Multi-tenancy)或称多重租赁技术,是一种软件架构技术,实现如何在多用户环境下,共用相同的系统或程序组件,并且确保各用户间数据的隔离性。

这里引出了一个租户模型的概念,SaaS模式的软件,通常要为数百数千的不同用户提供服务,而不同的用户又可能分不同的规模,例如企业用户,个人用户等。

这就要求SaaS服务要能够支持不同数据和配置的隔离,每个租户只能访问自己的数据,确保安全和隐私;粒度再细一点,可能不同用户还会要求不同的用户界面,业务逻辑,数据结构等个性需求,这就要求租户的更进一步隔离。--- 多租户的概念,往下延伸,本质上就是“数据隔离”。

在设计多租户SaaS应用程序时,必须衡量选择好适合当前应用程序需求的租户模型。
租户模型确定了每个租户的数据如何映射到存储,决定了应用程序的设计和管理,以后要切换到另一个租户模型时,代价可能会比较高。

应用程序如何选择合适的租户模型,评估点:

---A. 可扩展性(Scalability)
    租户的数量级
    每个租户的存储级别
    整体存储
    工作负载
---B. 租户隔离性(Tenant isolation)
    数据隔离和性能(是否一个租户的负载会影响到其他租户)
---C. 单租户成本(Per-tenant cost)
    数据库成本
---D. 开发复杂度(Development complexity)
    数据结构的变化
    查询语句的变化
---E. 运维复杂度(Operational complexity)
    性能监控
    数据结构schema管理
    租户数据恢复
    灾备
---F. 可定制化程度(Customizability)
    根据租户的需求自定义架构的容易程度

四、常见的SaaS多租户数据隔离的三种方案 

多租户在数据存储上存在三种主要的方案,分别是:

1. 独立数据库:即一个租户一个数据库实例 (数据库实例级别-隔离)

特点:用户数据-隔离级别最高,安全性最好,但成本较高。 

---优点: 
为不同的租户提供独立的数据库,有助于简化数据模型的扩展设计,满足不同租户的独特需求;如果出现故障,恢复数据比较简单。 
---缺点: 
增多了数据库的安装数量,随之带来维护成本和购置成本的增加。 
这种方案与传统的一个客户、一套数据、一套部署类似,差别只在于软件统一部署在服务商那里。如果面对的是银行、医院等需要非常高数据隔离级别的租户,可以选择这种模式,提高产品的定价。如果定价较低,产品走低价路线,这种方案一般对服务商来说是无法承受的。

2. 共享数据库实例,隔离数据架构 (Schema级别-隔离)

即多个或所有租户共享Database,但是每个租户一个Schema(也可叫做一个user)。

---优点: 
为安全性要求较高的租户提供了一定程度的逻辑数据隔离,并不是完全隔离;每个数据库实例可支持更多的租户数量,取决于服务器硬件配置以及单个租户Schema的负载。 
---缺点: 
如果出现故障,数据恢复比较困难,因为恢复数据库将牵涉到其他租户的数据; 
如果需要跨租户统计数据,存在一定困难。

3. 共享数据库,共享数据架构 (表级别-隔离)
即租户共享同一个Database、同一个Schema,但在表中增加TenantID多租户的数据字段。
特点:共享程度最高、隔离级别最低的模式。

---优点: 
三种方案比较,第三种方案的维护和购置成本最低,允许每个数据库支持的租户数量最多。 
---缺点: 
隔离级别最低,安全性最低,需要在设计开发时加大对安全的开发量; 
数据备份和恢复最困难,需要逐表逐条备份和还原。 
如果希望以最少的服务器,为最多的租户提供服务,并且租户接受牺牲隔离级别换取降低成本,这种方案最适合。

 选择合理的实现模式:衡量三种模式主要考虑的因素:是隔离,还是共享。

---成本角度因素 
隔离性越好,设计和实现的难度和成本越高,初始成本越高。
共享性越好,同一运营成本下支持的用户越多,运营成本越低。

---安全因素 要考虑业务和客户的安全方面的要求。 安全性要求越高,越倾向于隔离性高。
---从租户数量上考虑 1. 主要考虑下面一些因素,系统要支持多少租户?上百?上千还是上万? 租户越多,越倾向于共享。 2. 平均每个租户要存储数据需要的空间大小。存贮的数据越多,越倾向于隔离。 3. 每个租户的同时访问系统的最终用户数量。 需要支持的越多,越倾向于隔离。 4. 是否想针对每一租户提供附加的服务,例如数据的备份和恢复等。 这方面的需求越多, 越倾向于隔离
---信息监管因素 要考虑政府,机关,企业,公司的安全和信息监管相关的一些政策和规定。

---技术储备 共享性越高,对技术的要求越高。

直观对比:

五、Odoo SaaS模式的架构

目前Odoo SaaS模式是基于上边数据隔离的第二种方案:共享数据库实例,隔离数据架构(Schema模式级别)

odoo官方是没有提供相应SaaS模块的,官网关于odoo saas的一些问答,提供参考。

本文的学习内容,odoo saas环境搭建,基于Github上odoo-saas_tools开源项目进行。

 

---本节End

posted @ 2020-04-26 09:41  hello-Jesson  阅读(3084)  评论(0编辑  收藏  举报