目标与原则
建立目标是第一步。更短的上市时间、成本节省和过程的灵活性都是SOA的主要目标。为适应业务需求,必须用精准、清楚、确定的术语来描述目标。然后确定一个策略,将重点放在特定的、有高度可重用性和投资回报率的领域或功能上。比如客户服务领域,可以巩固与客户相关的跨越各种业务线(LOB)的业务服务为目标。良好的目标与相关策略有助于清晰地表达SOA规划。
在开发企业SOA解决方案时,为达到意见一致的目的(像如何应用SOA等),需要确定一些基本的SOA原则。
下面就是一些基本的原则:
- 任何业务服务都应该有一个粗粒度接口;
- 可以用技术不可知的接口或协议发现业务服务;
- 业务服务应该符合企业技术和语义互操作性标准;
- 业务服务应该有自治功能,对实现技术、运行环境或地址所做的任何改动都不应该影响服务使用者;
- 服务使用者与服务提供者之间的交互必须遵循面向文档的通信形式;
- 业务服务必须可被其它业务单位或业务线的服务使用者发现;
- SOA基础设施必须提供对服务使用者和服务提供者之间敏感信息交换保护的支持。
策略
从确定过程中需要进行管理的核心设置开始,策略就是治理的中心。虽然策略可应用于各个层次,比如业务、架构、服务和技术等,但我们只讨论业务服务方面的策略。
我们面临的与SOA相关的挑战有:
- 重用-如何保证开发的业务服务有最理想的可重用性和互操作性?
- 验收-如何保证业务服务有良好的可见度,并且在业务线之间实现流畅高效的协作?
- 维持-如何维持SOA长期运行?
考虑到这些挑战,就必须在业务周期、协作和维持这些方面确定核心过程。而对这些过程进行治理时可能需要确定其中的控制点,并应用合适的策略来控制结果。这里的主要困难是要谨慎地定义策略,既不能太严格也不能过于宽松。应该有足够的合理性以保证其可被平稳地接受。
图3显在应用策略的过程中,过程与控制点的一些方面。

图3 策略应用过程与控制点
服务的生命周期
服务的生命周期由业务运营过程中的业务识别活动组成。各种设计时和运行时的策略都要围绕这些生命周期过程来定义。
设计时策略的主要目标是确保所开发业务服务的可重用性和互操作性:
可重用性-为服务的实现确定正确的业务功能是一项很困难的工作。如果没有正确的方法进行业务识别,项目小组最终将开发出没有足够可重用性的服务。与业务识别过程相关的策略应该加强以流程为中心的应用,而top-down(分析-计划-执行)或bottom-up(执行-分析-解决)的分析方法应该用来确定真正可重用的功能。
互操作性-互操作性策略应该将重点放在建立技术上和语义上有互操作性的业务服务。比如,作为“服务界面说明与设计”过程的一部分,关于语义互操作性的高层次策略可以定义为加强业务服务接口与企业规范的符合度。然后可以定义关于各领域或功能区域的详细策略。同样,在技术互操作性前台上,策略可以定义为加强与WS-I基本文件的合规性,以实现跨越各种平台、操作系统和系统语言的Web服务的互操作性。
运行时策略应该定义为加强对可操作的服务行为的治理。比如,关于SLA监控和非合规性报告的运行时策略,应该定义为加强将可视性问题作为合规性问题考虑并采取补救措施,不管是自动的还是手动的(自动将附加服务实例化以防性能降级,就是一个自动补救措施的例子)。
运行时治理包括:
- 安全性方面的管理,比如通过加密提高访问控制和数据层的安全性;
- 通过合规性监控与报告进行服务层协议(比如响应时间、是否可用等)的管理;
- 对审计、记录和异常的管理。
服务行为相关的运行时问题的治理很重要,因为这有助于维持服务提供者与服务使用者之间的信任,创建一个可长期运行的SOA环境。
协作
关于协作的策略应该以加速业务服务的验收为目标。这包括定义主要区域的策略,比如发现、信任、合约等。关于服务元数据的策略,因为对服务有所描述,可以增强清晰的业务技术可操作性分类的应用。对元数据和分类的应用将提高服务使用者的服务可视性。同样,定义关于信任与合约的策略也能解决服务使用者之间存在的怀疑与犹豫的障碍。将服务层次和服务的完整性与正式合约保持一致,可以提高服务使用者的信心。提供关于像SLA等方面的历史合规数据可以进一步提高信任度。
维持
SOA还在不断发展中。对于维持需要治理的主要方面有:
- 服务使用者的扩展需要可扩展性:业务服务应该可以在发展的基础上根据新的服务使用者变化并支持不断增加的客户量。
- 技术革新:由于许多原因,比如减少授权费用和维护成本,不可避免地有时要将应用业务的功能移植到新技术平台。因为这一般发生在服务器端,应该保护服务使用者的性能、支持的容量和可用性等方面不受服务等级协议改变的影响。
- 资金:要有足够的资金来支持并维护业务服务和SOA架构
只有先解决这些维持相关的问题,才能减少对SOA能否长久维持的怀疑。