These days it seems like every customer we have wants a test, dev, training and production system. Great news for the company's bank balance but not so great for the engineers.
At present our internal processes for managing technical changes are pretty non-existent, very much relying on whoever made the change to document it (in a hard to search helpdesk app) and apply the changes to all environments. And then document that.
So I'm curious as to what everyone else does, both in terms of process and software tools used?
Not sure what your specific applications are but yes +1 for VCS.
Usually only a handful of settings differ between environments eg: url, database connection string, storage location/path etc...
Those can be in separate config files you can switch via script for deployment or in the one config file that that you switch by changing an environment setting.
Ideally what you want is:
- Everything in a VCS - Automated builds (continuous integration) - All database changes should be done via migration, ie: all changes are scripts, all scripts have a version number. Typically copy version of the DB (test, dev, train, live) has a version table that knows what it's current version is so you can automate running all the scripts with a higher version number against the DB during deployment. - Scripts for deployment (deploy to dev, deploy to test, deploy to live etc) that copy application files, update databases and change/switch config settings
Quite a bit of initial work but pays off in the long term massively.
Follow us to receive Twitter updates when new discussions are posted in our forums: