有时候,有标准并不能达成我们期望的效果。不少企业费了一番周折才理解这句话。
众所周知,SOA中的“A”代表架构。但是最初如果仅关注于构建Web服务,最终企业只是拥有了一堆分离且逻辑混乱的集成接口;又或者是一堆分离且逻辑混乱的“基于标准”的接口。用SOA的行话来说就是JBOWS(just a bunch of Web services),即一大堆Web服务,仅此而已。表面看起来非常强大,一击即垮。
SOA从出现到现在经历了很多年,也有人谈过SOA和集成,比较公认的一种说法是SOA不是一种集成方法。目前更多的企业使用SOA来现代化其遗留应用。通过用服务来访问遗留应用,来改善一些集成系统,从而通过效率和更好的数据分析带来附加利益。从这一点上看,SOA作为大厂商的市场营销概念也做的也不错。
诚然,也有企业离开了SOA这块是非之地,但如果企业关注业务流程和治理,而不是技术流程,在设计系统的时候,SOA应该还是比较有效的途径。这也意味着企业要为使用频繁的业务流程来开发服务,像金融机构的信用审查。美国家庭人寿保险公司的IT应用服务经理Frank Braski在一篇文章中表示这些流程也可以通过七个概念来定义和模型化:关系、当事人、产品、协议、位置、属性以及金融工具。在《金融服务业缘何钟情SOA》中我们也做过相关介绍。
尽管SOA可能简化应用开发和遗留现代化,但这并不意味着简单和轻松。因为这个过程中存在很多陷阱,包括复制并粘贴来重用服务。IBM的Sandy Carter曾告诫道,IT需要不断地检查,来看看服务是否还符合业务需求。
老版乐高玩具经常被用来解释SOA,但现在可能在解释的时候要加上转折了。因为优秀的乐高设计师知道通用的模式集可以适用于不同的建筑问题,服务可以看作是乐高积木,但是任何人都可以将两块积木放在一起。这也就是我们所说的模式以及如何来使用这些服务,从这一点上看,一堆乐高积木和一个真正完美的乐高建筑之间存在本质差别。