The best I’ve worked with in having duplicate environments for dev, test, preprod, and prod. You probably don’t want real data in dev and test and you probably don’t want everyone having access to preprod and prod. You can test everything but data in test and then you can test data in preprod (but don’t take things down if something messes up and can test things like ddl’s). You manage this with pipelines that are as much code (IaC) as possible and an artifact repo (artifactory or nexus etc) for things that aren’t. You also have some type of release number system and a way of matching that to hashes in repos (and artifacts) with release dates and have some preferred release cadence (because if you don’t deploy for a month, changes will build up, know how gets fuzzy, and people get scared and don’t want to break something that’s working).