无论是在各种分析报告和杂志的“2007年最热IT主题”中,还是在IT厂商(尤其是企业软件领域的厂商,例如Oracle和BEA)的最新宣传中,都经常会看到SOA(服务导向型架构)一词。“SOA”很可能会遍布这些厂商的Web站点、演讲和白皮书。但是,也可能出现另一种情况,即关于SOA的讨论只集中在应用软件设计架构层面。事实上,如果想成功地利用这个崭新的SOA概念,必须用更系统的方式构建IT基础设施。我们将分两部讨论SOA部署中经常被忽略的网络和安全问题。
SOA综述
从不同的角度看,SOA有不同的定义。积极推进SOA的国际标准组织之一OASIS(结构信息标准化促进组织)给出的定义是:“组织和利用分布式功能,使之能位于不同所有权域控制之下的一种方法。”实际采用SOA的一个例子是某日本公司的后勤部门从由中国外包制造合作伙伴托管的应用访问SOA服务,以获得向印度客户发出的某产品的最新信息。
实际上,SOA并不是一个全新的概念。很长一段时间以来,IT部门一直都试图将各种企业应用集成在一起。EAI(企业应用集成)和B2B商务集成拥有同样的目标。多数情况下,以前的应用都是专有的,实施的是紧密耦合的应用集成。在快速发展的当今世界里,这种集成通常不够灵活和便捷。
Web逐渐成为在线通信标准之后,SOA取得了很大的突破,使企业可以利用广为部署的标准协议,包括简单对象访问协议(SOAP)的Web服务标准,通用说明、识别和集成(UDDI)以及Web服务说明语言(WSDL),实现不同软件应用之间的互操作性。SOA的最终目标是,无论设备的物理位置在哪里,无论使用的是哪种初始编程语言、操作系统或网络,都能够以按需“服务”的方式,为处于全球任何地方的任何其它应用提供支持Web服务的软件功能。
这种模式的最大优点是,由于几乎所有应用都能通过标准消息格式访问应用功能,因此,SOA能够提升业务价值,提高IT效率。
SOA对网络的意义
很多SOA解决方案都忽略了网络。它假定网络能够在应用转型之后顺利支持新的SOA应用。
著名的计算机科学家 L. Peter Deutsch曾经总结出“分布式计算的八大谬误”。这些假设为:
1.网络是可靠的;
2.延迟为零;
3.带宽是无限的;
4.网络是安全的;
5.拓扑是不变的;
6.只有一位管理员;
7.传输成本为零;
8.网络是同构的。
尽管Deutsch 在1991年就总结出了这些谬误,但一直到今天研究“崭新的”SOA概念时,才得到了重视。使用Web服务的SOA实际上就是分布式应用。设计Web服务时,我们必须牢记这八个方面。
需要特别注意的是,在网络上大量使用Web服务会带来以下结果:
•应用的“Web化”通常意味着增加5~10倍的流量;
•在SOA框架中,消耗应用将Web服务视为URL,可以放置在任何地方,供Web访问。来自不同系统的不同模块一起执行业务流程,意味着与典型的客户机-服务器应用相比,网络流量模式更难以预测,分布范围更大。
•创建SOA 应用时,通常假设它具有相当于LAN的性能。但部署时,SOA应用交互过程会增加WAN延迟和包丢失,从而造成超时。
•从网络角度看,SOA 应用通常类似于互联网http/https 流量。网络管理员需要定期检查SOA http/https 流量的SLA和QoS,并与其它纯Web流量隔离,例如员工访问其个人Webmail时产生的流量。
•SOA 服务可以由ASP等外部机构或商业合作伙伴提供。网络必须是端到端网络,不但要包括内部网络,还要包括包含公共互联网的“外部网络”(通过IPSec或SSL)。
部署SOA时必须考虑上述问题。一般情况下,SOA项目预算只包含软件和服务器,但如上所述,其实很多方面都需要考虑。因此,整个计划应该包括网络升级(如果需要,应该考虑路由器、交换机、防火墙和应用加速设备的升级),以便支持SOA。
网友评论