在设计面向服务架构(SOA)时,应用架构师最常犯的两个错误是什么?据Arnon(Manning上的《SOA模式》一书的作者)说,低水平的粒度和高水平的理解,在面向服务设计中是两个最常见的弱势。
“人们易于把服务粒度弄错。他们不是把它做的太大就是太小。”建立适当的粗粒度,但又不是太大的SOA组件不应该是遥不可及的,同理,Rotem-Gal-Oz认为温故可以知新。“对于SOA开发你需要一种金发(Goldilocks)方法,这种方法使你创建的服务既不太大也不太小,”他说。
Nanoservice反模式
《SOA模式》一书中,在谈论nanoservice反模式时,Arnon Rotem-Gal-Oz解决了更小的粒度问题。“nanoservice是一种反模式,此模式中服务是细粒度的。Nanoservice是一种服务,其开销、通信、维修等远大于其效用。创建Nanoservice,经常伴随着一些错误的假设:宽带是无限的,数据分组运输成本是零,这会导致性能问题、支离破碎的逻辑,以及创建出凌驾于使用性之上的,有修复性问题的服务。”
另外还有些什么是可能无处不在的、一定需要软件开发团队处理的问题?
显然,这是对修饰SOA的基本原则和概念的根本性误解。“甚至更严重的一个问题是对什么是SOA的误解,”Rotem-Gal-Oz说。许多组织错误地认为,如果他们打算开发web服务,那么他们就必须服从于SOA,但事实远非如此。
探索SOA模式和反模式
使用Servlets、Struts或是平平无奇的老旧Java代码创建紧密耦合应用,就像创建紧密耦合服务一样容易。开发SOA方法的关键部分是,创建松散耦合组织,使之把服务边结在一起成为可能,并在某种程度上创建出新的业务流程,Rotem-Gal-Oz说。
在Rotem-Gal-Oz的《SOA模式》一书中,讨论了三种额外的反模式服务,以及先前提到的nanoservice反模式,即结反模式(knot antipattern)、事务集成反模式和相同的老方式反模式。
开发面向服务架构一直都富有挑战,即使是最有经验的架构师和开发人员也如此。但是对于每一个有经验的开发人员来说,都有一位有抱负的设计师,给了他们在分布式计算世界里小试牛刀的机会。为了确保分布式系统,组织要进行架构时,尽可能避免问题,Arnon Rotem-Gal-Oz的见解要铭记于心,随着开发人员正努力地学习SOA设计的基本原则,这包含要找出开发组件的金发方法,它的大小要适当。