dev2dev 首页 > 资源中心 > 技术文章
现代化遗留系统(第1部分)--现代化的意义
几年前,当我成为WebLogic顾问时,曾经有意避免与遗留系统集成有关的项目。那时我只对“纯”J2EE项目感兴趣。这种技术在当时还是新技术,因而在帮助企业采用J2EE/WebLogic Platform作为可行的企业电子商务解决方案方面,还有很多事情可做。
如今,J2EE技术已经非常成熟,而BEA WebLogic Platform也已成为大型企业中任务关键应用程序不可或缺的组成部分。但是,现在又出现了一种新的趋势,即:需要将WebLogic与遗留系统集成到一起,以便提供统一的、以业务处理为中心的IT环境。此外,很多企业意识到:要想优化流程,同时向客户提供增值服务,必须将某些关键业务流程从遗留系统“移植”或“重新宿主”到WebLogic Platform上。这就是我所称的“现代化”遗留系统。本系列文章将讨论现代化遗留系统的过程为何正在成为企业日益重要的业务驱动要求。我将向大家展示一种逐步的、循序渐进的方法,从而尽最大可能减小现代化过程所带来的风险。本文简要介绍了整个过程,探讨进行现代化过程的意义。在第二部分中,将重点讨论集成和“重新宿主”模式,以及在遗留系统和WebLogic Platform之间建立一种公共业务域模型。在第三部分中,将重点讨论“已经现代化”Platform的运行时和工作流方面。
现代化的定义
我们从为“现代化”遗留系统下一个定义及为何启动现代化开始。首先,何为遗留系统?我肯定我将给出的定义会使大多数Cobol程序员非常不高兴!按照我的理解,遗留系统就是一种使用过程语言(如Cobol或RPG)开发的软件平台,通常宿主(host)在大型机或IBM iSeries中。在大多数情况下,系统的维护成本会随着时间的推移而逐渐增加,而系统的可用专业技术却逐渐减少。定义遗留系统的另一种方式,就是当系统由于某些局限(如技术方面的局限)而无法满足新的业务要求,因而需要进行远远超出维护范畴的修改时,系统即已成为遗留系统。但是,大多数企业已经为这些系统投入了大量的人力和财力,并希望获取投资回报,而不是指望大多数任务关键的业务流程运行在这些系统上。因此,何为现代化?现代化就是一种对遗留系统进行超出维护范畴的修改,以便提供新的增值服务(如更高的可靠性、更大的灵活性以及更高的安全性)的过程。
在这里有必要指出现代化不是什么。它不是“修订”或“屏幕刮擦”(screen-scraping),而它们主要由使用新的外观界面(如支持Web的痩客户端)替代“绿屏”终端这类过程组成。因此,修订只会影响外观。现代化也与“替代”有很大的不同,后者是从零开始重新编写代码的重建系统的过程。替代过程可能极具风险,很有可能失败。我们所讨论的对遗留系统进行现代化的过程,是将最初由Cobol代码编写的特定业务流程作为J2EE组件逐步“重新移植”到BEA WebLogic Platform。这个过程是循序渐进的,因此可以最大限度地减小风险。这种现代化过程能够满足要求,原因如下:
·
Cobol是一种过程语言,并不适于进行当今的企业级应用程序开发。因此,遗留系统的维护成本将会超过现代化的成本。
·
由于现代化过程的破坏性较小,因此与完全替代现有的遗留系统相比,对遗留系统进行现代化成本低、风险小。此外,在进行现代化时,企业仍可继续利用现有的基础结构。
·
WebLogic Platform提供了必要的构造块,可提供基于组件和面向服务的体系结构,这对于当今的电子商务是很必要的。
·
与Cobol开发环境相比,很多工具(如BEA WebLogic Workshop)可以大大提高生产力。
·
由于Java程序设计语言和J2EE平台采用基于组件的方法,从中期和长期考虑,可以提升软件的重用性,并使系统维护更加便利。
·
BEA WebLogic Server还可以提供很多附加服务,如可伸缩性、安全性和可用性。如果从零开始创建这些服务,是很难实现的。
可以采取两种方法实现现代化:黑盒法,即无需理解遗留系统的内部工作机制,而只使用系统接口并向系统提供组件包装器。
白箱法,需要对遗留代码的内部工作机制进行研究。例如,研究Cobol模块是为了掌握基础业务流程,然后将它们重新编写成EJB组件。通常,可能需要使用白箱法,以提供真正的增值价值,并提高企业应用程序的集成度。
逐步实现的方法
现代化过程可能跨数年。在这段时间里,很多因素(如技术)可能会发生很大的变化。因此,采取一种逐步的、循序渐进的方式来实现遗留系统的现代化是很重要的,这样可以最大限度地减小失败的风险。根据我的大多从银行系统的现代化过程中获取的经验,我发现以下几个步骤非常有用:
·
建立业务案例。
·
了解遗留系统。
·
了解WebLogic Platform提供的增值服务并定义目标体系结构。
·
对用例进行优先级排序以便移植业务流程。
·
将遗留系统与WebLogic Platform集成到一起。
·
移植业务流程。
建立业务案例基本上阐明了为何应该进行现代化而不是仅作较小的改动(如维护)的基本原理和原因。例如,对于back-office银行包,业务案例可以阐明B2B业务流程需要将WebLogic Server“前端”实现到遗留系统,而有些业务流程(如有价证券管理和直接处理)应该由WebLogic
Platform重新宿主。基本上,建立业务案例强调了对遗留系统进行现代化的投资回报要高于仅对遗留系统进行简单维护的投资回报。
一旦业务案例被批准,下一步就是了解遗留系统的体系结构。在我们的银行业示例中,遗留系统由两部分组成:一个是将“哑”终端用于表示层的两层的体系结构;另一个是使用Cobol编写的宿主在AS/400上用于封装业务逻辑的模块。此时,在使用白盒法研究系统后,我们可能会发现需要进行一些修改,以便提供一条到WebLogic
Platform的集成路径。例如,我们可能会发现一些Cobol模块包含表示逻辑和业务逻辑的混合。我们可能因此对这些模块进行“重构”,将它们作为服务程序(服务程序就是一种特殊的Cobol模块,这些模块易于从Java代码中进行封装和调用),以便将业务逻辑与表示逻辑分开。这里要强调的重要一点,就是了解遗留系统需要相应的知识和Cobol程序员的帮助。在现代化过程的开始阶段,就应将这些Cobol程序员作为利益相关方包括进来。这一步的结果,深刻理解遗留系统的体系结构及将遗留系统与BEA
WebLogic Platform集成方法。
利用WebLogic Platform提供的增值服务通常比较容易,因为现在已经处于J2EE程序设计的领域。这一步骤的目标是定义一种基于组件的、面向服务的体系结构,用于提供功能服务和非功能服务(如安全性和可用性)。然而,在现代化过程中,这一阶段的主要任务是设计出两层的遗留系统与WebLogic
Platform之间的体系结构映射。例如,如图1所示,我们可能会决定建立一个5层的体系结构,具有以下几层:
·
客户
·
表示
·
业务逻辑
·
集成
·
资源
然后,映射过程必须指定将把遗留系统中的哪些模块映射和“迁移”到BEA
WebLogic Platform的特定层作为表示层或业务层组件。实际上在整个过程中,这一体系结构的转换是非常关键的一步。这一步必须达到一定数量的目标或质量,才能为现代化过程带来真正的增值价值。基于WebLogic
Platform的目标体系结构应具有以下几个特点:
·
面向服务的体系结构
·
基于组件的设计
·
分层体系结构
面向服务的体系结构可以通过公开的接口公布不连续的业务功能和过程。这些过程随后可被其它WebLogic应用程序或服务用作基本构造块,用于更高级的服务。组件化和基于组件的设计将向结构引入非结构化的遗留Cobol代码。基本上,它将粗粒度的业务流程映射为宿主WebLogic的会话bean或实体bean。获得的增加值就是高级的代码重用以及基于接口的“即插即用”体系结构。
最后,现代化的体系结构应该分层进行设计,在每一层中,在组件的顶端实现服务,而组件使用公共业务域类层次结构依次实现。
下一步是对业务流程进行优先级排序——在遗留系统中,搜集由项目干系人标识为最具增值价值的一定数量的用例。这些项目干系人应该成为我们进行现代化过程的初始候选人。在本文的银行业示例中,项目干系人可能认为直接处理可提供巨大的增值价值。他们可能因此而决定首先应该将订单处理和帐务管理Cobol模块作为EJB组件转移到WebLogic Platform。此时,我们已制定开发计划,同时确信我们已经将遗留系统中的最有价值的业务流程标识出来以供考虑。
下一步就是集成,它可提供一种方法,使遗留系统和现代化的WebLogic
Platform在一个统一的业务平台上“共存”。这里再一次强调,我们的目标是采取一种循序渐进的方法,以便尽可能地减小风险。对整个遗留系统进行一次“大爆炸”式的替换成本太高。因此,集成提供了一种实用的中间步骤。在集成过程中,我们通常建立一些适配器,以便“隐藏”遗留系统。例如,可以使用实现为EJB的粗粒度的组件包装器对遗留系统进行封装。基本上,集成这一步在遗留系统和WebLogic
Platform之间架起了一座桥梁。集成应该是透明的,这样在整个过程的任一点,从外部角度来看,现代化的WebLogic和遗留系统都应提供一套统一的服务,而与它们的位置无关。从技术角度看,集成可以使用不同的技术来实现,如JMS、SOAP/Web服务或JCA。
最后,开始整个过程的最后一步,也是最长的一步,即移植由项目利益相关人标识的业务流程并将这些业务流程作为EJB组件加以实现。这一组件化过程是一个连续过程,可分为两个主要方面:代码迁移和数据迁移。代码迁移过程包含“重新创建”一些可用于遗留Cobol模块的等效功能,然后使用现代化的EJB对应部分取代这些功能。如果使用白板方法,则可对实际的遗留代码进行分析,然后使用Java将其中实现的算法重新编写为EJB。如果使用黑板方法,则只对模块的输入和输出进行分析,换句话说就是其功能接口,然后使用Java开发具有等效接口的相应的EJB。这两种方法都是可行的。例如,在遗留银行系统中,白板方法可能是对无文档的税收模块进行现代化的唯一方法。可曾听说过“代码就是文档”这句话吗?在这两种情况下,遗留平台和现代化平台的全部行为都应保持一致。
数据迁移可能有点棘手。基本上,数据迁移还包含对遗留数据库架构(schema)进行现代化,原因可能是遗留数据库的架构随着时间的推移变得不易管理。例如,原来的架构可能是使用宿主在AS400的DB2数据库实现的。对于现代化系统来说,以独立于数据库的方式使用实体bean并利用WebLogic的容器管理持久性服务来重新设计架构可能是很有趣的。完成数据迁移的方法有两种:在代码迁移过程中进行数据迁移,以及在代码迁移之后进行数据迁移。就我个人而言,出于保持现代化WebLogic
Platform和遗留系统之间行为一致的原因,我建议使用在代码迁移之后进行数据迁移。这有助于在现代化系统与遗留系统之间保持一致和同步,而无需使用数据复制这类技术。如果采取了这种方法,则如“集成”下所述,应将组件包装器用于封装遗留数据。
结论
本文介绍了使用BEA WebLogic Platform对遗留系统进行现代化的逐步实现方法。现代化是循序渐进地使用EJB组件替代使用过程语言(如Cobol或RPG)开发的遗留系统中的特定模块的过程。这一过程的目标就是要提供大大超出维护遗留系统的附加业务服务,或者利用WebLogic
Platform的服务,如安全性、可用性和事务处理。现代化是一种非常实用的方法,与极具风险的完全替代遗留系统相比,可以最大限度地减小风险,并且通常具有更高的投资回报。本文还提到了现代化的体系结构应该具备的一些特质,如面向服务的体系结构和基于组件的平台,这些特质有助于最大限度地提高投资的重用和投资回报。
本文提供了整个过程的高级概述。
| 作者简介 |
|
Anwar Ludin是专门从事金融界的面向服务的体系结构的研究。目前,他作为瑞士众多金融机构的独立顾问,协助设计基于BEA WebLogic Platform的J2EE体系结构。 |
作者其它文章
|