Tuesday, January 4, 2011

Monty on Modern Software Architecture

My favorite talk at the October 2010 Philly.NET camp was Modern Software Architecture by Michael “Monty” Montgomery. He gave his take on implementing SOA. Monty is a dynamic speaker who took on some of the elements of a gospel church preacher. An overstuffed room was hanging on his words. In response to one question, he said that an architect has to be a really strong developer as well, knowing your s**t backwards and forwards. His answers to other questions and his other talks demonstrate his developer knowledge. References to articles that contain his ideas can be found here on his web site as well as the PowerPoint deck for this talk.


Michael acknowledges his debt to Juval Lowy and the IDesign design method. Having just attended Juval’s master class in being a software architect, I can see the inspiration. Juval preaches the value of focusing on interfaces before dealing with classes that implement an interface. A use case should map one-to-one with an interface.


Michael spent a good portion of his talk discussing what he calls domain SOA, using DDD concepts to inform the SOA architecture of an application.
Any talk covering SOA has to deal with many misconceptions about SOA. SOA is a buzzword that has been subject to a lot of incorrect interpretations by bandwagon jumpers. Both people and companies try to define SOA in terms of how they already do things with accepting that a paradigm shift is necessary to truly employ SOA. Fittingly, Monty spent a good portion of his time talking about SOA antipatterns, what is SOA is NOT.



Monty’s SOA anti-patterns include

  1. Object-centric SOA.

  2. SuperService-centric SOA

  3. UI-centric SOA

  4. Data-centric SOA

  5. Code-centric SOA



SOA should be about messages, not object-oriented design with plumbing to distribute objects. OO design has become so engrained in the industry and drilled home in college curricula that I think this is the hardest anti-pattern to eliminate. Small fine-grained interactions, such as with properties, are not suitable for SOA.
Amen, brother Montgomery!