• 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

  • 相关阅读:
    python pycurl属性
    HTTP报文-->MVC
    国际化信息-->MVC
    计算机网络入门概念理解
    TCP/IP基础概念及通信过程举例
    一道面试题:说说进程和线程的区别
    【转载】我眼中的Oracle性能优化
    【转载】数据库范式那些事
    【转载】详解CreateProcess调用内核创建进程的过程
    数据结构和算法(一):hash散列容器
  • 原文地址:https://www.cnblogs.com/hellojesson/p/12777250.html
Copyright © 2020-2023  润新知