Simple service, complex system

Microservice architecture is good in forcing the implementation to have clear interfaces and clear responsibilities. Extending the system is straightforward and interruption less. The system is easy to make scalable and highly available. Updating a service can be done independently and in ways that has no impact on the rest of the system.

But microservice architecture has its downsides as well. It requires more resources than a monolith would; segregating services means duplication. For the system to operate a service will interact with other services. This means that there are dependencies between the services, but their lives are different. This is a non-trivial problem to manage.

A system with microservice architecture is also slower than a monolith, as the interaction between services is done through non-ideal channels.

The system may end up being like a puzzle where the pieces keep changing. The complexity of the system becomes overwhelming which will make operating and developing the system very hard.