my main reasons to split are the following:
- security - minimize privilege escalation and access to infrastructure
- scalability - different workloads need different metrics to scale(CPU bounds vs connection bound)
- dependencies - why burden devs with all dependencies especially some that are more difficult to setup dev environments for
- service per backend dbs/etc (overlaps with the above)
- domain - can place domain specific skills on a team