New Book Review: "Microservices vs. Service-Oriented Architecture"
New book review for Microservices vs. Service-Oriented Architecture, by Mark Richards, O'Reilly, 2016, reposted here:
Unlike some other books focused on microservices architecture, Richards specifically investigates microservices architecture in the context of service-oriented architecture (SOA) that came to dominate the technology industry circa 2005. As the author explains in his preface, "dozens of best practices for implementing SOA emerged at that time, as well as a plethora of third-party products to help companies implement SOA", but "unfortunately, companies learned the hard way that SOA was a big, expensive, complicated architecture style that took too long to design and implement, resulting in failed projects that drove SOA out of favor in the industry". It would be easy to view the current acceptance of microservices architecture in much the same light if distinctions were not made between SOA and microservices architecture, so Richards provides a much needed text that compares the two.
In my earlier review of Sam Newman's "Building Microservices: Designing Fine-Grained Systems", I mentioned that the "Microservices and SOA" sidebar of Martin Fowler's "Microservices" article indicates that the "common manifestation of SOA has led some microservice advocates to reject the SOA label entirely" and "others [to] consider microservices to be one form of SOA, perhaps service orientation done right", but "the fact that SOA means such different things means it's valuable to have a term that more crisply defines this architectural style". Newman clarifies the microservice approach by explaining it "as a specific approach for SOA in the same way that XP or Scrum are specific approaches for Agile software development", which "has emerged from real-world use, taking our better understanding of systems and architecture to do SOA well", but I like the simple, focused approach that Richards presents here.
After first taking a look at the world of service-based architectures from the standpoint of service contracts (including versioning), service availability, security, and transactions, the author expectantly asks whether there is just too much complexity involved. While Richards agrees that service-based architectures are complex, he also points our that adopting such an approach involves trade-offs. While new issues are introduced, service-based architectures also provide additional capabilities that will help enable greater development team productivity, more reliable and robust applications, overall cost reduction, and decreased time to market.
However, SOA and microservices architecture vary greatly in terms of service characteristics, so the author follows up these statements by walking the reader through the differences of these approaches over the next couple chapters, addressing topics such as service taxonomy, service ownership and coordination, service granularity, granularity and pattern selection, component sharing, service orchestration and choreography, middleware versus API layer, accessing remote services, application scope, heterogeneous interoperability, and contract decoupling. While I have read several different books focused on microservices architecture, I will be recommending this book above all others of this genre at this point, due to its focus and terseness.