-
Notifications
You must be signed in to change notification settings - Fork 1
Home
You have dev/test/production style configuration for change management. Code lives in source control and migrates up smoothly, but database structural changes and data that is added in the development or staging process needs to make its way into production as well to support whatever new feature or changes you wish to deploy. The crux of the problem is that there is production data that has to be preserved, development data and configurations that have to be merged in in an seamless, error free manner.
- Duplicate your installation and configuration efforts in development, and the re-do them on production.
- Install module A.
- enable module A.
- Configure Module A.
- If you are happy with the results, do steps 1-3 on test.
- If everybody else is happy with the results do steps 1-3 on production. Gets hard to track exactly what you need to do, especially if theres changes that should be implemented at the staging/test level. There are some tools that help with this process, like the devel macro tool, but if you have a lot of changes to make for the next requested featureset.. well good luck not working nights n weekends with this process.
- Have intimate awareness of what each contributed module is doing behind the scenes, and leverage that with innumerable methods. Thinks like modules built in “export” feature (like views, or CCK content copy, taxonomy XML and the like), or plow into the guts of what ought to be black box plugins, and ensure that all the changes are made on disk, and therefore in source control. This adds major slowdown to the process in using contributed modules.
- Merge the data base changes after the fact: do all the development you need to for a release in dev on a copy of production database. Migrate the changes up using database scripts, and mySql diff sort of things. The main issue with this methodology is sequential key collisions. If there is data created in dev and prod on the same table that has a sequential key ( nodes?) and that data gets moved to production, the keys will collide. Methods around this involve altering keys for “odd is dev, even is production” sort of hacks, base ten hacks (keys ending in 1 are dev, 2 are staging 3 are production, and 4-0 are individual developer stuff.)
Capture the SQL queries as the happen. Much like ‘binary query logs’ in mysql, grab everything that actually changes the database, and then replay those changes to staging and production. The replaying merges the best of solution 2 and 3 without either of their disadvantages.
- http://drupal.org/project/backup_migrate
- http://drupal.org/project/deploy
- http://drupal.org/project/patterns
ability to package complex module groups with default configurations. LIke “add a calendar/views/date” module to your site thats already got all the local sports teams events presubscribed, or a “news aggregator module” config script that packages “liberal politics blogs” into a group.