I took this book from my bookshelf when I was preparing internal presentation about micro services for my Roche colleagues. I was mainly interested in Saga and Composite Front End patterns. But when I started, I decided to read rest of the book.
Below you can find my short summary about every pattern described in the book:
Every service needs the host where it works. For me Spring Framework is excellent example of the service host.
Very similar to Micro Services concept, when the service should be autonomous.
I know a few alternative names of this pattern: Unit of Work, Open Session in View. In JEE world implemented using
Strange pattern name. I don’t really like complexity of workflow engines and prefer simple object oriented finite state machine implementation.
Separate infrastructure code from domain. Just simple like that.
Use event / command bus for communication.
Apply Unix philosophy to your services. SRP on the higher level.
Make your deployment configuration flexible.
Service monitoring should be built-in.
Encrypt what should be secured on the message level (privacy, integrity, impersonation).
Encrypt what should be secured on the protocol level (privacy, integrity, impersonation).
Security on the network level. Expose only what is really needed.
Single Sign On.
Monitoring on the business process level.
Synchronous point to point communication.
Asynchronous point to point communication.
Inversion of Communications
Command Bus, Event Bus, messaging middleware in general. Complex Event Processing (CEP).
Long running business transactions. Distributed transactions without XA.
Related to Saga, how to avoid XA transactions.
Composite Front End
How to compose services into single web application? Author does not answer my doubts in this chapter.
How to deal with legacy systems. How to move from monolithic architecture to SOA.
Message Bus, Service Bus, ESB - nice explanation.
Externalize business long running processes. But still encapsulate business logic in services not in the orchestrator!
Looks like CQRS for me.
Funny names for real problems when SOA is used:
- Knot - problems with coupling.
- Nanoservice - problems with bounded contexts.
- Transactional Integration - problems with XA transations.
- Same Old Way - problems with CRUD like services.
For sure it’s worth reading but I expected more from Arnon Rotem-Gal-Oz. Sometimes I felt that author covers only the top of the iceberg, when demons are under the hood. The sample code fragments are not very helpful, with high accidental complexity but do not clearly show the problem.
In addition the book was published in 2012 but you will easily realized that author had started ten years before, some parts seems to be outdated.