随着大量 saas 公司进入市场,我们看到颠覆性的软件服务以各种方式进入企业流程 - 从营销工具到支付系统。随着 saas 帮助优化业务流程,实现更流畅和自动化的运营,风险投资公司首先潜入池中寻找最优秀和最聪明的企业。
从 zoom(一家提供结合了视频会议,在线会议,聊天和移动协作的通信软件) 上市,阿里收购 teambition,saas 正成为风险投资公司和创业极其有利可图的途径。为了了解 saas,paas,下面将对其进行简单的概述。
如果您正在考虑将您的业务迁移到云端,有三个词将萦绕在你耳边:
iaas 企业提供诸如即时即付存储,网络和虚拟化等服务。
iaas 为用户提供了基于云的内部基础架构替代方案,因此企业可以避免投资昂贵的现场资源。
维护内部部署的 it 基础架构既昂贵又耗费人力。
它通常需要在物理硬件上进行大量的初始投资,然后您可能需要聘请外部 it 承包商来维护硬件并保持一切正常运行和最新。通过 iaas,您可以根据需要购买所需的产品,并随着业务的增长购买更多产品。
iaas 平台是:
高度灵活,高度可扩展。
可供多个用户访问。
性价比高。
示例
paas 供应商通过互联网提供硬件和软件工具,人们使用这些工具开发应用程序。paas 用户往往是开发人员。
paas 主要由正在构建软件或应用程序的开发人员使用。paas 澳门人威尼斯3966的解决方案为开发人员提供了创建独特,可定制软件的平台。
这意味着开发人员在创建应用程序时无需从头开始,在编写大量代码时节省了大量时间(和金钱)。paas 是那些想要创造独特应用程序而又不花钱或承担全部责任的企业的热门选择。
paas 平台是:
可供多个用户访问。
可扩展 - 您可以从各种级别的资源中进行选择,以适应您的业务规模。
基于虚拟化技术。
无需广泛的系统管理知识即可轻松运行。
paas 示例: aws elastic beanstalk,heroku,windows azure(主要用作 paas)。
saas(软件即服务)
saas 平台通过互联网向用户提供软件,通常每月订阅费用。
使用 saas,您无需在计算机(或任何计算机)上安装和运行软件应用程序。当您在线登录帐户时,一切都可通过互联网获得。您通常可以随时从任何设备访问该软件(只要有互联网连接)。使用该软件的其他人也是如此。您的所有员工都将拥有适合其访问级别的个性化登录。
另一个关键优势是支付结构:
大多数 saas 提供商都使用固定的包含性月度帐户费用来运营订阅模式。您确切地知道软件的成本是多少,并且可以相应地进行预算,而不必担心隐藏的意外。
大多数订阅包括维护,合规性和安全性服务,这在使用内部部署软件时可能既耗时又昂贵。saas 提供商还提供易于设置的开箱即用澳门人威尼斯3966的解决方案(如果您需要基本软件包),并为大型组织提供更复杂的澳门人威尼斯3966的解决方案。您可以在几小时内启动并运行基本软件 - 并且您可以在此过程中获得客户服务和支持。
saas 平台是:
可通过互联网获得。
由第三方提供商托管在远程服务器上。
可扩展,具有适用于小型,中型和企业级业务的不同层。
包容性,提供安全性,合规性和维护作为成本的一部分。
saas 示例: bigcommerce,google apps,salesforce,dropbox,mailchimp,zendesk,docusign,slack,hubspot。
什么是多租户
聊到 paas,saas,就不得不谈到多租户。
多租户指一套系统能够支撑多个租户。一个租户通常是具有相似访问模式和权限的一组用户,典型的租户是同一个组织或者公司的若干用户。
要实现多租户,首先需要考虑的是数据层面的多租户。数据层的多租户模型对上层服务和应用的多租户实现有突出影响。本文重点介绍数据层多租户对各种多租户模型的支持。
权衡不同的多租户实现方式时,需要考虑如下因素:
多租户模型描述了租户和该租户的数据之间的映射关系。不同的多租户模型会影响数据库和应用程序的设计、管理和维护。
最简单的多租户实现方式是为每一个租户创建一个数据库,如下图所示。应用程序为每个租户分配一个租户 id,并为每个租户配置相应的数据库连接信息(包括数据库 ip、端口等)。应用程序根据租户 id 连接到为其分配的数据库。
这种模型中不同租户的数据物理隔离,安全级别高。如果每个租户的数据库使用不同的硬件和数据库类型,则他们之间的资源使用也是物理隔离的;如果租户的数据库共用同一套硬件,则需要对资源进行合理分配和管理,避免相互影响。由于不同租户使用独立的数据库,灵活性好,容易满足不同租户的特定需求(譬如需要额外的字段)。出现故障时影响面小。缺点是数据库数量大,维护复杂,拥有成本高。适合租户数目比较少的场景。
多个租户共享同一个数据库,每个租户拥有独立的名字空间(或模式)。应用程序为每个租户分配一个 id,并把每个租户的所有操作限制在为其分配的名字空间/模式之中。如下图所示。
这种多租户模型下,不同租户的数据逻辑上相互隔离,安全控制相对简单。不同租户有不同的模式,可以简便的满足不同租户的特定需求,灵活性高。对资源管理能力要求高,以避免不同租户竞争资源。可以把不同租户的数据存储在不同的磁盘上,降低了对磁盘 io 的竞争。运维和管理较复杂,不易实现大量租户的跨租户分析。适合租户数目适中的场景。
不同租户共享同一个数据库、同一个名字空间。不同租户的数据在同一组表中共存,通过租户 id 标记和访问不同租户的数据(应用需要调整访问数据的 sql 以包含租户 id)。如下图所示。
这种多租户模型中,不同租户的数据物理存储在一起,对系统的资源隔离和安全隔离要求很高。运维相对简单。扩展能力好,可以支持较多数量租户。由于租户数据存储在一起,跨租户数据分析和优化非常简单。成本低,可以较低的代价支持更多的租户。
全共享模型中,很多数据库采用添加大量自定义字段的方式满足不同租户的特定需求,以提高灵活性。这种方式有诸多局限性,譬如字段数目不能太多、管理复杂等。支持更多半结构化数据,包括 json 等,通过这种半结构化数据,可以更灵活、高效、便捷的满足不同租户的特定需求。
下面我通过用一个简单的全共享数据库的多租户模式的案例,来对 paas 平台型软件进行演示。
系统账户层级如下图所示:
在上图这个系统用户的层级关系中,我们需要四张表:
ga_user:此表用于存储 paas 平台 t1 内所有的账户相关信息,如 laowang@test.com,zhangshan@test.com,jingwa@test.com 等账户和密码。此表用于登录平台时,系统认证和权限控制时所用。
tenant:用于存储所有的租户信息,如 saas a, saas b,saas c。
customer:用于存储所有的客户信息,如消费客户/组织 s1,消费客户/组织 s2。
device:用于存储平台内所有客户,租户的设备相关信息。
具体流程,可以概括为:
我们用 paas 平台系统管理员帐号 laowang@test.com 登录系统。
在系统中,新建 saas a, saas b,saas c 三个组织或者客户,并为这三个租户分配各种租户的租户管理员账户,分别为 zhangsan@test.com, lisi@test.com,wangwu@test.com。当我们用这三个账户登录系统时,系统根据租户 id 和相应的权限显示对应的框架内容和组织信息。
这三个组织利用 paas 平台上的服务框架和应用为需要的客户和组织提供一站式澳门人威尼斯3966的解决方案,有点类似我们采用阿里云平台上的服务框架来解决自己的企业需求。
当 saas b 具体到实施项目时,为消费客户/组织 s1 或消费客户/组织 s2 分配帐号进行公有云订阅服务,进行项目迭代交付或者本地化实施。
uml 实体图如下:
本文作者: 穆书伟
本文链接: 蓝海的技术门槛
澳门人威尼斯3966的版权声明: 本博客所有文章除特别声明外,均采用 by-nc-sa 许可协议。转载请注明出处!