第一部分,SOA建设规划<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

在这一部分主要介绍规划阶段的工作。在组织内部,或需要实施SOA的组织之间进行总体规划,确定是否需要采用SOA思想进行IT系统建设,确定采用SOA的目标,策略,项目实施步骤,在总体上指导基于SOA思想的IT系统建设过程。

1         SOA规划

在规划阶段主要工作包括:

l        确定 SOA 系统建设目标,

l        确定系统建设的组织队伍,需要对队伍成员进行培训,以了解 SOA 应用的实现模式和建设过程

l        需要对建设内容进行评估,以确定哪些适合采用 SOA 思想、技术和方法

l        从组织、业务、技术、管理和标准的角度进行总体规划

规划阶段的工作需要定期进行,对总体规划进行审核,修改和完善,规划阶段的工作将决定 SOA 系统建设的成败。

 

1.1     确定目标

首先是需要确定目标,对于使用 SOA 进行系统建设的目标可以是简单的,也可以是复杂的,如:

l        初级目标:进行整合,为了满足业务发展的需要

l        高级目标:可灵活构建业务流程,这就涉及业务变革层面

比如对于我们的示例,可以确定的 SOA 系统建设目标为:

总体目标

提高公司管理水平,从而提高工作效率

具体的目标

l        梳理工作流程,进行逐步优化

l        整合各独立的业务管理系统,可以更好支持工作流程的开展

l        提高工作效率

l        如果组织机构有变化,或业务职能有调整需要信息系统能够及时加以支持。

 

1.2     组建团队

在确定系统建设目标后,需要组建一个团队。要实施好 SOA 项目,需要确保合理的团队成员。在 IT 系统建设过程中,不同人员从不同视角对系统建设有不同的理解,通过 SOA 思想需要将不同人员的视角进行整合,使不同人员对 IT 系统建设的理解保持一致。

SOA 团队首先需要设立一个指导委员会,在总体上进行系统规划和把关,在指导委员会下面可以设置若干工作组,如:规划组,项目实施组,运维组等。

在组件团队时,领导的参与是项目成功的保证, SOA 项目一般会涉及多个部门,或企业之间的协作,没有领导的参与和重视,这类项目成功的可能性会非常的低。

业务人员参与也是一个重要因素, SOA 中强调的服务是业务的服务,而不是技术实现的服务。业务服务的定义、分类,业务流程的确定,业务数据的分析等,如果没有业务人员参与,这些工作基本上是无法开展的。在现阶段让业务人员直接参与设计和实现还不是特别的现实,但随着 SOA 技术和产品的成熟,业务人员一直参与到设计,甚至实现阶段也是可能的,只有这样才能更好保证 SOA 项目实施的成功,才能更好体现 SOA 的价值。

比如对于我们的示例,一个可能的 SOA 系统建设团队成员如下

总负责人

首席执行官( COO

业务负责人

销售副总、人力资源总监、技术总监

系统建设实施负责人

信息部主管

系统建设实施人员

研发部架构师、研发部项目经理、研发人员

系统维护和使用人员

系统维护人员

公司相关部门员工

在此示例中系统建设过程准备由公司内部完成,不准备寻找外部集成厂商提供解决方案。

在实际情况中如果需要由外部集成厂商来完成系统实际建设工作,则内部需要确定具体技术负责人员,在技术架构,技术选择,项目进度方面进行管理和控制。

1.2.1    队伍的培训

在队伍成立后需要尽快对相关人员进行培训,以了解 SOA 系统建设的特点和好处,建设过程,以及需要重点关注内容。

针对不同成员需要培训内容也应该是不一样的。

l        对于管理和决策人员,需要讲解 SOA 能够带来的好处, SOA 的特点,在规划阶段的工作内容说明。

l        对于项目实施人员,需要讲解 SOA 的特点, SOA 相关技术和标准, SOA 相关产品, SOA 项目实施过程的工作内容。

l        对于使用人员,需要讲解 SOA 系统的特点,运维阶段的工作内容。

1.3     可行性评估

对于系统建设的功能目标明确以后,我们需要考虑是否需要采用 SOA ,为什么要采用 SOA 思想,是为了达到什么目的。

首先需要了解是否 有明确的实际应用需求,有资金支持,是否有时间紧迫性需求。其次需要了解 SOA 能够给我们带来什么,我们希望得到什么,这两者是否匹配。

从业务角度看, SOA 能够给我们带来的好处包括

l        业务流程灵活性

这一点表现在,可以正确选择服务,可以灵活更换服务提供者,可以快速实现服务的组装应用,可以快速支持新的服务应用渠道和新的服务提供渠道。

l        协作能力提升

在企业内部或企业之间协作方面,通过服务接口使协作双方或多方,能够更加明确协作内容,以及相关的责权利,便于合作工作的顺利开展。

l        简化集成

采用标准的技术使得用户不必绑定在特定的厂家上,有更多选择权;对已有系统的服务化封装可以提升复用的方便性;基于服务的快速组装技术可以提高集成效率。

l        降低成本

从小项目快速开始,可以保证成功率,降低风险,通过经验总结可以保证后续项目的成功概率;已有系统服务减少重复建设的投资;更多技术和厂商的可选性可以获取更优性价比的产品和服务。

从技术角度看, SOA 能够给我们带来的好处包括

l        高效的开发

l        有利于重用

l        简化维护

l        增量式改进

需要了解 SOA 适合什么,不适合什么,我们的系统建设与 SOA 适合度是否适配。

我们也需要了解 SOA 不适合的地方:

l        开发简单单个应用时,不要使用 SOA

l        构建高吞吐量应用或实时应用是,不要使用 SOA

l        如果网络速度慢,网络不可靠时,不要使用 SOA

l        当服务接口不确定时(即业务服务功能本身不稳定时),不要使用 SOA

l        当安全性极为重要时,暂时不要考虑 SOA

l        业务处理有严格的事务完整性要求时,建议暂时不用 SOA

如果这些匹配一致我们就可以放心进行下一步骤了,否则就得考虑是否一定要采用 SOA ,是否采用其他的思想和技术架构也足以解决问题。

我们看一下示例是否有必要采用 SOA 的思想和方法。

从业务角度看

SOA 好处

目标

业务流程灵活性

梳理流程,逐步改进整合各业务系统

组织机构变化,快速支持

协作能力提升

整合各业务系统

简化集成

 

降低成本

提高工作效率

从业务角度看,公司对 IT 系统建设目标与 SOA 是有比较好的匹配度的。

 

1.3.1    SOA应用模式

【几种应用模式分析,分别解决什么问题】

界面集成的应用

应用集成的应用【应该是一个基础】

数据集成的应用

业务流程集成的应用

 

1.3.2    SOA建设的成熟度

为了解决特定问题,或多个问题,进行 SOA 项目实施

可以从数据整合、流程整合、界面整合等角度入手,解决业务过程中的实际问题,实践 SOA 思想,总结经验。可以不考虑服务的大量复用,但一定要引入服务的概念,为以后的服务复用奠定基础。具体从哪些基本项目入手,还是需要先考虑业务需求,再考虑是否适合 SOA 思想。

在组织内部建设一个基础设施平台,为长期发展奠定基础

可以很好的联接已有系统和新建系统,实现服务的互联互通,在一个公共服务库中可以获取服务信息,可以通过 BPM 服务提供灵活的业务流程管理,可以通过方便的交互模式实现服务内部,服务与外界之间(包括人员)的良好互动,可以非常方便的实现新的服务,并加入到基础设施平台上,可以通过运维管理系统随时了解整个系统和服务的运行信息,并提供集中管理和控制功能。

完整的服务化建设过程

大部分业务功能已经服务化,需要建设一个服务管制中心,在总体管控下服务得到良好的共享和复用,在此基础上可以很好地实现业务过程的灵活重构,使组织能够真正灵活面对市场变化。

 

1.4     SOA系统建设的规划

SOA 系统规划是需要明确未来一段时间内( 3-5 年) IT 系统的长期规划,是一个组织内部(或组织之间的)整体规划。在 SOA 系统规划中需要明确哪些是新项目建设,哪些是对已有系统改造;需要确定是优化完善功能,还是整体上提高系统的服务效率和水平。进行系统规划是为了减少发展的随意性,使各项目的建设在发展过程中能够保持一致和协调。

SOA 系统建设实际上是一个从战略上进行规划,从战术上进行项目实施的过程。在项目实施时首先从简单的开始,能够实现一个跨越几个业务部门的业务过程,通过经验积累再扩展到多个业务过程,并在范围上扩大到整个企业内或企业之间。

在规划时可用的方法包括自顶向下和自底向上,在实际过程中一般需要两种方法结合使用。

l        自顶向下方法,从全局角度找出支持各业务过程所需的服务

自顶向下实际上是从企业整体角度进行规划考虑,其核心思想就是从企业层面做 SOA 建设的整体规划。它的好处是从企业整体角度进行考虑,企业可以根据其各种业务的发展情况以及现有的 IT 情况做一个 SOA 建设的整体规划。这样可以推动整个企业的标准化,所有的服务都基于相同的标准,方便今后的重用。但是这种方法工作量大,复杂程度高,同时要求整个企业要有比较高的纪律和技能,要求有一套完整的组织架构和管理流程。

在进行规划时首先确定各个业务部门,确定业务部门内部,业务部门之间的业务流程,以及企业之间的业务流程,找出业务流程中的服务和使用的数据,确定业务流程的应用方式,在此基础上找出服务,并对服务进行规划,以便重用。

l        自底向上方法,从项目建设中找出业务服务,通过规划确定各种可复用服务

自底向上的办法从各个实际需要建设的项目开始,从已有的系统中寻×××,从需要建设的项目中寻×××,然后将各个项目中发现的服务进行分类,整理,以确定可复用的服务。这种方法,在一开始可能无法从整体确定有哪些服务,有哪些服务是可复用,复用程度如何,一般在项目建设过程中不断积累服务,完善服务,最终达到整个组织的服务化。这种方法的好处是见效快,风险小,初期的投资也不大。但这种实施方式可能导致初期建设服务的复用性不够,在项目逐步实施过程中需要不断修改以前建立的服务,当企业需要在更大层面实施 SOA 时,可能会产生一定的重建工作。

从已有系统和需要建设的项目开始,找出可提供的服务,确定业务流程,考虑业务流程如何复用服务。

在实际进行 SOA 建设时,可以在整体上进行初步的规划,然后通过项目实施来积累服务,然后进行经验总结进行更细致的总体规划,继续进行项目实施,这样经过几次迭代式的 SOA 建设过程,就可以形成比较好的总体规划,以及项目实施方法,以保证 SOA 建设的顺利开展,既能保证每个阶段都有成功,又能保证在总体建设上的协调一致性。重要的是要有意识地构建那些重要的服务层以 及相关的管理控制策略,以形成组织资产,这一服务层在弥补业务与技术之间的鸿沟方面将起到重要作用。

在进行 SOA 建设规划时首先需要建立业务需求分析方法,从中找出业务服务,确定业务服务在流程中如何使用,其次要建立技术架构以指导项目实施,还要建立一套 SOA 工程实施方法,以保证每个项目建设过程的一致性和有效性,最后还要建立一套管理原则、制度和规范

 

1.4.1    确定组织架构

首先需要确定组织,后续的业务功能、数据、流程、权限管理等都是与组织架构密不可分的。

在确定组织架构时首先需要 实际的组织架构,以及组织架构中的角色。在此基础上再确定角色负责哪些业务职责/功能,执行哪些业务流程,使用哪些业务数据,后续的工作可以在规划和项目实施中逐步明确、细化和完善。可以使用图标方式进行组织结构和角色的描述和定义。

确定组织架构后,也需要定义参与SOA系统的建设各成员都需要哪些知识,包括业务知识,SOA技术知识,工程知识等。在此基础上需要定义一个长期的培训计划,使相关人员能够具备相应的知识和能力,能够胜任SOA系统建设和实施维护工作。

关于示例

公司基本组织架构如下图

 

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /><?xml:namespace prefix = w ns = "urn:schemas-microsoft-com:office:word" />
人力资源部的主要角色和管理关系如下图

可以在此基础上继续细化组织结构,和其它部门的相关角色关系,以及部门间的角色关系

 

1.4.2    SOA业务规划

SOA 业务规划就是需要了解在组织内部(或组织之间)需要完善和提高哪些业务,了解实现这些业务支持工作的难度,结合实现技术确定业务实现的先后次序。业务规划阶段也需要确定有哪些部门需要参与到 SOA 项目建设中,他们在业务实现中担当什么责任,如服务提供者,服务消费者,服务维护者等。通过业务规划了解并确定组织上对业务实现的总体计划。

在业务规划活动中的工作包括:

l        确定哪些业务部门的哪些业务流程需要改变,包括业务部门之间,以及企业之间的业务流程。

l        确定业务流程会涉及哪些业务。

l        业务和流程会使用哪些业务数据。

l        是否需要考虑界面和交互模式的改变。

l        在了解基本信息后,对业务进行分类,确定可复用业务服务,确定哪些是核心业务服务,哪些是增值业务服务,哪些是附加业务服务,这些工作需要不断迭代进行

l        对业务实现进行先后顺序的排序,确定易于实现的业务,关键的业务先实现

l        从企业总体角度考虑业务流程是否需要优化,如何优化,业务服务是否需要改变,如何改变。

l        明确服务的负责部门,确定服务使用方,使用模式。

关于示例,业务规划工作可能的工作包括:

1 、了解业务

1 )人力资源部门

提高内部管理服务水平,为内部员工提供更好的服务,提高员工满意度。通过提高信息化程度来提高工作效率,包括:工资, 5 1 金,午餐补助等办理的及时性

完善业务流程管理:招聘 / 解聘流程,绩效管理流程,培训管理流程

及时发布工作结果信息

2 )财务部门

梳理工作流程,开放业务服务接口,简化办事手续,涉及业务包括:报销,借款,支票开具

为公司和各部门提供财务统计和分析数据

3 )销售部门

加强工作跟踪管理,提高工作规范性,加强费用控制,包括: CRM 系统使用,合同签订流程

4 )商务部门

提高信息化水平,完善工作流程,包括:合同审批流程,发货流程,收款流程。

5 )支持服务部门

提高客户服务水平,缩短响应时间,及时提供服务和解决客户问题。通过进行系统整合来提高工作效率,工作包括:

需要建设的系统包括: 400 客服系统,网上支持服务系统

需要完善的系统包括:任务跟踪管理系统,知识管理系统

6 ……

2 、确定业务服务

通过对各部门业务流程的简单分析,可以确定的基本服务包括:

人力资源:人员基本信息服务,考勤信息服务

财务:报销服务,财务统计信息服务

销售:项目信息服务

商务:合同信息服务

支持服务:问题信息服务

产品研发:产品信息服务

这些服务都是大颗粒度的概念性服务,在实际项目中还需要继续细化。

这些业务服务由各部门负责提供。

服务实现考虑,问题信息服务和产品信息服务分别由支持服务部门和产品研发部门开发和维护,其它服务的实现由信息部门负责开发和维护。

3 、确定业务实现的先后顺序

首先实现一个简单的业务功能,这个业务功能对公司业务开展没有明显影响,选择人力资源的基本工作:工资和午餐补助发放流程

在第一个项目基础上,选择公司急需改进的业务,销售部门的业务

在上述项目基础上进行经验总结后,再确定后续业务功能实现和完善如何进行。

 

 

 

 

1.4.3    SOA技术规划

SOA 技术规划技术需要确定组织的总体 IT 技术架构,实现技术,以保证组织在一段比较长的时间内( 3-5 年)能够得以持续长久地发展。

在进行 SOA 规划时首先需要了解当前 IT 系统的现状,需要了解的信息包括:

l        网络架构,包括网络体系结构,带宽,外网如何连接,安全性如何保障

l        当前业务系统,包括实现方式,采用技术,是否能够开发服务接口,是什么样的接口。

l        技术架构,包括是否有一个总体技术架构,各业务系统之间是否有关系,是一个什么样的关系

SOA 规划第一个重要任务是进行组织的体系架构定义,就是需要定义一个长期可用的技术体系架构,作为后续工作的基础和基准。长风联盟 SOA-RA-TF 工作组给出了一个《 SOA 参考架构》,可以作为组织进行技术体系架构规划的参考。在确定技术体系架构时需要考虑内容包括:

l        是否需要一个服务库,以管理服务的各种描述信息,服务库实现方式是什么样的,是自己实现一个简单易用的,还是需要具备完善功能的

l        是否需要一个资源仓库,以管理 SOA 系统中需要使用到的各种资源,如适配器库,服务实现,服务流程描述,服务组装描述,用户信息,授权信息等等。

l        是否需要一个服务总线以连接各个业务系统,提供服务之间的通讯能力,保障通讯质量,是否需要支持与分公司的连接,是否需要支持与组织外部之间的连接

l        是否需要提供一个服务流程引擎,以提供服务流程运行控制和管理

l        是否需要提供服务运行容器,以支持服务运行,需要什么样的服务容器

l        是否需要提供标准适配器库,以支持已有系统的接入,需要哪些标准适配器

l        是否需要提供门户服务,提供不同接入方式,和交互方式的能力

l        是否需要提供一套工具,以支持从分析建模,到设计和实现的开发过程,以提供开发效率

l        是否需要提供一个运行管理工具,是否需要提供集中管理能力,是否需要提供分布式管理能力,需要提供什么样的监控管理数据,需要提供什么样的管理控制能力。

l        是否需要一些公共的技术服务,如安全服务,日志服务等

l        是否需要一些公共的业务服务和框架,以支持业务的快速开发

在上述内容基础上需要明确一个初步的技术架构和部署方式,作为后续项目实现的参考基础。这时需要考虑上述的基础设施具体如何部署,需要考虑内部系统如何连接,分公司如何连接,外部系统如何连接。

除上述内容外, SOA 规划也不要忘了基础环境的规划,包括:网络环境,操作系统,数据库,安全设施,存储设备等。

SOA 规划第二个重要任务是确定技术选择原则,并确定可能的技术。需要考虑的内容包括:

l        总体技术架构采用什么技术,如 J2EE 还是 .Net ,还是混合模式

l        新服务实现采用的语言,如选择 Java 还是 C/C++ 语言

l        采用 WebServices 和传统技术,如实现互操作时采用 WS 技术还是传统的 JMS 技术等。

一般情况下在组织内部建议不需要使用 WS 技术,

如果组织内的互联需要跨越互联网(如与分公司的连接)可以采用 WS 技术

如果需要实现组织间的互操作需要采用 WS 技术。

WS 技术更强调互操作性,而传统技术可以更好的提供各种质量保障,如性能、事务和可靠性。

l        是否需要 BPM 技术,还是采用服务组装技术。

一般情况下 BPM 技术可以更好支持业务流程,每个活动之间可能有较长时间(如几天)间隔。

如果各服务之间没有长时间间隔,对连续运行有比较高的要求,则应该采用组装技术,将各个服务连接在一起。

l        技术标准的选择,选用哪些传统的技术标准(如: J2EE CORBA SMTP 等)。,选用哪些 WS 的技术标准(如是否需要传输可靠标准,是否需要事务标准,是否需要安全标准,需要哪些安全标准等)

l        是否需要制定业务的技术标准,如业务术语,数据格式规范,通讯协议,业务模式,与组织外互联时的互操作接口等

SOA 规划还要确定项目的工程实施方法,以指导各 SOA 项目的具体实施过程。一个可能的项目实施过程包括:业务需求调研,服务识别,服务定义,服务设计,服务实现,服务测试,服务部署,服务运维。

SOA 技术规划阶段需要定义自己的 SOA 项目实施过程,需要定义每个阶段的主要工作内容,需要定义阶段的明确输出成果,需要定义工程实施的管理规范。

SOA 技术规划阶段还需要定义组织的 SOA 技术路线图,内容包括:

l        基础环境的建设步骤

l        基础设施的建设步骤

l        公共技术服务的建设步骤

l        公共业务服务的建设步骤

l        技术选用的使用步骤

l        技术标准的使用步骤

l        基础环境的产品如何选择

l        基础设施如何实现,是选用开源软件,还是自己实现,还是购买商业化产品

l        是否需要选择咨询顾问人员或团队

l        SOA 项目是自己实现,还是选择合作伙伴来建设

 

关于示例, SOA 技术规划过程如下

1 、技术现状了解

1 )网络环境

公司内部结构图

2 )当前业务系统

人力资源部门

签到 / 签退使用门禁系统,分公司使用打卡机,请假使填写请假单。

其它信息采用电子表格管理

午餐补助使用手工统计和计算方法。

财务部门

使用购买的财务管理系统,采用 B/S 架构实现,基于 J2EE 技术。

销售管理

使用开源客户关系管理系统,采用 B/S 架构实现,基于 J2EE 技术。

商务管理

信息采用文档和电子表格管理

支持服务管理

内部自己实现的管理系统,采用 B/S 架构实现,基于 J2EE 技术,同时采用工作流技术。

3 )技术架构

没有一个总体技术架构,各系统之间没有关联关系

与分公司之间连接, 2M×××

2 、体系架构规划

需要一个服务总线,实现服务之间通讯管理

需要一个简单的服务仓库,存储服务描述信息

需要一个简单的资源库,存储各种资源

需要一个流程引擎,实现工作流程运行和管理

需要服务运行容器,基于 J2EE 实现

需要一个门户,作为统一的信息发布平台,和人工操作平台

需要适配器,包括 TEXT 文档, EXCEL 表格,数据库,邮件系统

不需要完整的开发工具

需要一个简单的统一管理工具

3 、选用技术规划

总体采用 J2EE 技术

新服务实现采用 Java 技术

采用 BPEL 技术,采用服务组装技术

公司内部通讯采用传统技术,连接分公司采用 HTTP 技术,暂时没有与外系统连接,如果有采用 WS 技术

选用技术标准: J2EE 标准, HTTP SMTP BPEL 等,暂不采用 WS 标准

4 、工程实施规划

……

5 、实施路线图

……

 

 

1.4.4    SOA管理规划

SOA 规划是一个全局性的规划,在业务和技术层面规划之外,也需要进行管理规划。 SOA 系统建设实际上是对组织管理改进的支持,是从文化上完善协同工作的模式,促进业务部门间的协调关系,以及 IT 与业务部门间的协调关系。管理规划需要考虑的内容包括:

l        业务管理制度规划

首先进行组织架构管理,明确谁负责组织架构管理,如何调整,定义各职能部门的工作内容,明确部门间的关系。

最重要的是进行术语定义、业务功能定义,业务流程定义,业务规则、业务数据定义、交互方式定义。

还需要完善业务管理规范。

l        服务管理规划

需要定义服务的管理制度,包括:

服务定义方法,如何描述服务和约束,如何描述服务策略,如何描述服务接口、 QoS 等其它属性,确定围绕服务契约进行设计的原则,

服务分类原则和方法,

服务发布审批原则和流程,以及服务的授权和使用申请原则,

服务运行管理方法以保证服务的可用性,

服务的维护和升级规则,提供服务版本和生命周期管理。

l        项目管理规划

在确定了 SOA 项目工程实施规范的基础上,定义项目管理制度。需要定义如何开始项目,如何进行项目研发,如何进行验收项目,如何对建设系统进行运维管理

也需要定义如何进行基础环境和基础设施的建设和维护方法。