软件架构师, IBM Software Services for WebSphere
2004 年 11 月
本文研究了按需客户关系管理(Customer Relations Management,CRM)联合解决方案的体系结构详细信息,该解决方案由 IBM 和 Siebel 开发。本文的研究包括该方案的设计,以及由这个联合项目而产生的新颖独特的业务模型。
引言
CRM OnDemand 证明了客户可以从按需业务中直接受益:通过将软件交付为服务,IBM 和 Siebel 使得客户可以在最少附加费用和启动时间的条件下,利用关键任务应用程序软件。本文详细研究了这个体系化解决方案,并特别关注了 Java™ 2 Enterprise Edition (J2EE) 平台和 WebSphere® Application Server 的使用。通过阅读本文,读者将了解该解决方案的应用程序体系结构、物理和托管体系结构,以及安全性体系结构,这些都可以应用到他们自己的解决方案开发中。
CRM OnDemand 的业务驱动
CRM OnDemand 是根据市场需求而产生的,它极好的说明 IBM 履行了将 OnDemand 解决方案交付给客户的承诺,并实现了 Siebel 关于提供 "CRM for Everyone" 的承诺。CRM OnDemand 是 IBM 和 Siebel 的联合品牌产品,联合开发、联合市场和销售,并由 IBM 托管。
CRM OnDemand 并不是一种参考基准实现。它的决策由市场时机和真实项目因素决定,并不是在任何时机和环境下都有效。因此,本文是一份成功行业解决方案的报告,而不是按需业务参考基准。
CRM OnDemand 的构建远不止创建一个连接到 Siebel 后端的基于 Web 的新 UI。让我们看一看公共托管多用户按需应用程序尤为重要的不同特征。
作为服务提供者的应用程序(ASP)是一种按需业务模型,它面向用户和独立软件供应商(ISV),可适用于不同的用户和容量,而不是典型的企业 Web 应用程序。因此它具有不同的可用性和可伸缩性需求。它强调不同的使用模式,比如自服务(self-service)、订阅模型,可针对每个组织而定制,并且简化了(或者取消了)客户端管理。ASP 应用程序由多用户共享,并在不同的安全性环境中操作,这使安全性问题变得尤为重要。它所使用的物理托管体系结构需要通过合理数量的硬件和 IT 人员来支持并交付应用程序,以适合每月 $75 的业务模型(要获取价格信息,请参阅 Siebel CRM OnDemand)。因此,Siebel 应用程序首次使用了新的平台和操作环境 —— J2EE 和 WebSphere。
由 CRM OnDemand 带来的 ASP 模型主要特性有:
- 基于 Internet 的交付模型。
- 多用户,基础架构共享组件的使用,网络和人员。
- 基于模板的纵向解决方案,具备对每个组织进行定制的合理能力。
- 为每次使用付费(pay-per-use)的记账方式。
CRM OnDemand 联合解决方案的四个主要驱动因素是:
- 定制 CRM 解决方案的市场时机。
- J2EE 和 .NET 模型的采用。
- ASP 按需模型的兴起。
- 中小企业(SMB)的市场挑战。
尽管 CRM 应用程序市场非常巨大,应用程序产品销售额大约在 35 亿到 40 亿美元左右,但定制构建应用程序的预计市场却更加庞大(根据 Gartner Group 和 Siebel Systems 的估算)。IBM 和 Siebel 于是发布了该下一代行业解决方案来应对这个 210 亿美元的定制构建 CRM 市场。
CRM OnDemand 背后的另一个驱动因素是两个应用程序体系结构的结合。Gartner Group 最新的一项研究(请参阅参考资料中的 Gartner Group:CIO Update)表明,在将来的企业中,将会出现两个体系结构规范的结合:通行的 J2EE 规范和新兴的 .NET 技术。我们看到 J2EE 体系结构正在得到认同,并得到了广泛的采用。IBM 和 Siebel 联合起来利用这个因素,以提供 Siebel CRM 应用程序对基于 WebSphere 的 J2EE 的支持。
随着企业 Java 的广泛采用,应用程序基础架构层变得更加规范和通用。这使应用程序交付中的服务模型得到了发展,ISV 必须对此做出反应,以避免成为“无软件[许可证]”趋势的受害者。这个 ASP 解决方案使 Siebel 的应用程序供应商技术集与 IBM 支持服务模型中的客户端的经验得到了结合。
十年来我们提高了 CRM 的复杂性。现在我们正在降低这个门槛。 这个 CRM OnDemand 广告词非常准确的点出了该解决方案的本质。有 CRM 需求的组织不再受软件购买和部署模型的约束;CRM OnDemand 提供了 CRM 解决方案和供应者,并可以随时间而不断发展。实际上,CRM OnDemand 业务模型使中小企业能买的起并可以使用通过 Web 交付的一流 CRM 解决方案,这一些都归功于托管领域的市场领导者:IBM。同时,非常重要的一点是,该解决方案能够与用户的按需业务共同发展:低启动资金,为每次使用付费的记账方式,并最终成功升级为完整的内建(on-premises)企业解决方案。
CRM OnDemand 在 2003 年 12 月可用,已经有几百个客户订购了 CRM OnDemand。一些客户使用 CRM OnDemand 作为独立的 CRM 解决方案,但其他较大的客户正在计划将 CRM OnDemand 与他们的 Siebel 内建软件或者其他企业解决方案进行集成。
CRM OnDemand 解决方案体系结构
CRM OnDemand 解决方案必须满足特定于 ASP 和 SMB 的一组需求。如果要用一句话来总结这些需求,那就是:
创建易于使用、易于托管、易于管理、易于通过 Web 进行安全访问的解决方案。
作为一个 ASP 按需应用程序,CRM OnDemand 需要快速而直观,基于简单的 HTML 页面和可收藏的 URL。它需要允许实时、用户和公司定制,并可通过低带宽、高等待时间的连接来访问。它还需要提供自注册、公司自管理,并将不同的 Siebel 模块结合到完整一致的基于 Web 的 CRM 应用程序中,这些 CRM 应用程序为灵活的中小企业销售人员而特制。
这不是部属于公司或企业的应用程序,也不是专用托管应用程序:它是在 Internet 上公共托管的。该模型推动了服务质量需求的提高,预期用户数量不同于并远大于任何特定的企业,因此性能和可伸缩性需求要求具备在大量用户和数据条件下的次秒级(sub-second)响应时间。由于不同的公司在多用户模式下共享同一个基础架构,因此安全性极为重要。
William of Occam 是十三世纪的英国哲学家,它在牛津大学研究和教学,记得他用过一个节约规则,称为“Occam 剃刀”。 |
William of Occam 的剃刀规则的原文是 "Pluralitas non est ponenda sine neccesitate" 或者 "plurality should not be posited without necessity",即“如无必要,勿增实体”。这一规则被 CRM OnDemand 架构师所使用,希望建立在各种选项中进行选择的标准,以得到恰当的适用性。这一规则与 IBM 的按需体系结构原则(请参阅参考资料中 IBM 电子商务按需基础架构的体系结构框架)相结合,采用开放标准(如 J2EE 和 XML)来将应用程序体系结构组件化,将核心粒度功能公开为服务,并将这些服务部署到基于灵活开放标准的平台和中间件上。
CRM OnDemand 解决方案的逻辑体系结构如图 1 所示。
图 1. CRM OnDemand 解决方案的逻辑体系结构

因为在客户程序的版本设置以及连接速度和带宽上没有限制,为满足零客户端管理的需求,CRM OnDemand 使用一个基于客户的“瘦”浏览器。瘦客户连接到表示层:发布到 IBM HTTP Web 服务器和 IBM WebSphere 应用服务器上的 CRM OnDemand Web 应用。这样,CRM OnDemand 利用 J2EE 实现它的 Web 应用程序的架构、发布和配置模型:
- 利用Model 2-MVC控制器模式,J2EE Web 包容器被用来通过 servlet、 JSP 和定制标签处理 HTTP 请求。
- J2EE 1.3 安全机制充分发挥了在授权与身份验证、JASS、Java2 安全方面的能力。
- WebSphere 中间件平台被用来提供包括集群和工作负载平衡(WLM)、集中式发布和管理(网络发布和管理)等必要的QoS(服务质量)以及扩展性、性能和监控等基础功能。
Siebel 企业服务器和 Siebel 分析服务器 被用来在业务层提供现有业务模块的业务逻辑和数据访问:
- 表示层通过 JCA 连接器连接到 Siebel 对象管理(OM)业务逻辑,其中 JCA 连接器使用 Siebel SISNAPI 通信协议。这一标准 JCA 功能取代了 Siebel SWE Web 插件的 Siebel 专有 RPC 通知 功能,它原来用来支持 Siebel Web 客户实现。
- 业务逻辑作为一组离散的、虚拟的、无状态的服务被提供。CRM OnDemand 适配器服务负责虚拟化以及基于服务的应用程序开发(SODA)。
这一按需解决方案的另外一个特色在本文中尚未涉及,它数据输入/输出能力(例如,初始化数据的载入),一组用来实现日历、e-mail 和协议之间同步的 Web 服务,离线客户和 CRM 企业集成通过 WebSphere Business Integrator 和 Siebel Universal Application Network 在 SMB 外扩展。
应用程序架构
表示层的设计目标是用来实现简单、条理清晰、容易理解的用户界面。 CRM OnDemand J2EE Web 应用程序 通过一个成熟的模型-视图-控制器(MVC)设计将请求发布、表示层的数据处理和视图的绘制分隔开。基于 Servlet 的控制器处理请求并返回响应,管理回话状态等等。会话状态存储在 HTTP 会话中,Websphere 应用服务器通过临时的浏览器 cookie 来维护它。Siebel 数据控制器(模型)构建 Siebel 服务器请求以及每页的消息。页面聚合通过 Servlet 和 JSP 来实现,并输出带有最少脚本的简单的HTML标记。页面由一组模板构成,模板控制页面中不同元素的布局。一组称为 Applet (Siebel 术语,不要和 Java applet 混淆)的组件用来链接 UI 工具和 OM 服务(作为将来发布的可能选择,基于 Portlet API 构建的 applet 原型已实现)。UI 工具是一组大约 30 个参数化、可重用的构件,它实现了HTML页面中一些基本的 UI 控件如日历、列表和表格等等。这些 UI 由 Siebel 仓库中预先定义的 Java 代码元数据驱动的。
我们需要一个能够适应底层 Siebel 改变的弹性架构(例如,不同版本,带有特定扩展的不同 Siebel 应用程序模块的混合等)。因此,OnDemand Web 应用程序对于底层业务层没有直接的可视性。CRM OnDemand 使用一个不同的按需解决方案规则:虚拟化的使用和面向服务的架构。
虚拟化是一种展示计算资源的方式,它允许应用程序获取资源的值而不需要将资源的物理实现、位置和包紧紧绑定在一起。换句话说,它不是一个物理视图,而是一个逻辑视图,该逻辑视图提供系统资源和通过统一接口访问资源的方式。
与直接被表示层使用相反,Siebel 应用服务器的功能被设计为可重用的业务过程组件。这些组件被虚拟化并表示为一组无状态服务。这些服务不会保存它们上一次的调用,同样也不关心下一次的请求,它们独立于上下文和其它服务的状态。它们只是简单地提供信息,实现将业务数据从一个有效地可持续状态转换到另外一种状态。
SOA 可以通过 Web 服务实现,但并非必须要通过 Web 服务实现。由于一些实际原因,CRM OnDemand的第一个 Release 版本并没用通过 Web 服务实现表示层和业务层的通信。一组 Web 服务被实现用来进行集成,就像前面提到的。如果需要的话,Siebel 服务的虚拟化允许我们很容易提供另外一种实现方式,包括基于 Web服务的实现。
图 2. 面向服务的 CRM OnDemand 架构

服务接口的粒度与获取的 Siebel OM 函数密切相关,CRM OnDemand Web 应用程序提供的一个标准的服务调用 API 如下所示:
outputArgs = SiebelCon.invoke(sessId,serviceName,methodName,inputArgs);
求参数和响应是称为 RowSets 的 XML 层次属性集。会话 ID 是 Siebel 服务器用户会话的标志,它建立在用户单点登录的基础之上,作为 HTTP 会话的一部分由 WebSphere 来存储,在每次请求都被发送。就像前面提到的,虚拟化的 Siebel 服务是无状态的,不需要保存会话状态。 Siebel 会话 ID 只是用来缓存以区别用户 ,如果丢失的话,可以轻易的重新获得。
通过在 SISNAPI 通信协议上使用附加 XML 编组和请求批处理,CRM OnDemand 服务实现提供有效传输的最佳性能。在 Siebel 服务器端,CRM OnDemand 适配器负责处理服务请求,完成正确的分组和处理批量请求,实现应用层访问控制(将在下一节中详细论述)以及缓存响应结果集。
最终的应用流程如下所示,它描述的是一个典型的读请求,此流程与更新请求的流程相似:
- 客户端产生一个页面 HTTP 请求。
- CRM Web 应用程序建立一个连接并发送请求给适配器服务。出于性能考虑请求被编组并批量传输,并不需要划分事务。
- 适配器服务处理请求,应用访问控制并查询 OM。
- OM 执行业务逻辑,通过 Siebel 数据管理(DM),开始一个事务,获取请求的数据并提交事务。
- 适配器服务以 XML 格式产生一个离线的数据副本,并发送到 CRM Web 应用程序。
- CRM Web 应用程序释放连接。
- CRM Web 应用程序将离线的数据对象和绘图对象混合在一起并重新绘制整个页面。
安全架构
安全自然是 CRM OnDemand 主要关注的领域之一,它包含大量的需求。
CRM OnDemand 的绝大部分页面都需要认证,它需要通过一个发布在主站点的 Websphere 服务器集群来进行验证。我们通过 J2EE 基于表格的登录连接到 Websphere 应用服务器上的轻量级第三方认证(LPTA)JAAS 登录模块,用来实现用户认证和安全、认证、加密的令牌使得集群内单点登录成为可能。在 Websphere 应用服务器上,安全机制在每一个管理服务器的本地运行。这样,对单个进程来说,安全工作负载将不会称为瓶颈,且一个安全失败将只会影响一个进程。
另一个安全需求是一个单一的通用用户认证需要在系统的表示层(Websphere 应用服务器)和后台(Siebel 服务器)之间传播和共享。为实现这个目的,我们实现了一个定制的用户注册表;一个 WebSphere 架构扩展点使得它可以和 Siebel 服务器共享一个通用的 LDAP 用户注册表。然而,要提供后台 Siebel 企业服务器和 Siebel 分析服务器的单点登录,仅有通用用户注册表本身是不够的。为实现这一点,WebSphere 应用程序需要透明的登录且并建立相应的后台会话。一个 J2EE Servlet 过滤器被用来作为 WebSphere 安全检查认证 Servlet。过滤器通过专门开发的安全服务来认证用户。这使得我们可以通过业务端实现用户认证,并重用 Siebel 认证和认证逻辑,包括基于公司管理角色的访问。基于 Siebel 服务器端的安全服务的认证返回用户角色、密钥和 Siebel 会话 ID,所有这些都存储在 HTTP 会话中。
服务器端执行和访问服务器端资源(例如,访问文件系统中的文件、获取环境变量,打开通信Socket)的应用程序权限受控于 J2EE 安全机制,它对 UI 页面(Servlet 和 JSP URL)同样也使用严格的基于角色的访问控制。剩下需要实现基于角色和权限的限制访问能力就是数据和功能了。扩展应用程序安全机制用来满足这一点,它包括一个根据 HTTP 会话中得到的角色信息决定访问控制的认证类,以及一个受限的 SISNAPI 管道,它只允许经过明确认证的安全业务组件和服务方法的有限访问。
公开的业务组件的可视性决定于 3 个不同的层次:组织(公司)、团队和所有者,调用更新、插入和删除都需要单独的许可。
为了保证客户与服务器之间以及服务器内部之间传输数据的安全性和完整性,我们在客户和服务器间使用 HTTPS 。另外,在 Web 应用服务器和 Siebel 服务器间使用 SSL 和 56 位的加密。Siebel 服务器和数据库之间的交互同样也是安全的。
除了利用 SSL 和严格的 SISNAPI 管道,多层模式也有助于防止层之间进行非预期的交换。这一点尤其在经过 Internet 上表示层和业务层之间的防火墙时尤其明显。
为了实现网络安全,虚拟局域网(VLAN)被用来进一步显示可视性。安全性的一个重要方面就是监控攻击和侵入的能力,这一点可以通过部署一个侵入监控系统来防止跨站点脚本、SQL 注入等行为。
IT 架构
CRM OnDemand 物理解决方案架构必须以一种安全的方式将应用程序发布到 Internet。并且在现有硬件和 IT 人员的前提下,使得应用程序面向广大用户,跨越多个业务领域,提供 24 x 7 的服务。
作为一个纯粹的服务,软件的按需概念只是一个概念式的创新(参见参考资料中的 Gartner Group: 管理),但它的最终胜利取决于 ASP 发送服务的能力以及处理性能、组织和发送等问题。在我们的示例中,作为服务提供者-—风险与利益共享,Siebel 和 IBM 之间的强力合作关系,是一个很好的保证。
图 3 显示了一个CRM OnDemand 高层物理架构。通过重复配置和灾难恢复以及发布组件集群,设计满足了高可用性需求。
图 3. 高层物理架构

为实现可伸缩性需求,WebSphere 和 Siebel 服务器通过会话相关和服务器失败时的故障切换透明配置实现了负载均衡,服务器包括 IBM HTTP 服务器,WebSphere 应用服务器以及 Siebel 服务器。为了利用它们先进的缓冲机制,Siebel 分析服务器是厂商相关的。如前面所述,为保证层间部署的硬件防火墙的效率,通过扩展应用程序安全、限制访问服务以及所有通信流的加密,表示层的 WebSphere 安全得到进一步增强。
结束语
IBM 和 Siebel 发起新一轮按需行业解决方案来满足定制 CRM 解决方案市场。本文介绍了如何提供可用的按需 Siebel 电子商务应用程序,使得它支持 J2EE 并运行在 IBM WebSphere 应用服务器上。这种 J2EE 特性是很重要的一步,它为将来的开发提供了扩展选项。这一 ISV 解决方案是 J2EE 编程模型、IBM 中间件和 OnDemand 转换的一次尝试。
致谢
作者对 Siebel 和 IBM 联合开发小组的所有架构师和工程师表示感谢,是它们创造了 CRM OnDemand 解决方案,本文正是对于他们工作成果的描述。
参考资料
- 您可以参阅本文在 developerWorks 全球站点上的 英文原文。
- IBM 电子商务按需基础设施架构框架, Jeff Nick,2003 年 7 月
- CIO 更新:如何对比 Java 和 .NET 以及未来的发展, Gartner Group, 2003 年 6 月
- 管理更新:关于应用服务市场您应该了解什么?, Gartner Group, 2003 年 8 月
- IBM to Host Siebel CRM OnDemand, But Demand Is Uncertain, Gartner Group, 2003 年 10 月
- 参阅 Siebel CRM OnDemand 以获取演示范例和更多信息。
- IBM Bookstore:以折扣价格获取 WebSphere 书籍。
关于作者
Vess Ivanov 在加拿大多伦多,他是 IBM 多伦多实验室的软件架构师。作为 WebSphere 项目组的 Software Services,他服务于整个跨北美的客户群。Vess 是体系结构团队的成员,CRM OnDemand 的 WebSphere 架构师。 |