a good practice is to build the system as a monolith initially and refactor to decoupled containers only as needed. There’s no need to jump straight to microservices and pay

¿Por qué?

Al diseñar normalmente podemos considerar Un Bounded context en una arquitectura monolítica (un container C4), puede ser un modulo con una interfaz muy bien definida o Un bounded context en una arquitectura orientada a servicios puede ser una unidad independientemente desplegable (container C4). Llevando esto al extremo con microservicios, cada workflow sería un container desplegable. En este sentido, es mucho más sencillo refactorizar en la arquitectura monolítica. Y por otro lado, es mucho más complicado en una arquitectura de microservicios. Además que empezar con estos hace que lleguemos a absurdos como un monolito distribuido por falta de haber definido correctamente fronteras que tengan sentido.