I missed the September issue of my monthly book review. Since it was due to the craziness around the birth of my first son, I will cut myself some slack. Anyway, I was in the process of reading Service Oriented Architecture: A Planning and Implementation Guide for Business and Technology by Eric A. Marks and Michael Bell. Before I get into the book, I must make a confession about my take on SOA.
Over the past few months, I have been trying to get a better understanding of what SOA is really all about by separating fact from fiction. As embarrassing as it may be, I must admit that I originally felt mesmerized by the bright, flashy, neon signs created from all the religious rants by "experts" and marketing hype full of false promises that are rampant across the entire industry. If you're not careful, it is pretty easy to get caught in a trance going "ooo...S..O..A".
After a lot of thought on the matter, I now find myself beginning to share the opinions of people such as Rich Turner and Clemens Vasters. They have more eloquently described their position on the subject than I could. So, you should refer to their blogs for a thorough explanation, but the general idea is that SOA is a misnomer.
Personally, I am a big believer when it comes to service orientation (SO). However, SO is merely an abstract set of principles used to provide guidance for best practices in building distributed systems. When you attempt to create a software architecture around these tenets, it will inevitably be incomplete because they do not address all issues of a software architecture such as data analysis, data mining, data visualization, etc.
At any rate, enough of my ramblings about SO(A). This post is supposed to be a book review. However, due to my stance, it probably isn't the most useful review I have ever written.
First of all, this isn't your typical technical book. The title should tell you that much. It attempts to explain the role of technology and the role of the business within the context of SOA. Consequently, the book is mostly conceptual. There are no code samples and you won't find it referring to any specific technology. However, this shouldn't be perceived as a bad thing. SO(A) is supposed to be technologically agnostic.
Depending upon your expectations, you may find some very dry reading. It attempts to address a pretty wide audience. The first section is targeted specifically at explaining the business value for SO(A). The second section is focused upon the concepts involved with analyzing and designing services. The last section is all about governance, policies, metrics, and return of investment (ROI).
If you are looking for a book on SO(A) that covers all of these topics, it is probably the best you will currently find. However, if you are looking for more information about a particular facet of SO(A) or want to read about its implementation on a specific platform, you should probably look for another resource.
To the credit of the authors, I think they have gone a long way in providing some clarity around a topic that has been littered with hype and confusion. It covers a lot of ground in some of the "dark corners" of SOA such as governance, policies, and metrics. Overall, it does a good job explaining an enterprise level approach to service orientation that may work well for some companies. At the very least, it contains a lot of conceptual level information that is useful in the domain of service orientation and distributed systems.
On a scale of one to five, I would rate this book as a four.
The next book review will be Pro .NET 2.0 Extreme Programming.