Portland Maine - For the last month or so we have been busy working with our client Bartlett Interactive to usher in some feature enhancements to a Drupal 7 based system for the Presencing Institute. The work consisted of examining their current architecture and finding the best way to build the new enhancements. The new functionality also needed a deployment plan that would have a minimal downtime impact to their production site because it is a very interactive system. User's on the website actively participate in discussion boards, organic groups and blog posting. Unfortunately the enhancements called for a lot of adjustments to the database and some would not fit into the Features Paradigm.
When facing an project like this it is a must that you are working in an environment that allows for plenty of testing, versioning and redundancies. Fortunately the site is hosted with Pantheon which provided us with a dev, test and production environment and an integrate GIT workflow. We identified all the necessary database changes that would not fit into Features and made them manually on the production site. These changes luckily did not have a front-end impact so we were safe to make them on the backend. We copied the database down to the test and dev environments and continued working. As with all projects, hind sight is 20/20 and we had to repeat this process of manual changes to the production database as the project evolved. This is why Features is such a critical tool for Drupal 7 development. For the most part we were safe to continually pull down the production database into our development environment because we captured most of our database configuration changes into a Features module.
Things got a little hairy when exiting nodes needed to be updated with the new field data but we didnt worry because Drupal gives us a tool for this. We used hook_update_n() to populate existing nodes with new default data. When we deployed the new code we could run update.php to have existing nodes brought up to speed with the new enhancements. The only tricky part was the Features needed to be reverted before the update.php could be run, or else we ran the risk that the new fields would not be present in the database.
Working in a proper development environment with the right tools for the job makes even the most difficult projects a pleasure. With Drupal + Pantheon and we can build just about anything.