The realization I’ve had after scaling a dev org from a single team to 10+ is that you don’t need microservices to achieve any of that.
> When you have 10 teams working on 1 mono-service, who is responsible for which parts of the DB schema?
You can still develop interfaces between teams without microservices. There are a number of ways to do this but the simplest is just a folder structure that reflects the boundaries and enforce them by convention. If the model/repository/[your favourite DB abstraction] lives in `context1/user` you can’t access it from `context2/account` without going through `context1/publicInterface`.
It’s surprisingly easy, depending on your language, to write tools to automatically verify boundary violations if you need to.
This still allows you to solve all of the problems you listed .
> When you have 10 teams working on 1 mono-service, who is responsible for which parts of the DB schema?
You can still develop interfaces between teams without microservices. There are a number of ways to do this but the simplest is just a folder structure that reflects the boundaries and enforce them by convention. If the model/repository/[your favourite DB abstraction] lives in `context1/user` you can’t access it from `context2/account` without going through `context1/publicInterface`.
It’s surprisingly easy, depending on your language, to write tools to automatically verify boundary violations if you need to.
This still allows you to solve all of the problems you listed .