By Paul Allen
360 Pages
http://www.amazon.com/Service-Orientation-Winning-Strategies-Practices/dp/0521843367
So SOA (Service Oriented Architecture) seems to be a pretty hot topic these days ... and for good reason. However, this isn't something that is brand new. For example, recently my company began looking for a replacement for our accounting software, and some of our other "custom" applications need to be able to interact with that system. The reason we were looking to replace our current software was not just because it was buggy (in my opinion it should still be in beta), but also because the software didn't have any built-in way to interoperate with outside applications. So since we had a need to interact with data that system maintained, we managed to do that by getting down to the ODBC level of their database. The problem with this is when the company did implement a bug fix or upgrade versions, it was a disaster because it would often break some of our pieces that were tightly-coupled to their data structure.
So one of the top features I was looking for in a new accounting package was the ability to interact with the system through something like web services, instead of getting down to the lower level connections and having to know all the little intricacies of their database schema and remember to populated all the right data when one of our applications needed to insert, update or delete some information. I wanted something higher-level that would abstract all that stuff, and let me focus on other things. We eventually settled on Microsoft Dynamics GP, which provides a web service layer who's interface will persist through version upgrades. This means although Microsoft may totally restructure how the data is stored at the database level or how the Dynamics GP application works or behaves, they will account for these changes in the web service logic so all of the exposed methods still work as expected ... which also means all of the code we write to interact with these web services will continue to work without any issues (at least in theory). Turns out this type of "architecture" has a name ... SOA. OK, I did read the book and I know SOA is more than web services, but right now most SOA implementations use web services so this isn't too much of an over-simplification.
SOA is really just a way of separating different applications or layers of functionality so that they can be loosely-coupled. This allows them to adapt to change more easily, or even replaced completely if needed. It also allows developers to easily reuse some code or functionality across multiple applications or channels (e.g. desktop, mobile, kiosk) and still only have to maintain that code in one place.
The way I sometimes think of SOA is similar to a class. As defined in Code Complete, "a class is a collection of data and routines that share a cohesive, well-defined responsibility ... A key to being an effective programmer is maximizing the portion of a program that you can safely ignore while working on any one section of code." A class is used to encapsulate some piece of functionality and hide the implementation details. It only exposes the data or methods that are necessary and nothing more. SOA is really similar to this concept, except on a larger scale. A service might include several or even hundreds of classes that are closely related, but really it is just another way to group some type of functionality and hide the implementation details. This is probably an over-simplification, but I think it illustrates the core concept of SOA.
As far as this particular book goes, I think it was alright. It seemed more academic than practical. It felt like some of the college textbooks I was forced to read where the author was an expert on the concepts and principles they were talking about, but weren't very relevant to industry. Its like they had worked in research and academics for so long they lost touch with what was going on in the real world, and spent too much time on topics that the every-day developer/architect didn't need to know. Although this book was published by Cambridge University Press, it wasn't written by professor. It was written by Paul Allen, who according to the about the author section "is the principal business-IT strategist at CA." That probably means he knows something about industry, but I just wasn't the target demographic for this particular book. Don't get me wrong ... it wasn't a total waste of time, but 1/2 of it could have been edited out and I still would have walked away with the same applicable knowledge.