You keep using that word. I do not think it means what you think it means.

A chef recently discovered that boiled cabbage, alfredo sauce, and raspberry jelly made for a terrible meal. Every restaurant that tried to serve it received terrible reviews from their customers.

And so he concluded that tacos are a terrible meal and went on to write a few articles about how we need to kill the taco and be vigilant for the next time it starts creeping up again.

The only trouble is that “boiled cabbage, alfredo sauce, and raspberry jelly” don’t describe any taco that I’ve ever heard of. You might say such a combination is a known anti-pattern in cuisine. Unless you’re four. I could imagine a four-year-old being into that sort of thing.

But for the rest of the world, no one would find this discovery to be particularly interesting.

Well, I came across an article from DHH, creator of Ruby on Rails, declaring that “microservices is a zombie architecture” because Amazon’s Prime Video team discovered that a serverless architecture didn’t work very well for them. 🧐

A collection of lambdas and step functions does not a microservices architecture make.

I wasn’t there for the work done on the source article, but from a couple of reads, it seems to demonstrate that when you separate things that belong together, you’ll have a bad time. For example, in the Eventide account-component example, if you run a lambda for each of the different message types that component handles, then all you do is make account-component harder to work on.

The core thing to consider with this article, your system has a logical and physical architecture. The Prime Video team didn’t change their logical architecture. They chose a different physical architecture.

Conceptually, the high-level architecture remained the same.

Microservices aren’t a thing of physical architecture. They’re logical boundaries. When you have good logical boundaries, switching physical architectures becomes possible. When you have bad logical boundaries, no amount of physical architecture change is going to help.

Distributing across bad logical boundaries just takes your problems and adds HTTP to them.


Like this message? I send out a short email each day to help software development leaders build organizations the deliver value. Join us!


Get the book!

Ready to learn how to build an autonomous, event-sourced microservices-based system? Practical Microservices is the hands-on guidance you've been looking for.

Roll up your sleeves and get ready to build Video Tutorials, the next-gen web-based learning platform. You'll build it as a collection of loosely-coupled autonomous services, developing a message store interface along the way.

When you're done, you'll be ready to contribute to microservices-based projects.

In ebook or in print.