One of those things that I’ve taken for granted in my time at Amazon is the concept of microservices and the rough assembly of a group of them to form a system.

It’s super easy to try to apply a sense of a monolithic application to a set of services. But in doing that you get rid of the reason that microservices exist in the first place. If you constrain the lifecycle of a service to that of the whole you’ve done nothing but make a distributed monolith.

To really embrace this you have to take a step into the relative unknown. You have to make things small and light enough to fix things as they crop up. You have to accept that some cases will fail at times — but those failures will tend to be small, and since you’ve made a quick system, those problems will be easy to fix.

It’s a step that hard to make.