What is Database Continuous Integration?
- by David Atkinson
Although not everyone is practicing continuous integration, many
have at least heard of the concept. A recent poll on www.simple-talk.com indicates that 40% of
respondents are employing the technique.
It is widely accepted that the earlier issues are identified in the development process, the lower the cost to the development process. The worst
case scenario, of course, is for the bug to be found by the customer following the product
release. A number of Agile development best practices have evolved to combat
this problem early in the development process, including pair programming, code inspections and unit testing.
Continuous integration is one such Agile concept that tackles the
problem at the point of committing a change to source control. This can alternatively be
run on a regular schedule. This triggers a sequence of events that compiles the
code and performs a variety of tests. Often the continuous integration process
is regarded as a build validation test, and if issues were to be identified at
this stage, the testers would simply not 'waste their time ' and touch the build at all. Such a ‘broken build’ will trigger
an alert and the development team’s number one priority should be to resolve the
issue.
How application code is compiled and tested as part of
continuous integration is well understood. However, this isn’t so clear for
databases. Indeed, before I cover the mechanics of implementation, we need
to decide what we mean by database continuous integration.
For me, database continuous integration can be implemented as one or more of
the following:
1)
Your application code is being compiled and
tested. You therefore need a database to be maintained at the corresponding
version.
2)
Just as a valid application should compile, so should the database. It
should therefore be possible to build a new database from scratch.
3) Likewise, it should be possible to generate an upgrade
script to take your already deployed databases to the latest version.
I will be covering these in further detail in future blogs.
In the meantime, more information can be found in the whitepaper linked off www.red-gate.com/ci
If you have any questions, feel free to contact me directly
or post a comment to this blog post.