Chapter 3. Microservices Come in Systems

One actor is no actor. Actors come in systems.

Carl Hewitt

In the spirit of famed computer scientist Carl Hewitt:1 one microservice is no microservice. Microservices come in systems.

Like humans, microservices are autonomous and therefore need to communicate and collaborate with others to solve problems. And as with humans, it is in the collaboration with others that the most interesting opportunities and challenging problems arise.

What’s difficult in microservices design is not creating the individual services themselves, but managing the space between the services. We need to dig deeper into the study of systems of services.

Embrace Uncertainty

What is not surrounded by uncertainty cannot be the truth.

Richard Feynman

As soon as we exit the boundary of the single-service instance, we enter a wild ocean of nondeterminism—the world of distributed systems—in which systems fail in the most spectacular and intricate ways; where information becomes lost, reordered, and garbled; and where failure detection is a guessing game.

It sounds like a scary world.2 But it is also the world that gives us solutions for resilience, elasticity, and isolation, among others. What we need is better tools to not just survive, but to thrive in the barren land of distributed systems.

We Are Always Looking into the Past

The contents of a message are always from the past! They are never “now.”

Pat Helland

When it comes to distributed systems, one constraint ...

Get Reactive Microsystems now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.