您真的了解您的服务究竟在何处吗?您知道自己的企业里面有多少服务正在进行生产吗?而它们当中有多少达到了您所期望的质量水平呢?又有多少服务未得到合理保护或直接暴露在客户或合作伙伴面前了呢?或许甚至还存在着您根本不知道的服务?当您的服务出错时有什么保护措施吗?现今您又是怎样监控着自己的服务呢?
如今,在设计SOA的架构时,您要提出类似于上述的种种问题呢。令人惊讶的是,尽管有许多组织已经使自己的任务关键型业务应用依赖于这些服务,但依然无法回答这些问题。
因此,让我们来回顾一点基础知识吧。SOA究竟是什么?SOA即Service Oriented Architecture(面向服务的架构),它使企业通过改进的服务重用性迅速开拓新的业务渠道。因此SOA管理将从可见性和控制两方面着眼于SOA。如果没有管理,使SOA达到预期效果这一目标就无法得到保障。最可怕的是,SOA甚至会因为依托于这些用于任务关键型应用的服务而给整个组织造成危害。
是什么使得管理SOA的这些服务变得如此困难?首先,SOA中服务的形式与规模不尽相同,符合的规范也相差甚远,既有细粒度的也有粗粒度的;既有传统的基于事件的非XML队列,也有最新的基于XML的WS兼容服务。每个服务在其运行平台上都是独特的,有的基于Java EE,有的基于.NET,还有的基于遗留或专有平台。
其次,当SOA跨多个部门和项目实现时,其复杂性将会增加。即使并非有意为之,SOA被迫进入分布式环境,而原因仅仅是企业固有的复杂本质。例如,服务可能是某一个部门设计的,并在其他部门重用;合作伙伴发布的服务也有可能要在公司内部使用,反之亦然。如果在分布式环境中无法对这些服务进行集中管理,发生更改或故障的服务就可能对企业的账本底线产生显著影响。
再次,SOA系统发展迅速。新版本发布时,SOA的规模和复杂度都会有所增加,还会向SOA领域中融入一些新的应用程序,增加新客户和合作伙伴的参与。任何服务的更改都会在整个网络中产生连锁反应,进而影响整个系统。
由于SOA的异构性、分布性以及高度流动性,使得采用传统手段来处理SOA很困难。事实上,传统的IT管理框架可能并不完整,有必要采取新方法关注SOA,来更好的实现组织的可见性与控制。
传统的IT服务管理框架包括管理应用程序的功能,并且确实能够获得对应用程序的一般行为的更好可见性,应用程序是正常运行还是故障了呢?遗憾的是,SOA并非如此有逻辑。很可能在一个任务关键型服务从客户的角度来看已完全崩溃之后,应用程序仍存在并运行着。
此外,传统的IT服务管理作为一整套SOA应用程序的基础,是很重要的。而SOA管理可以返回到业务线层面上帮助管理和优化这种行为。SOA并不仅仅与应用程序有关:服务还可能存在于wire消息协议或事件之中。这些服务通过中介处理,到达了我们看不到的目的地,比如合作伙伴或者客户。
最后,SOA管理需要和IT管理策略共存。JMX、SNMP、WS-Man以及WSDM中的标准,都将为两者的共存提供帮助。例如,SOA管理触发的SNMP trip可以利用一个ESM(例如HP的OpenView和BMC的Patrol)整合并管理。
实现SOA的最初目的就是降低IT的复杂性。遗憾的是,仅为少数IT工作人员提供可见性并未实现最初这个SOA目标的优势。SOA管理可以帮助满足将正确的信息带给正确的人员的需求;这些信息以服务量度、计分卡和策略信息等形式收集起来,随后公开给架构师,以便更好地优化端到端的架构。
SOA管理的好处是什么?
实现SOA管理的好处在于最终为组织创建更广泛的可见性和控制。这将给企业带来无尽的益处,并且最终得到更出色的企业敏捷性,而这恰恰就是实现SOA的初衷。
事实上,实现SOA管理还有一个实际的原因,那就是支持SOA监管。例如,将运行库计分卡和服务相关联,就可以更好地作出在监管生命周期中需要优化哪些服务的决策了。
可以总览运营健康状况和服务依赖性
为SOA系统实现可预测性和控制
在联邦、分布式环境下检测和预防服务问题
在异常影响业务之前对其进行检测、诊断和修复
降低应用程序支持成本和快速诊断及问题解析的IT开销,
实现企业SOA对其客户和合作伙伴的保证
确保遵从业务和运营策略或法规控制
这些因素将更有效地降低成本、减少风险,并带来企业创收机遇。不仅证明了SOA管理解决方案的ROI,也从宏观上证实了投资SOA的合理性。
SOA中的所有环境都是独一无二的,但SOA管理却有着一致的需求,即每个组织都可以为满足其特有需求来利用SOA管理。现今的SOA管理有一些关键元素,它们对跨多个系统的可见性聚集方法和控制实现方法至关重要。其中包括:
服务网络监控——确保分布式和异构SOA的可见性
服务和基础架构发现——提供现实与目标的对比的可见性
策略实施——强制实施增加即时控制以改善您的SOA
服务层协议管理——保证服务的正常运行
异常管理——检测并找到异常的根由
下面具体介绍上述内容。
服务网络监控
由于SOA的本质就是将应用程序筒仓整理为分散在网络中的多个服务,分布式系统故障的风险将呈指数级增加。24x7的SOA系统生产需要全面的、系统级追踪和操作可见性,使故障和宕机时间最小化。
可视化要求有足够多的信息——端到端网络的逻辑和物理服务都包括在内。例如,您也许想了解每个服务节点的吞吐量和可用性,以便迅速确定与某个特定服务相关联的操作问题。这就需要具备详查网络的能力,以图形化的方式来评估服务相关性和中断造成的影响,并且下钻到端点本身来了解与该服务相关的所有关系。图1给出了一个例子。
图1. BEA AquaLogic SOA Management的相关性浏览(点击察看大图)
组织越是分散,在服务网络上进行统一监控的需求就越迫切。此类企业的典型例子就是一家刚刚采购了多种打包的应用软件的公司(如订单管理或库存系统)。企业希望进行整合,但尚未理解在多个系统上运行的服务的实际运行库影响。管理这些服务间的复杂关系的惟一方法就是实现SOA管理系统,它使企业能够了解可从何处开始整合,并做出进一步的优化。
服务和基础架构发现
以目标为参照,找出哪些服务确实已实现,对于那些试图发挥SOA最大潜力的组织来说是一块巨大的绊脚石。发现实际情况将引导我们发现潜在的浪费。还可以通过发现那些未经过正式流程的恶意服务来应用更加严格的监管策略。将发现功能直接集成到SOA管理中,将为组织的架构师、IT和管理部门提供更加准确的表示。
在SOA管理中,还需要建模和表示SOA内的所有服务,以及自动发现服务。这些服务可能拥有部署特征。另外,还需要自动追踪在多运行库环境中的变化。
这里有一个在典型的实例:一家公司希望实施对整个公司的服务的更佳监管流程。这家公司没有任何方法或流程在一个具有多个项目及部门的复杂组织中找到这些服务。通过实现SOA管理,即可检测到这些服务,即便是在服务或可能是恶意服务的时候。这些服务甚至可能在没有任何保护的情况下被客户使用,而公司毫不知情。服务一旦被SOA管理解决方案检测到,就会进入监管流程,或者应用策略来提高消息安全性实施水平,从而更好地保护这些服务。
策略实施
通常,仅有SOA的可见性(只读视图)是不够的,实施策略的能力将使组织能够应对SOA问题,并为得到更好的响应对其进行优化。
SOA管理的关键支持因素就是用于一个服务或一组服务的系统特征声明性规范策略的使用。策略可以表示出系统的不种种属性,从流程与功能到系统在其上执行的基础架构的安全性、性能和健壮性需求。策略还可以作为一种控制机制,为SOA的新属性实施更改。仅仅更改一项策略就有可能使得通信更加快速准确。
通过将系统的更多行为作为策略指定(而非过程代码),系统的适应性将更强,因为策略更加简洁易懂,并且修改起来比代码容易得多。
例如,IT组织可能决定改变其用户的身份验证方式,从原有的输入用户名和密码更改为提供一个证书验证。在基于策略的世界里,安全性策略与应用程序彼此分离,IT员工可以通过声明的方式来描述这种更改,并在动态实施所提供安全性策略的基础架构上运行这个应用程序。即使安全性策略改变了,代码也不需要变动。修订后的策略将应用于系统基础架构,它能够动态调整以便实现。做这样一个简单的更改而不需要对系统进行维护,好处是显而易见的。
另一个例子是通过策略声明路由行为,一旦服务不可用,策略中声明的规则可以阻止请求或将请求重定位到镜像服务来容纳负载。这样,对路由策略的简单改变就可以改变系统的行为。
服务层协议管理
服务层协议管理对于所有计划将企业级SOA投入生产的组织来说都是至关重要的。SOA一旦开始运作,成功与否就与试点项目中的定义、跟踪以及控制恰当的服务层密切相关了。实现SOA系统时,有必要回顾和分析服务质量(QoS)量度,以便为发展、最小化风险和证明额外投资合理性做好计划。
对于更加复杂的SOA系统来说,企业还需要在长期,跨连续和不连续的流程来评估服务级的目标,按照相关的上下文(例如客户类型、生产线或业务单元)划分共享服务资源的优先级别。
为保持服务的质量,还需要有预见性地解决所出现的问题,以便消除潜在问题。为了有效实现这个目标,需要一种涵盖了所有异构格式、协议、接口和传输方式的SOA管理解决方案。
异常管理
SOA采用编排多个业务服务的服务复合或业务流程的形式,从而使得交付您的业务应用程序更轻松。然而,由于服务层耦合在一起,手动追踪通过一个系统的业务流就很困难,因为信息分散在不同的日志文件、不同服务中,甚至可能处于不同地理位置。
IT和业务团队都无法得到这些需要进行有效管理的复合或流程的可见性。事实上,他们通过加密的日志记录和客户焦急的反应当已经能够发现这些异常。接下来的步骤通常是,对资源进行探究,不同的部门之间推来搡去,增加了由IT造成的维护开销。同时,混乱失败的商业交易将导致客户满意度降低、订单的减少、收入的减少以及一系列低效问题。
为了避免IT陷入复杂性筒仓,企业需要具备应用程序和业务流程的更细粒度可见性。单纯的服务可见性不够的。
闭环监管
正如前面讨论的一样,SOA管理的五个元素是很重要的,但是它们是如何配合监管工作的呢?为使SOA监管生效,SOA管理就要将监管模型应用到运行库中。这将利用基于标准的UDDI机制,实现设计时元数据和运行时信息的双向交换。
一个重要的需求是,SOA管理需要内嵌到监管生命周期,同时具有与设计时的监管机制信息进行双向交换的能力。
例如,服务和与其相关联的策略已经部署且与注册库/存储库同步,SOA管理开始自动监控、管理并强制实施策略和服务遵从性,定期采用所收集到的服务计分卡和服务运行库属性更新注册库/存储库。
SOA管理还可以发现其他隐藏或恶意的服务,并追踪服务的使用情况,这些隐藏或恶意服务是否有必要列在注册库/存储库的目录当中。SOA管理还可以协助实现服务从登台到生产的迁移,并将计分卡数据和注册库/存储库的数据相关联。
同时启用SOA管理和注册库/存储库就使得闭环监管成为可能。将运行库中收集到的服务实际细节与设计目标作对比,这正是监管的重要方面之一,实现了SOA的迭代优化和最终优化,并提高了系统的敏捷性。
SOA和策略相结合,有助于创建一个真正的适应性系统。但是,有效的SOA管理还需要包括可以即时作用于复杂服务网络的优化。例如,当服务出现故障,重新路由一个服务的能力对于SOA管理来讲是很重要的。当终端目的地无法到达时,可以转向另外的目的地。但是重要的SLA的失败,对于SOA的成功至关重要。图2是SOA监控屏幕。
图2. BEA AquaLogic的SOA Management的SLA监控屏幕(点击查看大图)
在虚拟化世界中有一项技术崭露头角,,在SOA管理的事件触发基础上,可以实时重新部署服务。期待此类SOA管理与虚拟化这种业界方兴未艾的实时技术的聚合。
BEA AquaLogic SOA Management
BEA近期为SOA管理提供了一套方案:AquaLogic SOA Management,业内用于实现SOA可见性和基于SOA的服务应用程序与业务流程诊断的最全面的平台。
AquaLogic SOA Management从整个SOA的广度上追踪独立的消息,并且自动将其和相关事务与流程流相关联。这个独特的优点为系统提供了以业务为中心的视图,从头至尾为每个消息流提供了集中可见性,从而减少了手动将服务信息拼凑起来的麻烦。
AquaLogic SOA Management应对了SOA管理的关键能力,即服务网络监控、服务和基础架构发现,SLA管理、异常管理和策略强制实施,但将其随一个监管解决方案一起交付,这个监管解决方案中还包含AquaLogic Enterprice Repository和AquaLogic Service Registry。
AquaLogic SOA Management扩展了SOA管理,更广泛地覆盖了BEA SOA 360。例如,AquaLogic SOA Management可以在AquaLogic Service Bus Proxy为连接到非SOA入口点(诸如JMS、EJB/RMI、MQ、大型机,甚至是用于遗留应用程序或打包应用程序的自定义专有传输)的服务提供了范围更广的可见性。
结束语
SOA管理对于充分实现SOA价值至关重要。满足组织敏捷性这一承诺不仅要求SOA中具有坚如磐石般的基础,还要求对SOA进行管理。SOA管理需要服务的可见性,发现或隐藏未使用的Service,保护终端,满足客户和合作伙伴的需求。所有这些为复杂的组织构架提供了重要的洞察力,从而使SOA释放出全部的潜能。
SOA管理在SOA监管中也扮演着重要角色,SOA管理的实时洞察力使得SOA生命周期的部分优化成为可能。这些迭代式优化过程对于任何成功的SOA来讲都是主要的基石。
在当今市场上,BEA借助一整套完美的SOA套件走在了尖端。BEA AquaLogic SOA Management可以帮助回答这个问题:您的SOA里都有什么?