This post is from the CollabNet VersionOne blog and has not been updated since the original publish date.
Continuous Delivery & the Database - The Final Frontier?
We talk to many teams in organizations of all shapes and sizes about automating application deployment. A point we always try to stress is that you really need to think about automating all the steps required to get your application running. Most of the teams we talk to say that yes, of course, this is their goal. “Also the database updates?” we ask. “The database updates?” they respond. “No, no, we can’t automate those…the DBAs will never sign up for that!”! In many cases, this is pretty understandable. Unlike application code or even entire servers, which can be reinstalled if necessary, the records stored in databases represent data that is not trivial to restore or recreate if is lost or incorrectly changed. The reputational risk of losing orders, patient records or the like is significantly higher than being offline for a short period of time. Database changes are also difficult to test (at any rate, there is as yet no well-established practice of unit testing database changes), so it’s not surprising that many feel that having “an extra pair of eyes” review a proposed database update before applying it is A Good Idea. Unfortunately, the growing business pressure to deliver new functionality and applications faster and faster means that having time-consuming steps in your release process is quickly becoming unacceptable. With organizations looking to implement practices such as Continuous Delivery, bottlenecks such as the manual review and execution of database updates need to be removed. What to do?App and DatabaseBy applying proven best practices to the database as well as the application, we can avoid getting stuck with a half-automated, half-manual process. Combining deployment automation tools such as XL Deploy with a specialized database solution like DBmaestro will help you to:
- Ensure the database follows practices such as enforced database version control. The idea is the same as traditional code version control, but designed to make sure you achieve a reliable source of truth and reliable foundations, while not having to deal with out-of-process changes, undocumented database updates etc.
- Efficiently package all changes sets that need to be deployed for both application and database. Database changes can be deployed either based on labels or on specific change sets.
- Perform a trustworthy impact analysis for database changes prior to actual deployments. The analysis must identify and prevent code overrides or conflicts and make sure we don’t break production by automatically deploying something it shouldn’t have.
- Ensure the database impact analysis and database change execution are invoked at the right time in the overall deployment plan, enabling controlled, secure, database updates as part of the Continuous Delivery pipelines.
ConclusionDBmaestro enables automated database updates as part of the Continuous Delivery pipeline while giving teams and organizations the kind of control, insight and traceability that they require. Considering the benefits of combining app and database automation, supporting database deployment tools such as DBmaestro is a bit of a no-brainer for XL Deploy. In fact, you can include DBmaestro change sets directly in your deployment packages created automatically as part of your build process using your favourite build tool or CI server. XL Deploy will ensure DBmaestro is invoked at the right time in the overall deployment plan, enabling controlled, secure database updates as part of your Continuous Delivery pipelines. Time to cross the Final CD Frontier!Get XebiaLabs webinars on-demand!