Overview

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.

Patterns

Below you can find my short summary about every pattern described in the book:

Service Host

Every service needs the host where it works. For me Spring Framework is excellent example of the service host.

Active Service

Very similar to Micro Services concept, when the service should be autonomous.

Transactional Service

I know a few alternative names of this pattern: Unit of Work, Open Session in View. In JEE world implemented using ThreadLocal.

Workflodize

Strange pattern name. I don’t really like complexity of workflow engines and prefer simple object oriented finite state machine implementation.

Edge Component

Separate infrastructure code from domain. Just simple like that.

Decoupled Invocation

Use event / command bus for communication.

Parallel Pipelines

Apply Unix philosophy to your services. SRP on the higher level.

Gridable Service

Horizontal scaling.

Service Instance

Horizonatal scaling.

Virtual Endpoint

Make your deployment configuration flexible.

Service Watchdog

Service monitoring should be built-in.

Secured Message

Encrypt what should be secured on the message level (privacy, integrity, impersonation).

Secured Infrastructure

Encrypt what should be secured on the protocol level (privacy, integrity, impersonation).

Service Firewall

Security on the network level. Expose only what’s really needed.

Identity Provider

Single Sign On.

Service Monitor

Monitoring on the business process level.

Request/Reply

Synchronous point to point communication.

Request/Reaction

Asynchronous point to point communication.

Inversion of Communications

Command Bus, Event Bus, messaging middleware in general. Complex Event Processing (CEP).

Saga

Long running business transactions. Distributed transactions without XA.

Reservation

Related to Saga, how to avoid XA transactions.

Composite Front End

How to compose services into single web application? Author doesn’t answer my doubts in this chapter.

Client/Server/Service

How to deal with legacy systems. How to move from monolithic architecture to SOA.

Service Bus

Message Bus, Service Bus, ESB - nice explanation.

Orchestration

Externalize business long running processes. But still encapsulate business logic in services not in the orchestrator!

Aggregated Reporting

Looks like CQRS for me.

Antipatterns

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.

Summary

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 aren’t very helpful, with high accidental complexity but don’t 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.

Updated:

Comments