Microservices immediately complicates the software and goes against keeping it boring.
Currently micro services are seen as a silver bullet to reduce complexity by creating smaller services, however it is very easy to make mistakes and create a distributed monolith or a big ball of mud.
After careful consideration, where we outweigh the pro’s and cons it could still be the right solution for a project. Always ask yourself Will this actually benefit us?
.
Pro's
- Easy to scale up specific modules / bounded contexts
- Keeping services small and to the point
- Easy to split up work between a team and own a whole service
- Easy to distribute your network across providers and or regions.
Cons
- Easy to make mistakes and create a dependency hell
- Not trivial to migrate away from microservices
- Complicates software immediately by creating external requests or accept incoming external requests.