从传统的Web应用到多租户SaaS应用的转换方法
传统软件向SaaS软件转型方案的研究
传统软件向SaaS软件转型方案的研究针对中小企业资金缺乏、IT人才较少等问题,本文对传统软件向SaaS软件转型关键技术进行研究,提出了SaaS软件关键技术的解决方案以及七层架构模型。
随着互联网技术的高速发展和应用软件的日渐成熟,软件即服务SaaS(Software-as-a-Service)模式已经成为一种新型的软件运营模式。
在国外,SaaS正在渗透到软件应用的各个方面,甚至开始成为主流。
全球SaaS模式的创始者和领导者Salesforce就是以SaaS模式的CRM取得巨大成功的。
而在国内还是以传统按需求定制软件的方式为主,SaaS还处于起步阶段。
在传统软件的基础上向SaaS软件转型已经成为当前势不可挡的潮流。
SaaS作为一种新的软件服务模式,技术架构与传统软件相比有很大差别,在技术上还有很多新的挑战。
因此本文对传统软件向SaaS软件转型的关键技术进行研究并提出一些可行方案。
1 SaaS模式及相关概念1.1 SaaS模式概述SaaS模式是一种通过互联网提供软件服务的模式,与传统软件相比,SaaS软件不再是用户向软件开发商定制软件或进行二次开发,而是软件提供商将应用软件部署在自己的服务器上并通过互联网提供在线软件服务。
软件提供商负责搭建一切网络设备、软硬件运作平台等基础设施,并进行后期维护。
企业用户根据实际需要通过Internet向软件提供商订购所需要的应用软件服务,按照订购服务的多少和时间长短给提供商支付费用。
SaaS模式下通过租用服务的方式,用户不需再定制软件、购买硬件、建设机房、招聘IT维护人员就可以按需使用软件,也不需要用户关心软件后期的维护,只要连上网就可以享受软件商提供的软件服务。
用户不需要一次性支付很大一笔软件定制费,只需支付很少一点租用费用就可以使用软件,风险非常低,发现软件不满足要求或不适合本公司管理模式可以停止续租。
这种基于SaaS模式的软件服务方式大大减轻了对于资金缺乏、IT人才匮乏的中小企业的压力。
SaaS模式应用之多租户系统开发(单数据库多Schema设计)
SaaS模式应⽤之多租户系统开发(单数据库多Schema设计)SaaS是Software-as-a-Service(软件即服务)的简称,这边具体的解释不介绍。
多租户的系统可以应⽤这种模式的思想,将思想融⼊到系统的设计之中。
⼀、多租户的系统,⽬前在数据库存储上,⼀般有三种解决⽅案:1.独⽴数据库2.共享数据库,隔离数据架构3.共享数据库,共享数据架构这⾥我就系统的实际需求情况,选择了第⼆种解决⽅案,下⾯简单介绍下⼆、数据库我选⽤的是SqlServer,因为SqlServer⾃带的Schema刚好符合这种需求。
⾄于Mysql,Oracle的Schema应该是有不同的设计,不同于SqlServer,这⾥我就只针对SqlServer⽽⾔。
如果你百度SqlServer的Schema⽅⾯的知识介绍,会有不少的Schema的语法介绍,但是很少有⼀套sql脚本针对多租户设计的,我在这⾥做个整理。
1.创建数据库create databaseSingleDbMultipleSchemago2.切换到⽬标数据库use SingleDbMultipleSchemago3.创建⽤户并绑定登录名并赋予默认schemacreate login UserTemp with password = N'admin@123'create user UserTemp for login UserTemp with default_schema = UserTempSchemago4.创建schema并授权默认⽤户create schema UserTempSchema authorization UserTempgo5.补充建表权限(PS:这句sql找的好苦。
)grant create table to UserTempgo6.给⽤户分配schema权限(使⽤到存储过程的权限分配时,使⽤schema分配此类权限)GRANT INSERT, SELECT, UPDATE, DELETE, EXECUTE, REFERENCESON SCHEMA:: UserTempSchemaTO UserTempgo7.最后附上常⽤删除Sql语句(格式如下)drop table schtabledrop user [User_tmp]drop user testuser2drop login [User_tmp]drop login testlogin2drop schema User_tmpSchema以dbo⽤户(sa登录名)新建⼀张表table_1,默认产⽣dbo.table_1,并插⼊⼀条数据,如下图切换⽤户,使⽤刚刚创建的⽤户UserTemp登录,新建⼀张表table_1,产⽣UserTempSchema.table_1,并插⼊⼀条数据,如下图以UserTemp⽤户,测试查询语句,结果如下,很显然虽然selcet语句没指定Schema,但是查询到了我们想要的结果切换到dbo⽤户(sa登录名),测试查询语句,结果如下,虽然没指定schema名称,但是依旧是我们想要的结果上⾯的sql脚本按步骤执⾏,执⾏1-5即可,后⾯的sql可根据⾃⼰的需求额外使⽤。
SAAS架构设计模式
SAAS架构设计模式随着云计算的迅速发展和软件即服务(Software as a Service,简称SAAS)的流行,SAAS架构设计模式也成为了云计算中的重要组成部分。
SAAS架构设计模式是指在开发SAAS应用程序时采用的一种构建模式和架构模式,可以提供可靠、可扩展和高性能的SAAS应用程序。
本文将介绍几种常见的SAAS架构设计模式。
1. 多租户模式(Multi-tenancy)多租户模式是指将多个客户的数据和应用程序部署在同一台服务器上,但是各个租户之间的数据和应用程序是相互隔离的。
这种模式可以节省资源和成本,并且可以更好地实现可伸缩性。
在多租户模式下,通常使用数据库分片和隔离技术来隔离不同客户的数据。
2. 微服务架构(Microservices)微服务架构是一种将应用程序分解为小型、独立的服务的架构模式。
每个服务都可以独立开发、部署和伸缩,通过API和消息队列进行通信。
这种模式可以提供灵活性、可伸缩性和可靠性,并且可以更快地进行开发和部署。
3. 事件驱动架构(Event-driven)事件驱动架构是一种通过事件触发和处理来实现应用程序的架构模式。
这种模式可以提供更强大的解耦性和弹性,并且可以更好地处理大规模的并发请求。
在SAAS应用程序中,事件驱动架构可以用于处理用户请求、数据更新和系统通知等不同类型的事件。
4. 缓存架构(Caching)缓存是一种在内存中存储和访问数据的技术,在SAAS应用程序中使用缓存可以提高性能和响应时间。
常见的缓存架构模式包括本地缓存、分布式缓存和反向代理缓存。
使用缓存可以减少对数据库的访问,提高系统的吞吐量和扩展性。
5. 异步处理(Asynchronous Processing)异步处理是一种将耗时的操作和后台任务分离出主线程的处理方式。
在SAAS应用程序中,常见的异步处理方式包括消息队列、任务队列和异步调用等。
这种模式可以提高系统的吞吐量、并发性和可靠性,并且可以更好地处理突发的请求和负载。
互联网时代的软件革命—SaaS架构设计精品PPT课件
1 云计算是信息技术发展的方向
Page ▪ 8
1 云计算三种服务模型
专 用
将软件作为服务 SaaS (Software as a Service)
如:Salesforce online CRM
将平台作为服务 PaaS (Platform as a Service)
如:Google App Engine
– IEEE APSCC 2011 ()
▪ IEEE World Congress on Services(SERVICES)
– SERVICES 2011 ()
Page ▪ 13
2 国内学术界
▪ 中国云计算与SaaS大会(C4S2) ()
– C4S2 2011 ( )
Page ▪ 14
2 SaaS的适用场景
运行了,而且他们都在同一个“实例”上运行。 ▪ 第3级(可扩展的多租户):此时你已经拥有了多租户、单一版本的软件模
– 软件即服务,软件产品消费->服务消费 – 租用,无需维护 – 多租户
Page ▪ 11
2 SaaS的提供商们
▪ Salesforce的MIS,典型的是CRM软件的推广() ▪ Google Docs() ▪ Microsoft ▪ 金蝶友商网() ▪ 阿里云 ▪ 800App(800客) ▪ 腾讯SaaS:QQ云输入法,QQ云词典
内容
1 什么是云计算 2 什么是SaaS
3 SaaS的成熟度模型 4 构建多租户的SaaS应用 5 高性能的多租户SaaS应用实践 6 可伸缩的应用架构 7 从传统的Web应用到多租户SaaS应用的转换方法
(Paper from 通信学报)
Page ▪ 10
2 SaaS-软件即服务
《2024年面向多租户的SaaS软件数据模型与功能模型研究》范文
《面向多租户的SaaS软件数据模型与功能模型研究》篇一一、引言随着云计算技术的不断发展和普及,SaaS(软件即服务)作为一种新型的软件服务模式,已经逐渐成为企业信息化建设的重要选择。
在SaaS模式下,多租户是其中的一个重要特性,即多个用户或组织共享同一套软件系统,每个用户或组织在共享基础之上拥有自己的数据和功能空间。
因此,如何构建高效、灵活、安全的多租户数据模型和功能模型,成为SaaS软件研发的关键问题。
本文将针对这一问题,进行深入的研究和探讨。
二、多租户SaaS软件数据模型研究1. 数据模型概述多租户SaaS软件的数据模型,是指在不同租户间实现数据隔离与共享的模型。
通常包括共享数据模型和私有数据模型两部分。
共享数据模型是指所有租户共享的数据结构、基础服务和通用业务逻辑;而私有数据模型则是针对每个租户的特定数据进行设计和存储的模型。
2. 数据隔离与安全在多租户环境中,数据隔离和安全是首要考虑的问题。
为了保障数据的隐私性和安全性,需要采用细粒度的数据权限控制、数据加密传输和存储等技术手段。
同时,还需要设计合理的数据库表结构和索引策略,以实现高效的数据查询和访问。
3. 数据设计与优化在设计多租户SaaS软件的数据模型时,需要考虑数据的扩展性、一致性和性能等因素。
通过采用分片、分区、索引优化等技术手段,可以在保证数据安全的同时,提高数据的存储和查询效率。
此外,还需要对数据进行定期备份和恢复,以防止数据丢失和损坏。
三、多租户SaaS软件功能模型研究1. 功能模型概述多租户SaaS软件的功能模型,是指在不同租户间实现功能定制和扩展的模型。
通常包括基础功能模块、可配置功能模块和自定义功能模块三部分。
基础功能模块是所有租户共享的核心功能;可配置功能模块则是根据租户的需求进行配置和定制的功能;而自定义功能模块则是租户根据自身业务需求开发的功能。
2. 功能定制与扩展为了满足不同租户的个性化需求,多租户SaaS软件需要支持灵活的功能定制和扩展。
应用转型至SaaS方案的途径和方法
应用转型至SaaS方案的途径和方法对于绝大多数企业来说是一种必要的负担:承担着业务运转的重任,但是又阻碍了技术的进步。
然而由于业务流程的改变或者与新系统集成的需求,替代或改进遗留应用的时机已经到来了。
此时,就必须有一个应用转型的规划。
遗留应用对于绝大多数企业来说是一种必要的负担:承担着业务运转的重任,但是又阻碍了技术的进步。
然而由于业务流程的改变或者与新系统集成的需求,替代或改进遗留应用的时机已经到来了。
此时,就必须有一个应用转型的规划。
应用转型同时意味着挑战和机遇:重构应用所需的成本;新应用带来的生产率和可用性提升。
在挑战和机遇之间要做出很好的权衡,以此判断重构应用是否可行。
幸运的是,有许多转型或迁移应用的途径可供企业选择。
尽管各种方法之间存在差异,但是都可以用通用的IT实践经验来加以评判。
这样就能有助于减少各选项存在的不确定性。
应用转型的方法首先,IT总监可以用系统设计周期(system design lifecycle,SDLC)的方法来确定应用转型的可行性。
最直接的效果是,如果一个IT系统、流程或应用的维护成本超出了替代成本,该方法就会提示进行升级或换代工作。
SDLC概念非常容易理解,但是运用难度却很大。
在应用开发方面,SDLC能计算出必需的显性和隐性成本。
显性成本以每小时人工、必要的系统以及其他支撑因素等来描述,而隐性成本则通常等同于生产力的提升。
关于应用的升级或替代还有另外的一些理由,比如法规监管的要求、工作环境转型(虚拟办公室、移动办公、合同工)、系统平台重构(服务器变更、数据库升级、桌面操作系统更新)等。
通过各种所获取的信息,IT经理很容易对应用转型的费用形成清晰的认识。
然而,转型的过程是充满挑战的,最终的结果可能和预期大相径庭。
为了减少结果的不确定性,对过程的正确理解以及对潜在风险的充分评估是非常重要的。
应用转型的第一步应该是决定应用的交付模式:运行在桌面系统上、外部托管、基于Web或是基于云?另一个要考虑的重要方面是应用是否要运行在公网、企业内网、或是托管在公有云/私有云/混合云上?以上方面的考量将决定应用转型的实施方式。
saas系统知识点
SaaS系统知识点什么是SaaS系统?SaaS(Software as a Service)是一种云计算模式,指的是通过互联网提供软件应用程序作为服务。
在传统的软件模式中,用户需要购买、安装和维护软件,而SaaS模式下,用户可以通过订阅的方式使用软件,而不需要关心软件的安装和维护。
SaaS系统的特点1.多租户架构:SaaS系统采用多租户架构,即多个用户共享同一个软件实例。
这种方式可以降低成本,提高资源利用率。
2.可定制性:SaaS系统通常允许用户根据自己的需求进行定制。
用户可以根据自己的业务流程和需求对系统进行配置,而无需修改源代码。
3.高度可扩展:SaaS系统可以根据用户的需求进行弹性扩展。
用户可以根据自己的业务增长情况,动态调整系统的容量和性能。
4.安全性:SaaS系统通常具备较高的安全性,包括数据加密、访问控制等措施,以保护用户的数据安全。
SaaS系统的优势1.降低成本:SaaS系统免去了用户购买和维护软件的成本,用户只需支付订阅费用即可使用软件。
这对于小型企业来说尤为重要,因为他们通常无法承担高昂的软件费用。
2.灵活性和可定制性:SaaS系统通常具备较高的灵活性和可定制性。
用户可以根据自己的需求进行定制,以适应不同的业务流程和需求。
3.高度可扩展:SaaS系统可以根据用户的业务增长情况进行弹性扩展。
如果用户的业务规模扩大,系统可以动态调整容量和性能。
4.及时更新:SaaS系统通常由提供商进行维护和更新,用户可以享受到及时的软件更新。
这意味着用户无需关心软件的升级和补丁,可以专注于自己的业务。
SaaS系统的应用场景1.客户关系管理(CRM):SaaS CRM系统可以帮助企业管理客户关系,包括销售、市场营销、客户服务等方面。
2.人力资源管理(HRM):SaaS HRM系统可以帮助企业管理员工的招聘、培训、绩效评估等方面。
3.项目管理:SaaS项目管理系统可以帮助团队协同工作,包括任务分配、进度跟踪、资源管理等方面。
从传统软件到SaaS软件——商业模式转型
从传统软件到SaaS软件——商业模式转型随着互联网技术的飞速发展,软件业也逐渐悄然发生了变革。
传统的软件销售方式正在被SaaS(Software as a Service)软件所替代,成为了企业转型的重要组成部分。
在这一转型过程中,商业模式的变革也成为了必然趋势。
本文将从传统软件到SaaS软件的角度来探讨商业模式转型。
一、传统软件的商业模式传统软件的商业模式主要是以软件销售和软件版权的授权费为主要收入来源。
这种商业模式需要企业对软件进行定价,确定软件版权和版权保护,以及收取使用费用。
这种商业模式相对来说比较简单,但是存在一些问题:1、软件更新和升级费用高。
由于传统软件使用的是一次性购买模式,更新和升级频繁的话将需要消耗大量的人力、物力和财力。
2、软件安装和维护费用高。
安装和维护传统软件需要具有相关技术背景的工程师,但这也会增加企业的财务负担。
3、软件售后服务差。
由于传统软件销售的客户进行全面贴心的服务是不大可能的,因此大多数客户在软件售后服务方面感到困扰。
4、软件版权保护难度大。
软件的版权保护难度很大,大多数企业很难保持软件知识产权保护。
二、 SaaS软件的商业模式相比传统软件,SaaS软件使用的商业模式则是以订阅方式为主要收入来源。
SaaS软件的订阅模式是指用户按照一定的费用周期性缴纳使用费用,在该时间周期内使用软件。
这种商业模式有以下几个优点:1、低门槛。
用户只需要一台电脑和一个用户账号,便可以使用SaaS软件,不需要安装和维护软件等方面的攻略。
2、灵活性。
使用SaaS软件不需要一次性进行一次性支付,用户可以按照自己的需求来订购,订购周期也可以根据用户需要进行相应的调整。
3、定制化和升级迅速。
使用SaaS软件可以对软件不同的模块进行单独的订购和使用,使得用户可以根据自己的需要轻松地制定和升级方案。
4、数据安全可控。
使用SaaS模式的软件数据存储在云端,数据难以丢失,数据存储的过程也极其安全可控,用户可以轻松地将存储的数据传输、备份和迁移到其他地方,操作十分灵活。
SaaS“可配置”和“多租户”架构的技术实现方式
SaaS“可配置”和“多租户”架构的技术实现方式依据是否具有“可配置”、“高性能”、“可伸缩”的特性,我们将SaaS划分为四级成熟度模型。
从上图不难看出,初级成熟度模型并不具备“可配置”、“高性能”或“可伸缩”特性,而三、四级成熟度模型都是基于多租户的。
那么,继开源框架构建CRM系统初级SaaS成熟度模型之后,如何通过技术手段,实现“可配置”和“多租户”架构呢?今天我们就来探讨这个话题。
利用元数据建模的MDA(Modle Driven Architecture,模型驱动架构),是我们实现“可配置化”常用的技术架构。
MDA,是为应对“上世纪90年代以来,基础平台和技术工具快速迭代,以及无数系统整合与改造需求陡增” 的趋势而提出的,用以解决“企业和技术快速变化,给软件从业者带来的”难以应对难题的技术模型。
它通过“企业应用系统”与“技术实现平台”的分离、平台无关PIM(Platform Independent Model)建模语言统一化,以及特定平台PSM(Platform Specific Model)模型化的方式,分别封装”企业应用系统”与“技术实现平台”两者的变化,达到了降低技术干扰,简化技术开发人员工作的目的。
1. MDA架构外圈:代表跨平台的通用服务(Pervasive Services),目录服务(Directory Services),事务服务(Transaction Services)、安全服务(Security Services)和分布式事件及通知服务(Distributed Event and Notification Services),目的在于让任何平台上的应用程序或客户端,都可以通过MDA环境,取得跨平台服务。
2. MDA的四层模型M0-实例层: M1 层模型的实例化,即对应UML模型的具体程序。
M1 -模型层:是建模人员通常所面对的模型,例如图中的 UML 模型,是分析和设计,包括开发人员最为熟悉不过的了。
使用Docker技术构建多租户SaaS平台
使用Docker技术构建多租户SaaS平台随着云计算和虚拟化技术的发展,软件即服务(SaaS)模式越来越受到企业和个人的青睐。
SaaS模式可以提供给用户即插即用的服务,免去了复杂的部署和配置过程,节省了时间和资源。
而对于软件开发者来说,构建稳定、可靠的多租户SaaS平台是一个亟待解决的问题。
这篇文章将探讨如何使用Docker技术构建多租户SaaS平台。
1. 什么是多租户SaaS平台多租户SaaS平台是指在一个软件系统中,多个不同的用户可以共享同一套软件和硬件资源,实现个性化定制和独立管理的服务。
每个用户在使用平台时都能享有私有的数据和配置空间,而不会被其他用户所干扰。
2. Docker技术及其优势Docker是一种轻量级的容器化技术,能够将应用程序及其依赖打包到一个可移植的容器中,并在不同环境中进行快速部署和运行。
它的主要优势在于:2.1 资源隔离:Docker容器可以为每个用户提供独立的运行环境,避免不同用户之间的冲突和干扰。
2.2 敏捷部署:Docker容器可以快速部署和启动,大大提高了平台的响应速度和用户体验。
2.3 灵活扩展:Docker容器可以根据用户的需求进行动态扩展和收缩,提供弹性的服务。
3. 构建多租户SaaS平台的关键技术在使用Docker技术构建多租户SaaS平台时,以下几点是需要考虑的关键技术:3.1 用户身份认证和授权:每个用户需要有独立的身份认证和权限控制,以保证数据安全和访问权限的管理。
3.2 数据隔离和安全性:不同用户的数据需要进行隔离,防止数据泄露和相互间的干扰。
3.3 弹性伸缩:根据用户的需求,平台需要能够动态地增加或减少服务的容量,以保持高可用性和性能。
3.4 异常监控和日志记录:通过监控和记录平台的异常和日志信息,可以及时发现和解决问题,提高平台的稳定性和可靠性。
4. 构建步骤以下是使用Docker技术构建多租户SaaS平台的一般步骤:4.1 确定平台的功能和需求:在开始构建之前,需要明确平台的功能模块和用户需求,这将有助于后续的架构设计和开发工作。
2022年saas将会有怎样的转变
2022年saas将会有怎样的转变SaaS是Software-a-a-Service(软件即服务)的简称,随着互联网技术的发展和应用软件的成熟,在21世纪开始兴起的一种完全创新的软件应用模式。
用户不用再购买软件,而改用向提供商租用基于Web的软件,来管理企业经营活动,且无需对软件进行维护,服务提供商会全权管理和维护软件,软件厂商在向客户提供互联网应用的同时,也提供软件的离线操作和本地数据存储,让用户随时随地都可以使用其定购的软件和服务。
对于许多小型企业来说,SaaS是采用先进技术的最好途径,它消除了企业购买、构建和维护基础设施和应用程序的需要。
在2022年,我们大致可以看到SaaS的发展趋势会遵循这样的轨迹:企业和客户之间会存在更多的选择。
尽管我们心里企盼平稳,但是在市场,销售和产品研发领域,特别是云计算相关领域仍然会发生持续的变化。
我们在新的一年里会看到SaaS五大发展趋势:1.企业会在个体消费研究方面加大投资规模目前很多对消费者的研究还停留在静态的方式上,比如通过问卷调查和对原始数据进行分析。
更多的企业会在个性化定制服务方面加大投入。
这些企业往往会通过社交网络,大数据技术的应用以及直接的接触(电子邮件和社交媒体)来了解客户的需要。
像购买动机,生活方式以及内心需求这样的细节都很重要。
营销策略的关键是要提高客户的满意度,激发客户的品牌价值意识,所以营销不仅仅是一种服务。
2.云数据服务将会赶超传统意义上的存储云存储其实是减去了你购买硬件的步骤,你可以使用一些IaaS平台提供的云存储空间,将资金、人力等资源投入度较高的问题交由亚马逊、谷歌、阿里云这些服务商去解决。
云存储基本都会提供数据备份功能,而市面上例如多备份这种专门做数据备份的SaaS提供备份服务的,在数据遭受丢失或篡改的时候可以及时进行恢复或迁移。
希望企业必须重视数据的安全工作,避免数据外泄。
3.更多的SaaS 应用会行业化定制像医疗卫生行业,制造业以及零售业将会开发出更多适用其领域的应用程序。
SaaS应用中多租户若干关键技术研究
容器化技术则是一种更为轻量级的安全隔离技术,它只隔离应用程序和其相 关的依赖项,而不隔离操作系统。尽管这两种技术都有其优点和不足,但我们认 为基于容器的多租户安全隔离技术更加适合SaaS应用。因为这种技术能够减少资 源占用和提高系统性能,同时能够更好地支持快速迭代和扩展。
对于SaaS应用来说,多租户实时数据处理也是一个非常关键的技术。它能够 提高数据处理的速度和质量,满足不同租户的需求。现有的多租户实时数据处理 技术主要包括基于事件驱动架构和基于流式处理架构。事件驱动架构是指通过事 件来驱动应用程序的执行,当一个事件发生时,应用程序会响应并处理该事件。
流式处理架构则是指将数据流分成一系列小的数据块,并逐个处理每个数据 块。然而,这两种技术都存在一些不足之处,如数据处理的速度和可靠性无法保 证、数据处理的质量和精度较低等。因此,我们建议采用基于分布式和并行处理 的多租户实时数据处理方案。这种方案能够提高数据处理的速度和可靠性,同时 能够保证数据处理的质量和精度,满足不同租户的需求。
SaaS应用中多租户若干关键技术研 究
基本内容
Software as a Service (SaaS)是一种流行的云计算服务模式,它通过互 联网提供软件应用和服务给多个租户。多租户技术是SaaS应用的核心,它允许多 个租户共享同一个软件实例,但彼此之间的数据和应用程序是隔离的,从而保障 了数据安全和隐私。本次演示将围绕数据备份与恢复、安全隔离和实时数据处理 三个关键技术,探讨SaaS应用中的多租户技术。
1、生产过程稳定性和产品质量 显著提高。
2、设备故障率降低30%,维修 成本降低20%。
3、物料库存成本降低15%,库 存周转率提高20%。
4、人员绩效得到有效评估和提 升,生产效率提高10%。
如何使用Docker构建容器化的多租户SaaS平台
如何使用Docker构建容器化的多租户SaaS平台随着云计算和软件即服务(SaaS)的兴起,多租户的架构模式越来越受到关注。
在多租户架构中,不同的用户(或租户)共享同一套应用程序,但数据和配置是相互隔离的。
为了实现这种架构,使用容器化技术如Docker,可以提供更高效、可扩展和安全的解决方案。
本文将讨论如何使用Docker构建容器化的多租户SaaS平台。
1. 容器化基础容器化技术是使用容器来运行应用程序的方法。
Docker是最流行的容器化平台之一。
通过使用Docker,我们可以将应用程序、环境和依赖项打包到一个独立的容器中,并在不同的宿主机上运行。
这种方式可以提供更好的可移植性、开发和部署效率。
2. 构建多租户SaaS平台的好处使用容器化技术构建多租户SaaS平台有很多好处。
首先,容器可以提供更好的隔离性,确保每个租户的数据和配置是相互独立的。
其次,容器的快速启动和停止能力使得平台可以根据用户需求进行动态扩展和收缩。
此外,容器化的平台还可以提供更高的可靠性和安全性。
3. 多租户架构设计在构建多租户SaaS平台之前,我们需要进行架构设计。
首先需要决定如何将不同的租户隔离开来,以确保数据和配置的独立性。
可以使用不同的数据库实例或不同的命名空间来实现这一点。
其次,需要考虑如何进行租户认证和授权。
最后,需要考虑如何对资源进行分配和调度,以满足用户需求。
4. 构建Docker镜像构建Docker镜像是构建容器化多租户SaaS平台的关键步骤之一。
首先,需要选择一个合适的基础镜像。
然后,需要编写Dockerfile来定义容器的配置和依赖项。
在构建镜像的过程中,可以使用Docker的多阶段构建功能来减小镜像的大小并提高构建速度。
构建好的镜像可以上传到Docker Hub或私有的Docker Registry中。
5. 搭建容器编排平台搭建容器编排平台是构建容器化多租户SaaS平台的另一个关键步骤。
Kubernetes是目前最受欢迎的容器编排平台之一。
SaaS架构中多租户
SaaS架构中多租户SaaS架构中多租户的概念租户可以理解为部署在云端的客户,通常出现在2B的企业中:例⼀、电商平台,⼀个电商可能多家使⽤那么对于⼀家使⽤电商的企业来说就是⼀个租户。
例⼆、政务中,⼀个平台下多个学校,也属于此类型。
SaaS多租户三种架构1. 独⽴数据库这是第⼀种⽅案,即⼀个租户⼀个数据库,这种⽅案的⽤户数据隔离级别最⾼,安全性最好,但成本较⾼。
优点:为不同的租户提供独⽴的数据库,有助于简化数据模型的扩展设计,满⾜不同租户的独特需求;如果出现故障,恢复数据⽐较简单。
缺点:增多了数据库的安装数量,随之带来维护成本和购置成本的增加。
这种⽅案与传统的⼀个客户、⼀套数据、⼀套部署类似,差别只在于软件统⼀部署在运营商那⾥。
如果⾯对的是银⾏、医院等需要⾮常⾼数据隔离级别的租户,可以选择这种模式,提⾼租⽤的定价。
如果定价较低,产品⾛低价路线,这种⽅案⼀般对运营商来说是⽆法承受的。
2. 共享数据库,隔离数据架构这是第⼆种⽅案,即多个或所有租户共享Database,但是每个租户⼀个Schema(也可叫做⼀个user)。
优点:为安全性要求较⾼的租户提供了⼀定程度的逻辑数据隔离,并不是完全隔离;每个数据库可⽀持更多的租户数量。
缺点:如果出现故障,数据恢复⽐较困难,因为恢复数据库将牵涉到其他租户的数据;如果需要跨租户统计数据,存在⼀定困难。
3. 共享数据库,共享数据架构这是第三种⽅案,即租户共享同⼀个Database、同⼀个Schema,但在表中增加TenantID多租户的数据字段。
这是共享程度最⾼、隔离级别最低的模式。
对⽐优点:三种⽅案⽐较,第三种⽅案的维护和购置成本最低,允许每个数据库⽀持的租户数量最多。
缺点:隔离级别最低,安全性最低,需要在设计开发时加⼤对安全的开发量;数据备份和恢复最困难,需要逐表逐条备份和还原。
如果希望以最少的服务器为最多的租户提供服务,并且租户接受牺牲隔离级别换取降低成本,这种⽅案最适合。
将单租户应用程序转换为多租户应用程序
将单租户应用程序转换为多租户应用程序有关如何增强多租户应用程序的7 个技巧作为专业技术人员,我们的目标之一就是分享我们的经验和教训,在本例中,这些知识来自构建可以在IBM® SmartCloud Enterprise 产品上运行的多租户应用程序所涉及的相关工作。
尤其值得一提的是,我们将介绍用于将现有单租户SOA 应用程序转换为多租户软件即服务(SaaS) 应用程序的一些技术。
我们最终还是希望有人能够开发出一些工具,帮助开发人员自动完成从单租户应用程序向多租户应用程序的复杂转换。
首先,我们来测试一下来自IBM Perspective(我们对此相当熟悉)的一些传统解决方案。
IBM 行业解决方案IBM 提供了包含丰富功能的广泛而又深入的软件产品组合。
此外,根据客户的反馈,我们可以确信,IBM 是惟一一家能够将这些功能组合起来,提供帮助客户解决特定业务问题的开箱即用行业解决方案的公司。
这样,客户就能减少所花费的时间,并通过集成IBM 提供的软件产品来满足其特定业务需求。
IBM SOA Reference ArchitectureIBM SOA Reference Architecture 是获取面向服务架构价值主张的关键推动者,它有助于创建灵活的、可重用的资产,从而实现端到端业务解决方案。
Open Group SOA Reference Architecture (SOA RA) 标准为面向服务的解决方案(包括云解决方案)中的构造、设计和实现决策提供了指导和选项。
SOA Reference Architecture 标准旨在为创建和评估架构提供一个蓝图。
此外,它还为将SOA 的基本元素集成到解决方案或企业架构中提供了洞察力、模式和构建块。
IBM SOA 参考架构有助于创建由业务流程、业务工具、消息交换、服务集成和数据访问所驱动的解决方案,并封装旧版软件和组件。
有关的更多信息,请参阅 IBM 在SOA 参考架构标准中的优势。
使用IBM中间件实现SaaS解决方案,第2部分:启用多租户的方法
使用IBM中间件实现SaaS解决方案,第2部分:启用多租户的方法简介在为现有或新的多租户服务设计 web 交付时,服务供应商常常面对许多设计选择。
图 1 显示了五种主要方法。
方法 1 是所有租户共享单一应用程序实例,也就是相同的服务器、中间件和应用程序。
方法5 是租户在单独的服务器上运行自己的应用程序实例(当前许多Application Service Provider [ASP] 采用这种方法)。
在这两种方法之间,还有至少三种主要方法,它们具有不同的资源共享程度和开发复杂性。
每种方法提供不同的收益(在可伸缩性和运营效率方面),需要不同的成本(在开发复杂性和投入市场的时间方面)。
图 1. 启用多租户的五种主要方法在本文中,我们将使用多种角色描述启用多租户的不同方法:1.服务供应商:负责以 web 交付模型提供服务/解决方案2.服务开发人员:服务/解决方案的开发人员3.租户:服务供应商的客户4.最终用户:租户可能有一个或多个服务/解决方案用户服务供应商可以使用以下五种主要方法:1.包含单一应用程序实例的共享中间件2.包含多个应用程序实例和共享地址空间的共享中间件3.包含多个应用程序实例和单独地址空间的共享中间件4.用与租户相关的虚拟映像实现虚拟化5.a). 用中介层实现虚拟化6.在单独的服务器上运行多个实例的 ASP 模型下面几节详细描述这五种方法。
在决定采用哪种方法时,了解每种方法的成本和收益会有帮助。
我们在后面的一节中提供成本/收益分析。
共享中间件方法方法 1、2 和 3 都在多个租户之间共享中间件和应用程序组件,只是程度不同。
下面看看每种方法的示例。
方法 1:包含单一应用程序实例的共享中间件所有租户共享操作系统、服务器以及中间件和应用程序的单一实例。
实现的方法是用租户标识参数对应用程序的单一实例进行参数化。
例如,如果应用程序有 web 服务接口和实现,那么在接口中的操作和数据对象中添加租户 ID 参数。
SAAS多租户设计参考方案
SAAS多租户设计参考方案
本文档是针对多租户共用同一套软件应用程序和数据库实例及数据结构的设计方案,也是多租户最难实现的数据隔离的解决方式。
其隔离机制需要从软件结构上设计实现,包括web 层的用户session,实体类,数据库表等设计内容,该实现方案技术门槛较高,但租户共享程度非常高,租户和供应商的投入成本将为最低。
1.数据表设计
要实现多租户共享同一数据库及数据表结构,数据表必须通过额外的TenantlD字段区租户数据,以达到租户之间的数据隔离的目的。
1.1权限表
业务表
2.实体类设计
数据表与实体关联紧密,基本上表的字段与实体的属性对应。
从而我们可以通过抽象出一个基类BaseEntity,将TenantlD属性加入BaseEntity,所有的实体只需继承该类即可。
3. 用户Session设计与操作
当用户登陆系统时将用户的TenantlD信息保存于SESSION中。
在会话过程中,对数据进行操作(包括查询)时,将会话的T enantlD 信息赋值于对应实体类中,这样查询数据时将可以通过实体的TenantlD进行租户信息在数据库中的操作(过滤查询),从而实现租户数据的隔离与安全。
(在进行数据库访问操作前必须强制拦截,验证TenantlD是否为空)。
从单租户改进到多租户模式的简单实现
从单租户改进到多租户模式的简单实现
单租户就是传统的给每个租户独立部署一套web + db 。
由于租户越来越多,整个web部分的机器和运维成本都非常高,因此需要改进到所有租户共享一套web的模式(db部分暂不改变)。
基于此需求,我们对单租户的程序做了简单的改造实现web多租户共享。
具体改造如下:
1.web部分修改:
a.在用户登录时,在线程变量(ThreadLocal)中记录租户的id
b.修改jdbc的实现:在提交sql时,从ThreadLocal中获取租户id, 添加sql 注释,把租户的schema 放到注释中。
例如:/*!mycat : schema = test_01 */ sql ;
2.在db前面建立proxy层,代理所有web过来的数据库请求。
proxy层是用mycat实现的,web 提交的sql过来时在注释中指定schema, proxy层根据指定的schema 转发sql请求。
SaaS多租户实现方案概述
SaaS多租户实现方案概述一、前言前段时间做了一个SaaS项目,想把项目中的技术点整理出来,于是列了一个大纲,主要会有以下几篇文章:1、SaaS多租户实现方案概述2、MySql数据库SaaS多租户实现方案3、MongoDB文档数据库SaaS多租户实现方案4、Redis缓存数据库SaaS多租户实现方案5、工作流activiti5的SaaS多租户实现方案6、工作流activiti6的SaaS多租户实现方案7、工作流activiti的SaaS多租户实现方案(终极方案)8、多租户常见问题解决方案暂时先列这么多,以后有其他内容再补充。
在讲解决方案之前,先普及几个概念二、什么是SaaSSaaS,是Software-as-a-Service的缩写名称,意思为软件即服务,即通过网络提供软件服务。
SaaS平台供应商将应用软件统一部署在自己的服务器上,客户可以根据工作实际需求,通过互联网向厂商定购所需的应用软件服务,按定购的服务多少和时间长短向厂商支付费用,并通过互联网获得Saas平台供应商提供的服务。
三、什么是多租户多租户技术(multitenancy technology)或称多重租赁技术,是一种软件架构技术,它是在探讨与实现如何于多用户的环境下共用相同的系统或程序组件,并且仍可确保各用户间数据的隔离性。
四、SaaS多租户的实现方案4.1mysql数据库的SaaS多租户实现方案数据库的多租户实现方案主要有3种:1、独立数据库模式独立数据库模式是每个租户独享一台数据库服务器,独占数据库服务器的CPU、内存和硬盘资源,数据物理上隔离。
不同租户的数据库访问请求互不影响,隔离级别最高,但是成本也是高。
2、共享数据库独立schema模式共享数据库独立schema模式,多个租户共用一台数据库服务器,但是这一台数据库服务器上装了多个mysql数据库,每个租户独占一个MySQL数据库,多个租户共享数据库服务器的CPU和内存,数据物理上部分隔离,一个租户的数据库访问请求过多会影响到其他租户的数据库连接。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2011ᑈ9᳜ Jour nal on C om m uni cat i ons Sept em ber 2011 ৰ32ोৰ9Aᳳ Ở ֵ ᄺ V ol.32 N o.9A ҢӴඣՈW ebᑨϬࠄࢣ᠋SaaSᑨϬՈḰᤶᮍ⊩৴࣯1ēཷϏ2ēчძີ2ē৴χຕ2ēहᄱ1˄1. ቅϰᄺ ᩥਜ਼ᴎᄺϢᡔᴃᄺ┦ˈቅϰ ⌢फ250101˗2. ⌢फᄺ ቅϰׅตචɳ๗ᱎ࿁ᩥਜ਼ᡔᴃₑ⚍ᅲɀᅸˈቅϰ ⌢फ 250022˅ᨬ ᡅ˖ӴඣՈW ebிඣࢣ᠋SaaS˄sof t w ar e-as-a-ser vi ce˅ᑨϬՈḰൟৃҹₑ߽Ϭḳӊᰈ⑤ˈ┑ԢḳӊݡᓔথՈՈ៤ᴀ ┭ˈ✊໐ֲࠡУỞϬՈẅࢿᎹᮍ⊩DŽℸྐ᱃ϟᦤߎњϔѢ᭄ЁⒸӊՈӴඣW ebிඣࢣ᠋SaaSᑨϬḰᤶՈỞϬᮍ⊩DŽ᪩ᮍ⊩ᵒড়ˈᇍԧՈᑨϬሖồᯢDŽ.݇⏲᪑˖ḳӊे᳡ࡵ˗ࢣ᠋˗ᑨϬḰᤶ˗ѥᩥਜ਼˗ḳӊₑᵘЁߚିো˖TP311.52 ᭛Dzᷛۅ˖B ᭛তේো˖1000-436X(2011)9A-0133-06 From t he m odern W eb appl i cat i ons t o t he m ul t i-t enant SaaS sol ut i onM A K un1, 2, Y A N G B o2, C H EN Zhen-xi ang2, M A B i ng-xi an2, LI Q i ng-zhong1(1. School of C om put er Sci ence and Technol ogy, Shandong U ni ver si t y, Ji nan 250101, C hi na;2. Shandong Pr ovi nci al K ey Labor at or y of N et w or k B ased I nt el l i gent C om put i ng, U ni ver si t y of Ji nan, Ji nan 250022, C hi na)A bst ract: M i gr at i ng exi st i ng W eb appl i cat i ons t ow ar d SaaS (sof t w ar e-as-a-ser vi ce) appl i cat i ons can r euse t he l egacysof t w ar e asset s and cut dow n t he r e-devel opm ent cost and r i sk. H ow ever, i t l acked gener i c m i gr at i on appr oaches and t ool s. A gener i c appr oach w as pr oposed t o qui ckl y enabl e exi st i ng W eb appl i cat i ons t o be m ul t i-t enant based on t he dat a m i ddl ew ar e. I t i nt r oduced t he m ul t i-t enancy at a m i ni m um r evi si on of t he or i gi nal appl i cat i on. Thi s appr oach i s t r anspar-ent and l oosel y coupl ed f or t he appl i cat i on l ayer.K ey w ords: sof t w ar e-as-a-ser vi ce; m ul t i-t enancy; appl i cat i on conver si on; cl oud com put i ng; sof t w ar e r ef act or1 ᓩᣄѥᩥਜ਼[1]៤ЎѻϮАǃᄺᴃА♭ৃ⛁ՈЁᖗᩲLDŽ܄᪂ᮑǃᑇৄḳӊሖᮍ☦ˈI T ॖଚঢѝ▔⚜DŽSaaSᰃ˄sof t w ar e-as-a-ser vi ceˈḳӊे᳡ࡵ˅ˈᅗᰃϔỞẋI nt er netᦤկḳӊࢣϬՈᓣ[2]DŽᔧࠡᏆඓ᳝ᕜᑨϬSaaSḰൟˈ՟བὲӊிඣǃϹᄤଚࡵǃᅶ᠋݇ிˊǃӕϮᰈ⑤ᢈߦǃˊֵᙃிඣࡲ݀Ⴎࡼ࣪DŽI D C(i nt er nat i onal dat a cor por at i on)8⌟ˈ2010~2014ᑈᳳⒸSaaSᏖഎՈᑈড়⑃ɋʌẂ25.3%[3]DŽ ℸѢѥ܄ᶊᵘЁՈSaaSᰃI TᜐϮЁՈᶤѯᑨϬՈᴹᱏ[4]ˈབԩᖿợǃ᳝ᬜഄᇚӴඣՈW ebிඣḰᤶЎᮄ݈Ոࢣ᠋SaaSᑨϬবᕫकߚắߛˈ໐ᢧއẝϔ⒲Lг៤ЎӫSaaSᦤկଚ☦ЈՈϔ᫂LDŽᬊः᮹ᳳ˖2011-07-05ₕ-ֲ˖ᆊႮ✊ᄺₕᰈࡽ-ֲ˄60903099˅˗ᮄϪ൮ӬࢄҎᠡᬃᣕᩥߦₕᰈࡽ-ֲ˄N C ET-10-0863˅˗ቅϰׅႮ✊ᄺᵄߎ☖ᑈₕᰈࡽ-ֲ˄J Q200820˅˗ቅϰׅᄺᡔᴃথሩᩥߦₕᰈࡽ-ֲ˄2011G G X10116˅˗⌢फᏖ☖ᑈᡔᯢ᯳ᩥߦₕᰈࡽ-ֲ˄20110112˅Foundat i on It em s: The N at i onal N at ur al Sci ence Foundat i on of C hi na (60903099); The Pr ogr am f or N ew C ent ur y Excel l ent Tal ent s i n U ni ver s i t y (N C ET-10-0863); Pr ovi nci al N at ur al Sci ence Foundat i on f or O ut s t andi ng Y oung Schol ar s of Shandong Pr ovi nce (J Q200820); Technol ogy D evel opm ent Pr ogr am of Shandong Pr ovi nce (2011G G X10116); Y out hf ul Sci ence and Technol ogy St ar Pl an (20110112)g134g Ở ֵ ᄺ ৰ32ोᴀ᭛ඈඋᵘབϟ˖ৰ2ᅆẴ᭛Ոּ݇Ꮉྐ᱃˗ৰ3ᅆᦤߎњϔᇚӴඣՈW ebிඣḰᤶЎࢣ᠋SaaSᑨϬՈᵒড়ϨᇍᑨϬồᯢՈỞϬᮍ⊩ˈḰᤶẋ࣏ЁˈՓϬ᭄ЁⒸӊᅲɴࢣ᠋ĽᗻˈᑊᇚிඣĽᕕഫẟᜐߚᏗᓣᾬึ˗ৰ4ᅆᰃᴳ᪱DŽ2 ּ݇ᎹSaaSՈѥᑨϬऎ߿Ѣ݊ҪӴඣW ebᑨϬՈЏᡅĽᕕህᰃˈࢣ᠋ϡ◄ᡅЎḳӊᯱф᩼ৃˈা◄ᡅᣝ+ՓϬₓᬃҬࢣₕˈϡ◄ᡅᅝញϢමᡸDŽℸˈࢣ᠋ᡔᴃᰃ៤ࡳᅲɴSaaSՈ݇⏲[5]DŽ᠔ࢣ᠋ˈᰃᣛѥᑨϬ࿁ᆍ൷ᑨϬ࣏ᑣՈϡৠϬ᠋ˈৠᯊՓϬ᠋ᢍᕫᑨϬ࣏ᑣᅠܼ᳡ࡵѢҪӀDŽᅲ┉ϞˈSaaS ᑨϬ࣏ᑣᖙ/ৠᯊгᰃϔࢣ᠋ᑨϬ࣏ᑣDŽ᩼SaaSḳӊ݀ৌՈC EOӀ῁ϔႸᩨЎˈབᵰ≵᳝ࢣ᠋ˈὧМথሩSaaSϮࡵᰃඡ᮴ৃ࿁ՈDŽSaaSՈᇐ້Sal esf or ՈC EO2009ᑈ᪸ẋˈࢣ᠋ᰃSaaSᦤկଚቻᕫ៤ࡳՈ݇⏲DŽ ֲࠡˈᅲɴࢣ᠋᳝ϡৠՈᮍ⊩DŽSal es f or ce. comᰃ₋ϬᑨϬᵓ˄appl i cat i on t em pl at e˅ᅲɴࢣ᠋[6]DŽẝᮍᓣՈ⚍ᰃᓔথҎਬᖙ/ᅵ᯽ϔᅮՈஂcᙝᮄՈේ࣏ൟˈএₑᵘἛНՈW ebᑨϬDŽℸᯊᆩࢣ᠋◄ᡅₓϾᗻ࣪ᅮࠊˈ߭◄ᡅׂᬍₓՈிඣ⑤ۅDŽৰ2ᮍḜᰃՓϬI B MЁⒸӊᅲɴSaaSDŽ᪩ᮍ⊩ₑᮄ᪂ᩥࢣ᠋ߛܹ⚍˄ent r y poi nt˅ˈϡৠࢣ᠋ỞẋϡৠՈߛܹ⚍ᢹ᳝ϡৠՈ᳡ࡵඈӊ[7]DŽ᪩ᮍ⊩◄ᡅᓔথҎਬњᢧॳྟ࣏ᑣˈᅲɴࢣ᠋Пࠡߚࡿϡৠࢣ᠋Ո᳡ࡵඈӊDŽৰ3ᮍḜᰃএᅲɴἛНՈW ebிඣࠄᮄ݈ՈSaaSᑨϬՈẅࢿˈ᪩ᮍḜৃҹޣḿᑨϬᦤկଚՈᯣᢙˈᰃϔᅲɴἛНிඣࢣ᠋ᑨϬᑇ⒥ẋ⏵Ո᳔ՇᮍḜDŽֲࠡ᩼ᄺ້ᦤߎњ᪩ᮍ⊩ՈԧᢧއᮍḜDŽSakam ot oᦣẴњϔᇚϹᄤᄺдிඣḰᤶЎSaaSՈᮍḜ[8]ˈ݊ॳˊ⍌ᇍĽᅮᑨϬிඣ⑤ۅخₓׂᬍˈẝᑊϡᰃϔỞϬՈḰᤶᮍḜDŽC ai ඝߎњࢣ᠋Ոߚࡿ‑าᅮࠊᮍ⊩[9]ˈԚᰃẅࢿẋ࣏ᇍᑨϬሖᑊϡᰃồᯢՈDŽA s ht onඝߎњϔϾࢣ᠋M V CᑨϬՈϔϾᎹࣙM vcEx[10]DŽᇍѢM vcExḚᶊ᪂ᩥՈࢣ᠋ᑨϬˈᑨϬிඣϵḌᖗഫৃọഫඈ៤DŽϡৠࢣ᠋ৃҹọᢽ້ₑݭৃọഫҢ໐ᔶ៤ϔϾৃᅮࠊՈSaaSᑨϬDŽ᪩ᮍ⊩ՈϡᱷП໘ᰃࢣ᠋ՈϾᗻ࣪ᅮࠊᰃỞẋҷۅ໐ϡᰃ‑าᴹᅮࠊՈˈᔧࢣ᠋᭄ₓᯊˈᑨϬிඣҷۅӮবᕫ⍽▂ពDŽᕁ✊᩼ᄺ້ᇍḰൟᮍḜẟᜐۘऺˈ✊໐ֲࠡҡУϔỞϬՈẅࢿᎹᮍ⊩DŽϢПϡৠˈᴀ᭛₋Ϭ᭄ЁⒸӊᅲɴϔồᯢỞϬՈҢἛНW ebிඣࠄSaaS ᑨϬՈḰᤶDŽ3 ҢӴඣՈW ebிඣࠄSaaSᑨϬՈḰᤶᮍḜᴀᅆড়ᅲ┉-ֲЁӴඣՈW ebிඣࠄSaaS ᑨϬՈḰᤶग़࣏ˈᘏߎᆩᑆᓣDŽᕁ✊ᮍḜᦣẴҹJava EE W ebḚᶊЎ߾՟ˈԚৠḋՈॳˊгỆϬѢ݊ҪᡔᴃᑇৄDŽ3.1 ᐌᢅՈࢣ᠋ൟࢣ᠋ᰃއᅮSaaSᬜɋՈ݇⏲DŽᐌᢅՈࢣ᠋ൟৃߚЎ3ି[11]ˈབ1᠔߾DŽ1) ưএᑨϬưএ᭄ᑧ˖᪩ᮍḜাᰃᇍܰӊẟᜐњ݅ѿˈᑊϡᰃףℷᛣНϞՈѥᑨϬDŽ↣ᮄϔϾࢣ᠋ˈ῁ӮᮄᑨϬ᭄ᑧՈϔϾᅲ՟DŽབᵰࢣ᠋◄ᡅᅮࠊ࣪ᑨϬˈ◄ᡅׂᬍּᑨࢣ᠋Ոᅲ՟DŽ᪩ᮍḜᕁ✊╘ࡿᅝܼᗻʌǃ♒ऩˈԚᰃ៤ᴀʌˈᑊϡỆࢣ᠋ṇՈᑨϬ˗2) ݅ѿᑨϬưএ᭄ᑧ˖᪩ൟϟˈ↣Ͼࢣ᠋݅ѿৠϔϾᑨϬᅲ՟ՈᣋᯡˈՓϬϡৠՈ᭄ᑧᅲ՟ˈࢣ᠋ᅮࠊֵᙃৃҹỞẋּᑨՈ‑าᴹᅲɴ˗3) ݅ѿᑨϬ᭄ᑧᓣ˖ẝᰃᬜɋ᳔ʌˈᬃᣕṇʌࢣ᠋ᆚᑺˈ↣᳜Ẕᜐමᡸ៤ᴀ᳔ԢՈˊᛇࢣ᠋ՈѥᑨϬDŽԚᰃẝൟḰᤶᯊ▂ҹᅲɴˈ߱ྟᯊ◄ᡅᇍᑨϬ᭄ẟᜐₑᵘˈ៤ᴀṇʌDŽЎᡅ݅ѿ᭄ᑧᓣˈᕔᕔ↣Ͼᜬᢊ◄ᡅ⏏ࡴϔϾࢣ᠋ᷛࠡහˈϬѢᜬ߾Ľᅮࢣ᠋DŽ┨ℸПˈՓϬ᪩ൟ◄ᡅᇍॳ᳝ிඣϮࡵỿṕẟᜐׂᬍDŽ՟བˈॳ᳝ிඣϮࡵỿṕЁՈᵘ࣪ᶹ᪦᪱ᣄ˄SQ L˅᪱হ◄ᡅׂᬍˈẋⒸ఼г◄ᡅࡴܹࢣ᠋ẋⒸᴵӊDŽབᵰҷۅЁӏԩᖙᡅᾬߚУẝϔỿṕˈὧМ῁ᇚᤳᆇᑨϬ࣏ᑣՈ᭄ᅝܼᗻDŽҢϞẴ3ൟߎˈᡅᇚӴඣՈW eb ிඣḰᤶЎϔϾࢣ᠋SaaSᑨϬ࣏ᑣˈỞᐌ◄ᡅᇍᑨϬ࣏ᑣҷۅخߎₓׂᬍˈᑊₑᮄ᪂ᩥ‑า᭄ᑧˈẝᰃϔϾᴖՈ໐Ϩᆍᯧߎ⏝Ոẋ࣏DŽℸˈᅲ┉ᑨϬᯊҹϞ3ൟ῁ᄬᓞDŽ1 ᐌᢅSaaSᑨϬࢣ᠋ൟৰ9A ᳳ Ƞസ˖ҢӴඣՈW eb ᑨϬࠄࢣ᠋SaaS ᑨϬՈḰᤶᮍ⊩ g 135g3.2 Ѣ᭄ЁⒸӊՈࢣ᠋᭄ൟϢϞẴ3ൟϡৠˈЎὃܡᇍӴඣW eb ᑨϬ⑤ۅՈₓׂᬍˈ₋Ϭ᭄ЁⒸӊᴹᅲɴϔồᯢᯧᠽሩՈࢣ᠋ᴎࠊDŽ2ඝߎњ᭄ЁⒸӊՈЏᡅඈ៤ඈӊˈࣙᣀᢑᬥ᭄ൟǃJD B C ᢺᢧᵤ఼ǃSQ L ᪻∖Ჳϵǃ᭄Ệ‑఼ǃ᭄ѥDŽ2 ₋Ϭ᭄ЁⒸӊՈࢣ᠋ൟ1) ᇍĭˊ᭄ᑧẟᜐᠽሩDŽᕁ✊ࢣ᠋ৃҹ݅ѿĭˊ᭄ᑧˈԚϡৠࢣ᠋◄∖ϡৠˈℸᖙ/᳝ϔᴎࠊᇍᄬټ᭄Ոĭˊ᭄ൟẟᜐᠽሩDŽϔָᢆՈᮍ⊩ᰃՓϬࣄѓᜬDŽࣄѓᜬˈЎϔ᳝ᬜഄᄬټࢣ᠋᭄Ոᢧއᮍ⊩ˈᰃᣛᇚӫࢣ᠋ϡৠᓣՈ᭄ᄬټࠄϔᓴᜬЁDŽϵѢϡৠࢣ᠋ᓣՈ᭄߫ϡৠˈℸࣄѓᜬᮍ⊩₋Ϭϔᓴ᭄߫ṇՈᜬᴹᄬټϡৠࢣ᠋Ո᭄DŽԚᰃᆩࢣ᠋ᅮࠊ᪩߫˄ࢴᓣा˅ˈህỤ៤њ᭄ᜬᄫ↉Ո⌾᯽DŽϢПϡৠˈ᭄ЁⒸӊЁˈ᭄ৃᅮࠊᗻՈᬃᣕᰃỞẋᠽሩܗ᭄ൟ˄ext ended m et a dat a m odel ˅ᴹᅲɴՈˈेᇚϡৠࢣ᠋᭄ՈϾᗻᦤপߎᴹˈϬܗ᭄ᴹẟᜐᦣẴˈ᳝ᬜഄὃܡњ᭄ᰈ⑤Ո⌾᯽ˈབ3᠔߾DŽᠽሩܗ᭄ൟ↣ᜐ᭄ЎϔϾ⏲ؐ˄key-val ue ˅ᑣᇍˈϬѢᄬټࢣ᠋◄ᡅᅮࠊՈQֵᙃDŽ᪩ᮍ⊩ৃҹࡴ᭄ᄬټՈᠽሩᗻˈޣᇥᓣा᭄ᄫ↉Ո⌾᯽ˈ⒵ᱷϡৠࢣ᠋ՈϾᗻ࣪◄∖DŽᆩϡৠࢣ᠋ᄬټ᭄ഛּৠˈᠽሩܗ᭄ൟৃҹׅЩDŽᇍѢᠽሩܗ᭄ൟՈᅲɴˈϵѢᪿ݊ݭǃẔ௦ᗻ࿁ᡅ∖ṇʌˈৃҹՓϬN oSQ L [12]ᄬټᠽሩܗ᭄ൟՈ⏲ؐᑣᇍDŽ3 ᠽሩܗ᭄ൟϟ☦ඝߎḌᖗ᭄ൟᠽሩܗ᭄ൟՈᅮНDŽḌᖗ᭄ൟᅮНЎϝܗඈˈC oreD at aM odel = (Tenant I D , Ext endedI D , C ol um ns )ˈϬѢᄬټࢣ᠋᭄Ո݅ᗻֵᙃˈ݊ЁˈTenant I D Ўࢣ᠋ේোˈExt endedI D ЎᠽሩේোˈC ol um ns Ў᭄߫▊ড়DŽᠽሩܗ᭄ൟᅮНЎϝܗඈˈExt endedD at aM odel = (Ext endedI D , K ey , Val ue )ˈϬѢᄬټࢣ᠋᭄ՈϾᗻֵᙃˈ݊ЁˈK ey Ўᠽሩ߫ˈVal ue ЎᠽሩؐDŽᠽሩܗ᭄ൟᕁৃҹ᳝ᬜഄᢧއᓣाՈ⒲LˈԚᰃैࡴњᩥਜ਼ՈᴖᗻDŽЎњ᪈Ԅᅮࠊ߫ᰃ৺ؐᕫ₋Ϭᠽሩܗ᭄ൟᄬټˈඝߎ᪈Ԅߑ᭄Eval Fun=µ(α/β)+(1 µ)γDŽ݊Ёˈµᜬ߾ϡৠࢣ᠋᳝᪩ᅮࠊ߫Ո↨ₑˈαᜬ߾ᅮࠊ߫ᝯ᪃⒲Ո᭄ˈβᜬ߾ᅮࠊ߫᠔ᜬՈ᪃⒲᭄ˈγᜬ߾ࢣ᠋᳡ࡵ൫DŽৃҹߎˈEval Fun ᱎˈ᪩ᅮࠊ߫ᱎϡᅰᄬټᠽሩܗ᭄ൟDŽ2) ЎᅲɴӴඣW eb ிඣՈồᯢḰൟˈ᭄ЁⒸӊЁ⏏ࡴϔϾᢑᬥ᭄ൟ˄abs t r act dat a m odel ˅ˈབ2᠔߾DŽᢑᬥ᭄ൟাᰃϔϾᬃᣕJ D B C ᷛޚՈ᭄ᑧҷˊˈᑊ≵᳝ᅲ┉ֱᄬӏԩ᭄DŽᅗϢᏆ᳝ՈW eb ᑨϬ࣏ᑣ᭄ᑧᵘᅠּܼৠˈּ᳝ৠՈᜬǃᢊᄫ↉DŽℸˈᑨϬሖҡৃҹϡׂᬍՈࠡᦤϟᣝॳ᳝ՈỞᩳणᩲϢᢑᬥ᭄ൟּẢDŽ3) ϔᮍ☦ˈࡴJ D B C ᢺᢧᵤ఼ˈϬѢᢺg136g Ở ֵ ᄺ ৰ32ोᢑᬥ᭄ൟϞՈ᠔᭄᳝ᑧ᪡ᑊẟᜐᢧᵤDŽᢑᬥ᭄ൟϞՈ᠔᭄᳝᪡ৃҹᝯJ D B Cᢺᢧᵤ఼ቻˈᇍॳϬ᠋uՈs qlẟᜐᢧᵤˈ✊ৢҢϞϟ᭛ЁপߎϬ᠋Ոࢣ᠋ֵᙃ˄Tenant I D˅ЎẋⒸᴵӊˈᇍSQ L᪱হẟᜐḰᤶᣐTˈϣ៤ᮄՈs ql DŽẝᇚֱܲ݅ѿ᭄ᑧЁՈ᭄ᅝܼᗻˈᅲɴϡৠࢣ᠋᭄ՈỿṕưএDŽϵѢᇍቻՈSQ L᪱হՈ໘ˊᰃᇚᅗӀᦤѸඝᢑᬥ᭄ൟПৢᅠ៤ՈˈJ D B Cᢺᢧᵤ఼Ởẋ‑าּᑨՈᢈ߭ᴹᅲɴࡴᴖՈࠡาৢาࢣ᠋ᅮࠊ᪡ˈ໐ϡ◄ᡅᇍॳྟW ebிඣϮࡵỿṕخӏԩׂᬍDŽ᪂ḰᤶࠡϬ᠋uᠻᜐs qlˈᜬ߾Ўs ql(u)ˈḰᤶৢϬ᠋◄ᡅᠻᜐT(s ql(u), Tenant I D)ˈ݊ЁˈTenant I D=P(u)ЎϬ᠋uՈࢣ᠋ֵᙃˈPЎϬ᠋Ϣࢣ᠋Ոᇘߑ᭄ˈTЎSQ LḰᤶߑ᭄ˈpr e(Tenant I D)Ўࢣ᠋ࠡาϾᗻ࣪᪡ˈpos t(Tenant I D)Ўࢣ᠋ৢาϾᗻ࣪᪡DŽϵW ebிඣЁՈSQ Lࠄᮄ݈ՈSaaSᑨϬЁՈSQ LՈḰᤶৃҹᜬ߾Ўs ql(u) => pr e(Tenant I D)ĤT(s ql(u), Tenant I D)Ĥpos t(Tenant I D)DŽ4) SQ L᪻∖Ჳϵ˄SQ L r eques t r out e˅ৃҹᇚϡৠᜬᢊSQ L᪻∖ߚᬷࠄ᭄ѥЁՈᅆ⚍ˈᅲɴ᭄ൖָߛߚˈབ2᠔߾DŽᔧSaaSᑨϬᠽሩࠄϔᅮᢈৢˈℸᯊ⍋ₓՈ᭄◄ᡅ☢ᐌᖿՈẔ௦ợᑺˈ▊Ё໘ˊՈ᭄ሖ߭៤њκ<DŽℸˈৃҹᣝ+᭄Ո⏲ẟᜐߚऎˈߚᬷ᭄Ո᪃⒲ᯣṁDŽӴඣՈᬷ߫ߚऎਜ਼⊩ᰃᣝ+Āߚऎ=⏲ m od ᭄ᅆ⚍ᘏ᭄āDŽ᪩ᮍ⊩Ո⚍ᰃᔧ᭄ᅆ⚍ᘏ᭄ব࣪ᯊˈɴ᳝⏲Ոᬷ߫ߚ‑Ӯথϣব࣪DŽৃҹ₋ϬϔႸᗻᬷ߫[13]˄cons i s t ent has hi ng˅ਜ਼⊩ẟᜐᬍẟDŽ᪩ਜ਼⊩Ո⏲ाⒸᰃ᳝└ՈˈߚᏗϔϾ਼Ϟˈᬷ߫ᯊҢ᭄ᇘࠄՈԡาᓔྟ⊓਼.ᯊ⍌ᶹᡒˈᇚ᭄ֱᄬࠄৰϔϾᅆ⚍DŽৠϔϾᅆ⚍ݙᾬᅲɴᪿݭߚࡿˈᓎএM as t er-Sl aveࡃᴀˈЏ᭄ᑧϬѢݭ᪡ˈ໐Ң᭄ᑧϬѢᪿ᪡DŽẝₐ₋Ϭ᭄ᑧࠊ˄dat abas e r epl i cat i on˅ᴹֱ╠M as t erSl aveПⒸ᭄ϔႸᗻDŽ4ඝߎњ᭄ᑧM as t er/Sl aveࠊՈਜ਼⊩DŽਜ਼⊩˖᭄ᑧM ast er/Sl aveࠊਜ਼⊩ṗܹ˖m ast erṗߎ˖sl aveSl aveϞՈI/O ẟ࣏ẢM ast erˈቻপҢᣛᅮ᮹ᖫ᭛ӊПৢՈbi nar y l ogݙᆍ;M ast erỞẋࠊI/O ẟ࣏ḍẘಲbi nar y l ogֵᙃ;Sl aveᇚᬊࠄՈbi nar y l ogձ⏏ࡴࠄSl aveՈr el ayl og ᭛ӊՈ᳔;Sl aveՈSQ Lẟ࣏Ӯᢧᵤr el ay l ogݙᆍˈᑊႮᵯᠻᜐ;4 ᭄ᑧM ast er/Sl aveࠊਜ਼⊩5) Ўњᅲɴ⍋ₓ᭄ՈʌᬜẔ௦ˈՓϬN oSQ L Ўṉࡽ␠ڣᄬټˈϬN oSQ LՈӬ[12]ṉࡽᦤछ᭄ᗻ࿁DŽᅲɴ᪩ᮍ⊩া◄ᡅᇍॳ᳝ᑨϬிඣՈ᭄ሖخϔϾඣϔՈᇕញህৃҹᅲɴₑϬDŽ՟བˈᆩॳྟᑨϬՓϬH i ber nat e᭄ᣕЙ࣪Ḛᶊ[14]ˈ߭ৃҹָՓϬH i ber nat e఼֕ᅲɴN oSQ Lṉࡽᄬټˈਜ਼⊩བ5᠔߾DŽẝᶊᵘॳ᳝ՈՈ݇ி᭄ᑧ܄ϞࡴњϔሖṉࡽՈN oSQ LᄬټˈҷۅׂᬍₓϡˈैৃᠽሩᗻǃৃϬᗻᗻ࿁Ϟ᰻ࠄњ☢ᐌՈϬDŽN oSQ L݇ி᭄ᑧᢹּ᳝ৠՈ␠ڣ᭄ˈᶤѯḍЏ⏲ᶹ᪦ՈഄᮍˈৃҹՓϬʌᬜՈN oSQ L᭄ᑧᶹ᪦ˈᦤʌњ⍋ₓ᭄Ոᶹ᪦ợᑺDŽਜ਼⊩˖ϬN oSQ LЎṉࡽ␠ڣՈਜ਼⊩ṗܹ˖ᣕЙ᭄࣪ᅲԧent i t yṗߎ˖voi dpubl i c cl ass H i ber nat eLi st enerext ends D ef aul t LoadEvent Li st eneri m pl em ent s Post U pdat eEvent Li st ener,Post D el et eEvent Li st ener, Post I nser t Event Li st ener {publ i c voi d onPost I nser t(Post I nser t Event event) {N oSQ L.i nser t(event.get I d(),event.get Ent i t y());}publ i c voi d onPost D el et e(Post I nser t Event event) {N oSQ L.del et e(event.get I d(),event.get Ent i t y());}publ i c voi d onPost U pdat e(Post I nser t Event event) {N oSQ L.updat e(event.get I d(),event.get Ent i t y());}}5 ᭄ሖₑᵘৢᬃᣕN oSQ Lṉᄬ␠ڣᅲɴᮍ⊩6) ЎSaaSᑨϬࡴࢣ᠋ˊࡳ࿁ˈࣙᣀࢣ᠋Ⴎࡽ⊼ݠǃᑨϬᩦⓉᑨϬᩴᯪDŽSaaSᑨϬᖙ/᳝ࢣ᠋ˊഫˈৃҹᮍ֓ՈࡴᮄՈࢣ᠋ˈᲣᳮᑨϬ࣏ᑣՓϬᚙމˈϣ៤↣ϾᩦⓉࢣ᠋Ոᩴᯪˈᇍࢣ᠋ẟᜐᬊ᯽ˊDŽ7) ỞẋW eb Fi l t erᴹᠽሩᑨϬ࣏ᑣՈϬ᠋ᵯӑɀ᪅⌕࣏ˈҢ໐ՓϬ᠋ԿᔩৢेৃϢᇍᑨՈࢣ᠋ऍ‑ˈᑊᇚỞẋᵯӑɀ᪅ՈϬ᠋Ոࢣ᠋ֵᙃֱᄬϞϟ᭛˄cont ext˅ЁˈབSessi on້C ooki eЁDŽᆩॳྟՈW ebᑨϬՈᵯӑɀ᪅ѢSpr i ng Secu-r i t yˈὧМৃҹ߽ϬࠊডḰ˄I oC, i nver si on of cont r ol˅ᡔᴃ[15]⊼ܹϔᴵᵯӑɀ᪅ᢈ߭ˈ᪩Ϯࡵᢈ߭ẔᜐѢࢣ᠋Ḱᤶ఼ЁՈϮࡵᢈ߭ᓩ᪢ˈϬѢᶹᡒϢϬ᠋༘݇Ոࢣ᠋ֵᙃ˗ᆩॳྟՈW ebᑨϬᵯӑɀ᪅ṇऩˈৃҹỞẋᇍᵯӑɀ᪅ҷۅׂᬍˈ⏏ࡴৰ9A ᳳ Ƞസ˖ҢӴඣՈW eb ᑨϬࠄࢣ᠋SaaS ᑨϬՈḰᤶᮍ⊩ g 137gϔѯ⌕࣏ᴹᶹᡒᄬټᮄᜬЁՈϬ᠋Ϣࢣ᠋ᇍ+݇ிDŽ᪩ᮍ⊩ՈӬ⚍ᰃৃҹሑₓᇥഄׂᬍϮࡵỿṕˈ໐ᰃ₋Ϭ‑าᇍᑨϬẟᜐᠽሩDŽ 3.3 ࢣ᠋᭄ൟߚᵤවϞ᠔ẴˈՓϬ᭄ЁⒸӊᅲɴࢣ᠋ĽᗻՈᮍḜᇍᑨϬሖồᯢˈॳྟW eb ிඣৃҹϡ◄ᡅₓׂᬍህৃҹẋ⏵Ўᮄ݈ՈSaaS ᑨϬDŽ݊Ёˈᢑᬥ᭄ൟЎᅝܼᗻᡅ∖ṇʌՈࢣ᠋ᦤկњϔᅮ࣏ᑺՈỿṕ᭄╘ࡿ˗Ѣ⏲ؐᑣᇍՈᠽሩܗ᭄ൟ᳝ࡽѢ᭄࣪ൟՈᠽሩ᪂ᩥˈ⒵ᱷϡৠࢣ᠋ՈưĽ◄∖ˈޣᇥњẋᓣाᄫ↉Ոᰈ⑤⌾᯽˗ SQ L ᪻∖ᲳϵᇚϡৠᜬᢊՈSQ L ᪻∖ߚᬷࠄ᭄ѥЁՈᅆ⚍ˈᅲɴ᭄ൖָߛߚ˗N oSQ L Ўṉࡽ␠ڣᄬټᦤछњ⍋ₓ᭄ՈẔ௦ợᑺDŽᑨϬḰᤶ៤ᴀЏᡅߚЎ߱ྟࢣ᠋ₑᵘ៤ᴀ↣᳜ᣕනՈẔᜐමᡸ៤ᴀDŽϟ☦ඝߎᬊᬃᑇᜥ⚍ՈᅮНDŽᬊᬃᑇᜥ⚍=∑߱ྟₑᵘ៤ᴀᬊᬃᑇᜥ⚍↣᳜Ẕᜐමᡸ៤ᴀৃҹߎˈᆩḰൟৢՈᑨϬЎ⑃ᳳ᳡ࡵˈЎњᕫࠄṇԢՈ↣᳜මᡸ៤ᴀˈṇʌϔѯՈ߱ྟₑᵘ៤ᴀгᰃড়ˊՈˈẝপއѢ᳡ࡵᯊⒸᰃ৺⑃ѢᬊᬃᑇᜥᯊⒸDŽ6ඝߎњϡৠᮍḜՈऩ៤ᴀߚᵤ៤ᴀᩥਜ਼݀ᓣ˖ᅲᮑ᪩ᮍḜ߱ˈҡ◄ᡅᇍɴ᳝ՈᑨϬẟᜐඊᖂᬍỤˈࡴ᭄ЁⒸӊˈℸ݊៤ᴀ݅ѿưѿᮍḜПⒸ˗╓ᯊⒸࡴˈϔᮺࢣ᠋ᴎࠊᅲɴˈᓔথҎਬৃҹা݇⊼Ϯࡵᴀᵯˈℸ᳔ඌՈᣕනමᡸ៤ᴀӮẕѢ݅ѿᮍḜDŽ6 ՓϬ᭄ЁⒸӊՈࢣ᠋ᮍḜϢ݅ѿǃưѿᮍḜՈ៤ᴀᇍ↨4 ᴳ᪱ᴀ᭛ᦤߎњϔἛНՈW eb ிඣSaaS ᑨϬḰൟՈỞϬᢧއᮍḜˈ᪪ඊভẴњᅲɴࢣ᠋ĽᗻՈ᭄ЁⒸӊḚᶊDŽᴀᮍḜՈĽ⚍᳝˖1) ՓϬ᭄ЁⒸӊᅲɴࢣ᠋ĽᗻՈᮍḜˈᇍѢᑨϬሖồᯢˈॳ᳝W eb ிඣϡ◄ᡅₓׂᬍՈ܄ϞህৃҹḰᤶЎSaaS ᑨϬ˗2) ᢑᬥ᭄ൟЎᅝܼᗻᡅ∖ṇʌՈࢣ᠋ᦤկњϔᅮ࣏ᑺՈỿṕ᭄╘ࡿ˗3) ỞẋѢ⏲ؐᑣᇍՈᠽሩܗ᭄ൟˈ᳝ࡽѢ᭄࣪ൟՈᠽሩ᪂ᩥˈ⒵ᱷϡৠࢣ᠋ՈưĽ◄∖ˈᅲɴњ᭄ሖՈࢣ᠋ᅮࠊ˗4) SQ L ᪻∖ᲳϵᇚϡৠᜬᢊSQ L ᪻∖ߚᬷࠄ᭄ѥЁՈᅆ⚍ˈᅲɴ᭄ൖָߛߚ˗5) N oSQ L Ўṉࡽ␠ڣᄬټᦤछњ⍋ₓ᭄ՈẔ௦ợᑺDŽ খ᭛Dz˖[1] B U Y Y A R , Y EO C S, V EN U G O PA L S, et al . C l oud com put i ng andem er gi ng I T pl at f or m s: vi si on, hype and r eal i t y f or del i ver i ng com -put i ng as t he 5t h ut i l i t y[J]. Fut ur e G ener at i on C om put er Syst em s, 2009, 25(6): 599-616.[2] SU LTA N N. C l oud com put i ng f or educat i on: a new daw n[J]. I nt er na-t i onal Jour nal of I nf or m at i on M anagem ent , 2010, 30(2): 109-116. [3] M A H O W A LD R P. W or l dw i de sof t w ar e as a ser vi ce 2010-2014f or ecast : sof t w ar e w i l l never be t he sam e[EB /O L]. ht t p://w w w.i /get doc.j sp?cont ai ner I d=223628, 2010.[4] C A TTED D U D , H O G B EN G. C l oud com put i ng: benef i t s, r i sks andr ecom m endat i ons f or i nf or m at i on secur i t y[J]. C om m uni cat i ons i n C om put er and I nf or m at i on Sci ence, 2009, 72(1):17.[5] B EN LI A N A , H ESS T, B U X M A N N P. D r i ver s of saas-adopt i on-anem pi r i cal st udy of di f f er ent appl i cat i on t ypes[J]. B usi ness & I nf or m a-t i on Syst em s Engi neer i ng, 2009, 1(5): 357-369.[6] W EI SSM A N C , B O B R O W SK I S. The desi gn of t he f or cecomm ul t i t enant i nt er net appl i cat i on devel opm ent pl at f or m [A ]. SI G M O D 09 Pr oceedi ngs[C ]. U SA , 2009. 889-896.[7] O SI PO V C , G O LD SZM I D T G , TA Y LO R M , etal . D evel op and depl oy m ul t i -t enant W eb-del i ver ed sol ut i ons usi ng I B M m i ddl ew ar e: par t 2: appr oaches f or enabl i ng m ul t i -t enancy [EB /O L]. ht t p://w w w. i bm .com /devel oper w or ks/w ebser vi ces/l i br ar y/w s-m ul t i t enant par t 2/i ndex.ht m l , 2009.[8] SA K A M O TO N. C onst r uct i on of SaaS-based e-l ear ni ng syst em i nj apan[J]. Sci ent i f i c & Techni cal Jour nal , 2009, 45(3): 290-298. [9] C A I H , ZH A N G K , ZH O U M , etal . A n end-t o-end m et hodol ogy and t ool ki t f or f i ne gr anul ar i t y SaaS-i zat i on[A ]. C LO U D 09 Pr oceed-g138g Ở ֵ ᄺ ৰ32ोȠസ˄1981-˅ˈϻˈቅϰ⌢फҎˈቅϰᄺमϣˈЏᡅۘऺᮍЎ᭄ᑧϢḳӊᎹ࣏ǃᩥਜ਼ᴎตචDŽᴼ⊶˄1965-˅ˈϻˈቅϰ⎘मҎˈमˈ⌢फᄺᬭᥜˈЏᡅۘऺᮍЎᩥਜ਼ᴎตචϢᱎ࿁ֵᙃ໘ˊDŽ┌ᯢຘ˄1979-˅ˈϻˈफḖϰҎˈमˈ⌢फᄺࡃᬭᥜˈЏᡅۘऺᮍЎP2Pᩥਜ਼ǃḳӊᎹ࣏DŽȠ⚇ܜ˄1977˅ˈϻˈቅϰऩওҎˈमˈ⌢फᄺࡃᬭᥜˈЏᡅۘऺᮍЎ᳡ࡵᩥਜ਼ǃPet r iตˊϢᑨϬǃᱎ࿁ֵᙃ໘ˊDŽᴢᑚᖴ˄1965-˅ˈϻˈ⊇࣫࿕ওҎˈमˈቅϰᄺᬭᥜˈЏᡅۘऺᮍЎᑨϬ▊៤Ϣֵᙃ▊៤ǃֵᙃตḐǃ᭄ҧᑧǃ᭄ᑧᡔᴃDŽi ngs[C]. I ndi a, 2009. 101-108.[10] A SH TO N R. M vcEx-m ul t i-t enant M V C appl i cat i ons[EB/O L].ht t p://m vcex. codepl , 2010.[11] C H O N G F, C A R R A R O G, W O LTER R. M ul t i-t enant dat a ar chi t ec-t ur e[EB/O L]. ht t p://m sdn.m i cr osof /en-us/l i br ar y/aa479086.aspx,2006.[12] STO N EB R A K ER M. SQ L dat abases v N oSQ L dat abases[J]. C om m u-ni cat i ons of t he A C M, 2010, 53(4): 10-11.[13] K A R G ER D, LEH M A N E, LEI G H TO N T, et al. C onsi st ent hashi ngand r andom t r ees: di st r i but ed cachi ng pr ot ocol s f or r el i evi ng hot spot s on t he w or l d w i de W eb[A]. STO C 97 Pr oceedi ngs[C]. U SA, 1997.654-663.[14] X U E M, ZH U C. D esi gn and i m pl em ent at i on of t he hi ber nat e per si s-t ence l ayer dat a r epor t syst em based on J2EE[A]. PA C C S 09 Pr o-ceedi ngs[C]. C hi na, 2009. 232-235.[15] B O R A N B A Y EV A S. D ef i ni ng m et hodol ogi es f or devel opi ng J2EEw eb-based i nf or m at i on syst em s[J]. N onl i near A nal ysi s: Theor y,M et hods & A ppl i cat i ons, 2009, 71(12): e1633-e1637.້ҟ˖。