使用 IBM 中间件实现 SaaS 解决方案,第 1 部分: 挑战和体系结构模式
 

2009-09-10 作者:Germán Goldszmidt ,Indrajit Poddar 来源:IBM

 
本文内容包括:
符合软件作为服务(Software as a Service,SaaS)交付模式的 Web 交付解决方案(其中客户从服务提供者站点订阅和访问软件,而不是获取许可证并将软件安装在自己的环境中)可以为任何规模的企业提供极具吸引力的业务价值。开发新解决方案或转换现有解决方案的解决方案开发人员以及部署这些解决方案的服务提供者都面临着若干技术挑战。多承租(multitenant )就是一个示例,其中在服务提供者环境中运行的单个软件实例服务于多个组织。本系列文章将描述通常使用面向服务的体系结构 (SOA) 技术解决这些问题的不同模式。还介绍 IBM® 软件产品如何帮助您构建和部署可扩展、可配置和成本高效的 Web 交付的多承租解决方案。

什么是多承租,其优缺点是什么?

从软件的单个共享实例将软件交付给多个客户端组织(或承租者)的能力是 Web 交付解决方案的重要要求。例如,假设有一个由银行服务提供者作为服务提供的简单银行应用程序。本上下文中的多承租 是指从银行应用程序的单个共享实例向多个银行提供银行服务的能力。图 1 说明了从共享的应用程序服务器、数据库、操作系统和物理服务器向两个银行(北卡罗来纳州第一银行和加拿大第二银行)提供的多承租银行服务。

图 1. 使用共享中间件和硬件为银行业务构建的示例 Web 交付的多承租服务
使用共享中间件和硬件为银行业务构建的示例 Web 交付的多承租服务

多承租的主要优点是具有成本高效性。在承租者之间共享软件、硬件、应用程序开发和维护成本可以降低每个承租者的成本。而且,在承租者之间共享应用程序的单个实例可以提供其他好处,例如,当升级应用程序时,所有承租者可以同时升级。

不过,多承租也会带来潜在的问题,如:

  • 隔离:因为承租者共享软件和硬件的同一实例,所以一个承租者可能会影响其他承租者的软件的可用性和性能。例如,如果共享的软件没有充足的安全保障措施,则可能会发生因一个承租者关闭共享软件而导致对共享该实例的所有承租者拒绝服务。
  • 安全性:如果共享软件没有充分的安全保障措施,则一个承租者的用户可能会访问属于另一个承租者的数据。
  • 自定义能力:因为软件是在承租者之间共享的,所以各个承租者不可能自定义该软件。例如,在没有充足的扩展点的情况下,一个承租者不可能为业务流程提供自己的实现。
  • 应用程序升级将为承租者带来问题:同时升级共享的软件可能并不是所有承租者都希望的。
  • 恢复:在承租者之间共享数据库使得很难为每个承租者单独备份和恢复数据。

虽然可以使用多种方法构建多承租体系结构,但本文主要介绍能够共享中间件和数据库的单一实例以及在多个承租者应用程序之间进行共享的技术。

多承租的其他方法包括操作系统 (OS) 级别的虚拟化。例如,VMWare、Xen 或 OpenVZ 允许操作系统的多个虚拟实例在共享的硬件实例上运行。每个虚拟操作系统实例可以执行不同承租者的软件。另一种方法是为每个承租者建立操作系统级别的边界。例如,每个承租者的应用程序可以在 IBM WebSphere® Application Server 的新实例(不同的操作系统进程)中运行。

多承租技术面临的挑战

可以根据面临这些挑战的主要组织和角色对多承租应用程序的技术挑战分类:解决方案开发人员和服务提供者。

解决方案开发人员面临的技术挑战包括:

  • 访问控制:如何在承租者之间共享应用程序资源(例如,虚拟门户、数据库表、工作流、Web 服务和 Java™ 2 Platform Enterprise Edition (J2EE) 构件),以便只有属于承租者的用户可以访问属于该承租者的实例?例如,如何确保其他银行(如北卡罗来纳州第一银行)的用户不能访问加拿大第二银行的资源(如虚拟门户)?
  • 自定义能力:
    • 数据库:在一个承租者不影响其他承租者的情况下,如何自定义共享的数据库模式?例如,在不影响北卡罗来纳州第一银行的模式定义的情况下,加拿大第二银行如何将新的数据字段引入客户概要的共享数据库表?
    • 用户界面:如何仅通过配置来自定义网站外观(即,在不更改代码的情况下)?例如,如何确保北卡罗来纳州第一银行和加拿大第二银行的银行管理员可以配置不同的设计,并在其客户概要 Portlet 中显示其他字段?
    • 业务逻辑:在不进行代码更改的情况下,如何允许为每个承租者自定义业务逻辑?例如,北卡罗来纳州第一银行如何使用不同于加拿大第二银行的最小信用记录自动拒绝贷款申请?
    • 工作流:您如何让承租者银行在共享的工作流中自定义人工任务和其他有条件任务的分配?例如,北卡罗来纳州第一银行如何确保将共享工作流中的贷款审批任务仅分配给北卡罗来纳州第一银行的员工?
  • 承租者预置:如何自动执行新承租者的预置?例如,如何使用非常少的手动步骤(即如何自动化创建新的 LDAP 子树或数据库、创建新的虚拟门户、部署 portlet 的新实例和注册新的 IBM DB2® XML 模式之类的步骤)引入新银行(例如 Fairfield Trust 第三银行)?
  • 基于使用情况的测定:如何记录服务的使用情况,以便仅根据服务使用情况向每个承租者收取服务使用费?例如,银行服务提供者管理员如何测定承租者北卡罗来纳州第一银行和加拿大第二银行的服务使用情况,以及他们的客户调用贷款申请服务的次数?

服务提供者面临的技术挑战包括:

  • 数据库共享、自定义、备份和特定于承租者的数据的恢复:服务提供者如何基于性能、管理和可扩展性标准在不同的数据库划分模式之间进行选择?例如,服务提供者如何满足从多个承租者之间共享的表仅备份自己数据的加拿大第二银行的灾难恢复要求?
  • 快速支持现有 Web 服务的多承租:如何在很少或不进行代码更改的情况下使单个承租者的 Web 服务支持多承租?例如,在不对 Web 服务接口和实现进行代码更改的情况下,如何使单个承租者的信用审核服务支持多承租?
  • 在大型企业中管理大量的第三方服务提供者和部门服务客户之间的连接性:在 Web 交付的应用程序中,大型企业中的业务部门 (LOB) 表现了承租者的许多特征。同一企业中不同的业务部门可以使用来自不同的第三方或内部服务提供者的服务。在企业中,大量的此类服务提供者可能导致中心 IT 部门的管理问题。例如,银行服务提供者企业中的不同业务部门(如信用额度和抵押贷款部门)可能使用不同的信用审核服务提供者。中心 IT 部门如何监视、授权和测定企业中不同业务部门的多个信用审核服务的使用。
  • 可伸缩性改进了硬件使用情况和特定于承租者的服务质量 (QoS):服务提供者如何改进在不同承租者之间共享的硬件使用和提供可绅缩性?服务提供者如何为不同的承租者提供不同的服务质量?例如,您如何满足有别于加拿大第二银行的服务质量需求,以便使用专用硬件承载其服务并收取较高的服务使用费用?

解决多承租技术问题的模式

您可以应用多项 SOA 技术解决与多承租相关的技术问题。

面向解决方案开发人员的模式

图 3 显示了入门级产品组件和企业级产品组件中的不同 IBM 中间件产品如何处理这些功能层。

图 3. 用于实现使用 IBM 中间件构建的示例多承租应用程序中的功能层的 IBM 中间件产品
用于实现使用 IBM 中间件构建的示例多承租应用程序中的功能层的 IBM 中间件产品

本系列文章基于上面的文章和演示,描述了使用 IBM 中间件构建多承租应用程序的一些高级技术。例如,其中一篇文章将演示如何在 WebSphere Process Server 中隔离共享的多承租工作流中的人工任务。另一篇文章将描述如何使用 Tivoli Usage and Accounting Manager 提供基于使用情况的测定和计费解决方案。

面向服务提供者的模式

  • 选择适当级别的数据层隔离,以获取自定义能力和方便地进行承租者数据管理:服务提供者可以选择:
    • 将每个承租者的数据隔离到不同的数据库。
    • 将每个承租者的数据隔离到独立的表和模式。
    • 在所有承租者之间共享一组相同的表和模式。
    在承租者之间共享模式时,自定义每个承租者的数据字段是一项难以应对的问题。本系列的后续文章将评估一组从许多方面解决这些问题的模式,其中包括性能、管理和可伸缩性。IT 还演示了一些改进可管理性的技巧,例如,介绍在所有承租者之间共享模式时,如何适应特定于承租者的数据的备份和恢复。
  • 使用 IBM WebSphere Enterprise Service Bus、IBM WebSphere Business Services Fabric 或 IBM WebSphere DataPower® SOA Appliances 为现有 Web 服务快速启用多承租: 服务提供者可能需要为现有 Web 服务快速启用多承租。为从头启用多承租,在现有实现中进行代码更改可能需要进行大量的工作。然而,可以构建基于中间件的中介层,使不同承租者的服务请求支持不同的 Web 服务端点。在本例中,不需要修改现有 Web 服务实现。本系列的后续文章将演示如何使用 WebSphere Business Services Fabric、WebSphere Enterprise Services Bus 和 WebSphere DataPower SOA Appliances 实现此模式。
  • 在大型企业中,通过中心中介层路由第三方 SaaS 服务调用:企业 IT 部门可以使用中心中介层从组织中的不同部门路由所有第三方服务调用。此类中介层可提供其他功能,如对服务使用的授权、监视和测定。本系列的后续文章将演示基于企业服务总线 (ESB) 的中介模式如何支持此类需求。
  • 使用 IBM WebSphere Application Server, Extended Edition 扩展入门级中间件,并改进硬件的使用:在开始时,通常没有充分考虑可伸缩性需求。当这些需求变得日益重要时,服务提供者通常使用大量的低成本小型服务器进行扩展。不过,扩展可能会带来其他问题。例如,此方法可能会产生以下任一问题:
    • 为支持个别承租者少有的峰值负载导致提供过多硬件。
    • 由于大量的中间件实例,增加了管理的复杂性。
  • 隔离不同承租者的应用程序,并使用 WebSphere Application Server, Extended Edition 支持特定于承租者的 QoS 需求:通过利用 IBM WebSphere Extended Deployment 中的服务器隔离策略,在共享硬件中运行其他承租者的应用程序时,服务提供者可以将承租者的应用程序隔离到专用硬件中。此外,解决方案开发人员可以利用 WebSphere Extended Deployment 中的 WebSphere Partitioning Facility 功能的编程模型构建支持多承租的应用程序。后续文章将演示如何使用 WebSphere Extended Deployment 支持特定于承租者的 QoS 需求和用于多承租的分区应用程序。

结束语

可扩展的多承租是 Web 交付 (SaaS) 解决方案的重要需求。不过,构建多承租解决方案还需要解决若干技术难题。使用 IBM 中间件,解决方案开发人员和服务提供者可以构建和部署可扩展、可自定义和可管理的成本高效的多承租解决方案。本系列的文章将介绍几个相关的 IBM 中间件功能和技术,并描述如何应用它们,以解决上述的技术难题。请继续关注!

参考资料

学习 获得产品和技术
  • 使用 IBM 试用软件开发您的下一个项目,可下载或索取 DVD 光盘。
讨论

火龙果软件/UML软件工程组织致力于提高您的软件工程实践能力,我们不断地吸取业界的宝贵经验,向您提供经过数百家企业验证的有效的工程技术实践经验,同时关注最新的理论进展,帮助您“领跑您所在行业的软件世界”。
资源网站: UML软件工程组织