I’m sad to see that microservices are falling in popularity among architects and developers.
Some say they are unnecessarily complex or overengineered. That one needs to learn so many new tools and technologies. That they introduce problems we had already solved.
However, many ‘do microservices’ (unintentionally) wrong, mimicking the external displays without harvesting the benefits. I’d say that thinking in microservices is the most useful design approach we’ve created as an industry and every software architect should adopt it.
Here I list 3 mistakes I often see that make some people dislike microservices.
Mistake 1: Confusing Microservices with Distributed Systems
When you chop your application into multiple servers/containers/lambdas, you haven’t created microservices.
Microservices require a lot of thinking about what logic should be together and what logic should be separate. The resulting areas form so-called Bounded Contexts (a term from DDD) that allow you to independently model that area’s problem. In each area, the same word (like User) has a different meaning so you need to be careful about translating from one context to another.