Having seen many versions of this, I'm not convinced the "everyone gets a database" concept is worth it. It encourages micro service hell and means most folks aren't using production quality test data. I've seen a shared staging DB with real ACLs win every time (at scale).
Poll: Does your dev team do these 3 things?
1. All devs have their own DB instance so we don’t conflict with each other. The DBs run locally, and can be reset via static SQL scripts via a single command. The SQL scripts are committed to source control. This way, we can code without internet, demo the app reliably, reproduce bugs, and write fast, reliable tests.
2. Create a short-lived feature branch for each ticket. Each pushed commit runs tests on CI. CI auto-deploys a dedicated ephemeral (short-lived) environment with a unique URL for each feature branch so people can test and approve *before* merge. Thus, no separate shared environments like UAT or staging are typically required.
3. When a PR is approved, we merge to main. The CI server auto-deploys the main branch to prod. If the feature isn’t ready for public use, hide it in prod via a feature flag.