5.7 SOA
面向服务架构(Service-Orientated Architecture, SOA)是当前流行的一组技术术语——包括Web 2.0,信息技术基础设施库(ITIL),IT服务管理(ITSM)之一。但是想要清楚地说明SOA究竟是什么,就好比试图把果冻钉到墙壁上一样难以做到。然而,第一份正式标准的出现,使SOA变得更加被普遍接受。
从本质上来说,SOA在IT领域重新定义了一系列基于客户(组织)业务流程管理(BPM)的服务。一个服务可能由一个或多个业务流程组成,这些流程可以通过多种方法测量服务返回业务的值。可想而知,一个业务流程会比最终用户创建一份购买订单要复杂的多,但更复杂的是,它包括同一个组织内的许多不同系统之间的数据交换和相互作用。业务流程本身也可以测量,创建一个多维视图以观察IT系统如何实现这些业务。传统的应用程序把最终用户操作封装成一个相当简单的过程,其中每一项操作都可以被录制为通过普通的中间件所产生的一系列请求和响应,例如HTTP。而SOA业务流程会涉及互相依赖的多个事务、多种协议和多项技术,不一定与最终用户的操作直接相关。你如何使这样的脚本回放?
这就带来了“服务”的概念,我们知道,微软的Web服务RFC是一种针对请求内部信息或者通过HTTP(互联网协议)请求外部信息的机制,它易于理解和使用,这也是Web Service的优势之一。Web Service可以集成到应用程序的客户端,也可以通过应用中间件服务器进行部署。如果它位于客户端,那么几乎不会影响我们的性能测试策略;但如果它部署在中间件,那我们测试的就会是并发服务,而不是并发用户。我们的事务脚本代表的不是用户,而是执行一个或多个Web服务的请求。
当然,SOA的性能测试模型比Web Services要多。另外一些基于“消息队列”的技术已经存在一段时间了,例如JMS和MQ,连同Web Services一起构成了SOA实现的一部分。这些技术每项都可以单独进行测试,但难题在于性能测试是基于服务级还是业务流程级,一般对于目前的自动化性能测试工具来说太过于抽象。
好消息是,第一代能够支持SOA的性能测试工具已经开始出现。本书的下一版将会讲述更多基于SOA的性能测试的内容。