Microservices are popular as (in theory) they force a number of the above principals onto teams by splitting up services into small domain concerns with clear interfaces. They provide other advantages such as (but not limited to):
However they also have a management overhead and if designed poorly can be unintentionally tightly coupled (e.g a distributed monolith) which can become a nightmare to maintain.
We believe a team should understand how to create a loosely coupled Monolith before embarking on Microservices so recommend the video below.
Creating a Loosely Coupled Monolith
Modular Monoliths • Simon Brown (Warning! Challenging! Pay close attention to minute 38 onwards)