本章讨论 Java ES 解决方案生命周期各阶段的相关概念和术语。重点介绍部署任务,特别是部署设计和部署实现任务。
第 1 章,Java Enterprise System 简介中已介绍过解决方案生命周期,将其作为使用 Java ES 软件实现业务解决方案的一种标准方法。重复展示了生命周期示意图以便于您进行参考。
在生命周期的 predeployment(前期部署)阶段,要将业务需求分析转化成 deployment scenario(部署方案)。该部署方案起到了部署设计说明书的作用。
前期部署任务分为三个阶段,如图 4–1 所示:
业务分析。定义所提议部署工作的业务目标并规定为实现该目标而必须满足的业务需求和约束。
技术要求。使用业务分析结果创建 use case(使用案例),这些案例建立了用户与预期软件系统间的交互模型。您还需要确定这些使用案例的用量模式。使用业务分析和用量分析,阐明所提议部署必须满足的服务质量要求(参见表 2–2)。
逻辑设计。分析在技术要求阶段所开发的使用案例,以确定提供最终用户服务所需的 Java ES 基础结构组件和自定义开发的应用程序组件。按照第 2 章,Java ES 解决方案体系结构中所述的概念,设计逻辑体系结构。逻辑体系结构显示了所有组件以及组件之间的所有交互,这些交互是达成特定软件解决方案的使用案例所必需的。
逻辑体系结构与性能、可用性、安全性及其他服务质量要求一起封装在部署方案中,如下图所示。有关生命周期前期部署阶段的更多信息,参见《Sun Java Enterprise System Deployment Planning Guide》。
在生命周期的 deployment(部署)阶段,要将部署方案转化成部署设计,之后进行实现、测试,然后在生产环境中铺开。
部署过程通常包括所有层及所有基础结构服务级别中为支持某个软件解决方案所需的软件组件。一般来说,必须部署自定义开发的应用程序组件(J2EE 组件、Web 服务或其他服务器)和支持解决方案所需的 Java ES 组件。
部署任务分为两个阶段,如图 4–1 所示:
部署设计。部署设计依赖于解决方案的逻辑体系结构以及解决方案必须满足的性能、可用性、安全性、可伸缩性、可维护性及其他服务质量要求。部署体系结构的服务质量维在部署设计阶段扮演重要角色。
部署实现。部署设计的实现是一个反复过程,涉及硬件设置、软件安装和配置、开发与集成、测试以及生产铺开的其他方面。
以下各节对部署过程的这两个阶段做了详细说明。
在部署设计阶段,先要创建一个高层次部署体系结构,接着再创建低层次的实现规范。
部署体系结构是通过将应用程序(逻辑体系结构)的逻辑构件映射到物理计算环境来创建的,以此来满足部署方案中指定的服务质量要求。部署方案会转化成部署体系结构,如下图所示。
此体系结构设计的一个方面是确定物理环境的规模(确定计算机数量并估计处理器能力和 RAM 要求),以满足性能、可用性、安全性及其他服务质量要求。规模确定之后,要将 Java ES 组件和应用程序组件映射到物理环境中的各种计算机。为得到最终的部署体系结构,必须考虑不同计算机的能力、系统基础结构服务的特点以及在总拥有成本或总可用成本方面的限制。
部署方案中的 Java ES 组件数量越多,对服务质量要求就越苛刻,同时也就越要求您的设计要建立在高效能计算机和高网络带宽之上。在硬件或经费有限的情况下,您可能需要在固定成本(硬件)与可变成本(人力资源要求)之间或是在不同的服务质量要求之间进行折衷,否则,您可能必须增加设计的复杂度。
部署体系结构的设计常常是在不断反复的过程中推进的。reference deployment architecture(参考部署体系结构)可以作为 Java ES 部署设计的起点。
参考体系结构建立在特定部署方案基础之上,即:具有特定服务质量要求的逻辑体系结构。在参考体系结构中,软件解决方案部署在特定的物理环境之上,以此来满足指定的服务质量要求。指定负载的性能测试要基于部署方案出自的同一组使用案例来进行。参考体系结构文档以保密方式提供给 Java ES 客户。
基于参考部署体系结构或参考体系结构组合,您可以设计出第一个近似满足自己部署方案要求的部署体系结构。可以对参考体系结构进行调整,或是将其用作参考点,考虑自己的部署方案与基于参考体系结构的部署方案之间的不同之处。这样便可评定自己的规模确定、性能、安全性、可用性、容量以及可维护性需要所产生的影响。
实现规范提供实现某个部署体系结构所需的详细信息,一般包括以下信息:
实现计划描述您打算如何执行部署实现阶段的各项任务。这些计划一般涵盖以下任务:
硬件设置
软件安装、升级和迁移
系统配置和自定义
部署和集成
测试
生产铺开
部署设计的实现包括上一节列出的任务以及图 4–1 所示的任务。这些任务的顺序并不是一成不变的,因为部署过程天生具有反复性。下面各小节将按通常的执行顺序分别讨论各个主要的部署实现任务。
实现规范包括物理环境的所有详细信息:计算机、网络设计、网络硬件(包括电缆、交换机、路由器以及负载平衡器)、存储设备,等等。所有这些硬件均需设置为支持 Java ES 解决方案的平台。
部署体系结构连同在实现规范中所提供的其他详细信息,为您指出了将要驻留在物理环境中每台计算机上的应用程序组件和 Java ES 组件。可使用 Java ES 集成的安装程序在部署体系结构中的每台计算机上安装适当的 Java ES 组件(参见Java ES 集成的安装程序)。
安装计划应描述安装程序会话的顺序和范围。但是,为执行安装所采取的方法可能取决于您是要执行 Java ES 的全新安装,升级以前安装的 Java ES 组件,还是要用 Java ES 替换第三方组件。后两种 Java ES 应用情况通常需要迁移数据或应用程序代码以实现兼容性。
您必须完成多项系统配置任务,才能使各种系统组件成为一个集成的系统。首先要进行初始配置,使各系统组件可以启动。其次,必须配置每个 Java ES 组件,使它们都能与其所交互的组件进行通信。
高可用性也必须进行配置,具体取决于每个组件的可用性解决方案。还必须置备用户,使他们可以访问各种服务,并且必须设置验证和授权策略与控制(参见集成的身份认证和安全服务)。
在大多数情况下,都要在配置任务中对 Java ES 组件进行某种程度的自定义,以得到恰好满足需要的功能集。例如,通常要自定义 Portal Server 以提供 portal 频道、自定义 Access Manager 以执行授权任务,等等。
在部署方案中指定的逻辑体系结构通常决定了实现解决方案所需的自定义 development(开发)工作的范围。
对于某些部署,开发工作可能相当繁重,需要您使用在 Application Server 或 Web Server 环境中运行的 J2EE 组件从头开发新的业务和表示服务。此时,需要在着手投入全力进行开发前,先为解决方案设计原型并执行概念论证测试。
对于需要大量开发工作的解决方案,Sun JavaTM Studio 软件提供了用于编程设计分布式组件或业务服务的工具。Sun Java Studio 开发者工具简化了 Java ES 基础结构所支持应用程序的编程与测试工作。
在某些情况下,Java ES 组件可能会与传统应用程序或第三方服务集成在一起。这些集成可能涉及数据层中的现有目录或数据服务,或是业务服务层中的现有组件。将 Java ES 组件与这些系统集成可能需要迁移数据或应用程序代码。
J2EE 平台提供了一个连接器框架,借此可通过开发 J2EE 资源适配器将现有应用程序插入 Application Server 环境,同时,Message Queue 为集成各种不同的应用程序提供了一个强大的异步消息传送功能。
根据所需的自定义或开发工作量,有时必须对部署体系结构进行检验:您必须依据使用案例对解决方案进行测试以检验能否满足服务质量要求。
如果您自定义开发的服务相对较少(几乎都是开箱即用的部署),则您的解决方案可能只需自定义 Java ES 组件并对系统进行试验性测试。
但是,如果您开发了重要的新应用程序逻辑并创建了自定义服务,则此项测试工作可能会变得更加繁重,会涉及到原型测试、集成测试等。
如果此测试暴露出了您部署体系结构中的不足,您需要对体系结构进行修改,然后再次测试。通过这种不断反复的过程,您最终会得到一个可以随时在生产环境中进行部署的部署体系结构和实现。
生产铺开包括在生产环境中搭建部署实现。这个阶段涉及的任务有:在生产环境中安装、配置和启动分布式应用程序及基础结构服务,置备生产系统最终用户,设置单点登录和访问策略,等等。通常是从有限部署开始,逐步过渡到组织范围的实现。在此过程中,要执行试运行,其间通过不断增加负载来证实当前是否满足服务质量要求。
在生命周期的 postdeployment(后期部署)阶段,要在生产环境中运行已部署的解决方案。生命周期的操作阶段涉及以下任务:
监视。包括对系统性能和系统功能的常规监视。
维护。包括日常的管理职能,例如向系统添加新的最终用户、更改密码、添加新的管理用户、更改访问权限、执行常规备份,等等。
性能调节。包括使用常规监视信息查找系统操作中的瓶颈,以及通过更改配置属性、增加容量来消除这些瓶颈,等等。
系统增强和升级。包括向系统添加新的 Java ES 组件以增添新功能或替换非 Java ES 组件。这些更改可能需要从解决方案生命周期的初始阶段开始重新设计系统。升级任务受到的限制更多,通常就意味着升级 Java ES 组件。
本节将解释本章所使用的主要技术术语,重在阐明这些术语在 Java ES 上下文中是如何使用的。
Java ES 解决方案生命周期的一个阶段,在此阶段会将部署方案转化成部署设计,然后实现、建立原型并在生产环境中铺开。此过程的最终产品也被称为部署(或部署的解决方案)。
Java ES 解决方案的 logical architecture(逻辑体系结构)以及该解决方案为合乎业务需求而必须满足的服务质量要求。服务质量要求包括性能、可用性、安全性、可维护性以及可伸缩性或潜在能力等方面的要求。部署方案是部署设计的起点。
Java ES 解决方案部署过程中的一项任务,借此对 deployment architecture(部署体系结构)的自定义组件进行编程和测试。
Java ES 解决方案生命周期过程中的一个阶段,在此阶段会将业务需求转化成 deployment scenario(部署方案),即:logical architecture(逻辑体系结构)以及解决方案必须满足的一组服务质量要求。
Java ES 解决方案生命周期过程中的一个阶段,在此阶段会启动分布式应用程序,对其进行监视、性能调优,以及进行动态升级以加入新的功能。
一种已设计、实现并经过性能测试的 deployment architecture(部署体系结构)。参考部署体系结构用来作为设计自定义解决方案部署体系结构的起点。
一项特定的最终用户任务或一组任务,由 distributed enterprise application(分布式企业应用程序)执行,并被用来作为设计、测试和衡量应用程序性能的基础。