I used ADAM, then LDS for a fairly large-scale site (several DCs, millions of executives, ~ 1000 auth / profile-get TPS).
During dev, we launched an engineering environment similar to DB, which affected both options:
- Products - distributed, stable, available for release, deployment only, prod customers only.
- Test - distributed, stable, test, testable, similar equipment for production.
- Integration is a joint, less volatile, test, tested deployed, similar equipment for production, built depending on the requirements of the cycle.
- Development is collaborative, unstable, testing belongs, dev is deployed. Rebuilds weekly using change scripts.
- Private - individual, very variable, privately owned, privately owned. Built on demand using test scripts.
We relied heavily on scripts to deploy, migrate the schema, and fetch data between environments. For a while, PITA wrote scripts for advancing into a common dev, but this forced us in the mentality of source control to generate circuits and test data very early in our cycle.
While this was pretty overhead on v1, in future versions it made updating and fixing a live system very natural.
The role of integration units has changed over time in the dev loop, moving the current version or future version of the circuit closer to the end of the loop.
It may collapse some of these roles - it depends on the prior art, integration requirements, and the consequences of errors. The cost of removing our systems offline was potentially millions — the rigor was worth it.
source share