A combination of business demands and a transition to more agile software delivery techniques sees us needing to deploy code to the next jade environment in the chain through to production at ever more frequent rates. Previously for Test bases this occurred overnight, now it is expected multiple times per day.
We have multiple Developers and Testers working on different changes in their respective shared environments, so dropping these to allow for changes to be successfully made is disruptive and largely impractical, let alone hotfixes to production environments.
Examples of deployment issues include class locks where structural changes are made to transients, changes to forms if that form has been previously opened, and I guess the biggie is reorg completion.
The ultimate achievement would be where any changes could be deployed to an environment while it is running without any impact or downtime to the users or functionality, effectively enabling a full continuous delivery capability. Appreciating that this is a wide ranging and difficult problem to crack, so perhaps the community could identify the most common cases and we work through those?