March 22, 2009

Choosing the Tools for Release Management

Filed under: Code, MySQL — Gregory Haase @ 3:10 am

There is More Than One Way…

When I give my tutorial session at the MySQL Conference and Expo next month, I am going to talk a lot about different tools that you can use to manage your release processes. For example, I will be spending a lot of time talk about how to use source control, and I will be using Bazaar in the tutorial. And I will be talking about how to package releases and I will be using Apache’s Maven. The system that I will show you how to put together will work brilliantly on it’s own. And it wasn’t entirely created in a vacuum – it is based on at least 2 implementations with which I’ve been involved. But it may not work for you and your environment out of the box. There are tons of different source control systems out there, and there are probably equally as many build systems. Chances are your company is already using some of these tools for application development. You should leverage these existing tools as much as possible.

Don’t Recreate the Wheel

One of the single biggest reasons to leverage your companies existing resources is so that you won’t have to go and do a bunch of work that’s already done. Why bother going the the process of evaluating source control systems, learn how to work with the one you choose, and go through the implementation process if someone in your organization has already done it. Make sure it’s adequate for your needs and roll with it. This is great – there are so many questions you won’t have to answer: Where do we host it – already done; how do we set it up – already done; who is going to manage it – already done. More importantly, if your company is using the tool there’s a really good chance that there is at least 1 person (if not several) who is highly knowledgeable in the tool and can help you get up to speed quickly.

There’s a good chance that your database is tightly wed to the application anyway. Business requirements call for application changes that require new tables, new columns on existing tables, new queries, new routines, etc.  Or application performance issues call for tables to be partitioned, indexes to be created, denormalized tables for reporting – the list goes on and on. If your database processes are tightly integrated with the application, life becomes much easier. Tools that package up the application can package up your database changes at the same exact point in time – insuring that everything is perfectly in sync. Build tools can incorporate steps that push the latest changes to the database and ensure that regression testing is completely accurate.

Using existing tools also makes it easier on your infrastructure – whether you manage it or someone else does. For one thing there are less moving pieces to manage. And developers that might be touching both the application and database only need access to one tool. It can also solve some communication issues – if application developers know exactly where to look to see if any schema changes are in the pipeline. If your company is using proprietary tools, then there is a good chance you can save on licensing costs as well.

And the last advantage is a bit of a dirty trick – given access Database Developers or Administrators can routinely grep through the application source control for text like “select *”, “left join”, and common SQL anti-patterns (yes I am looking forward to this presentation too).

What if You Are The Application Development Team?

If you are in a really small shop or a start up, there’s a good chance that you manage both the application and the database. Maybe you have everything buttoned up already, and if you do – kudos and congrats. But if you don’t, or if you only have the application running in source control and you really aren’t sure what to do with your database changes – then I strongly encourage you to develop a process as soon as possible. Get it all in one place and get it together. It may seem like an incredible amount of overhead at first. But I can tell you from first hand experience it’s definitely worth it. I’ve worked on solo PHP/MySQL projects where I didn’t have any kind of source control or release management and I’ve worked on solo projects where I took the time to setup good development tools and processes in advance. Having done the latter, I don’t think I would ever attempt the former again.

You Can Lead a Horse to Water…

So here’s my promise: If you attend my  tutorial session at the conference, I will teach you the principals and theories around release management. I’m going to show you lots of benefits for doing proper release management, and I’m going to show you one way to do it. But it’s going to be up to you to get in touch with the key players in your organization, see what tools they are currently using, and see how you can best fulfill your needs using the existing application development stack.

Coming up…

I am way past due on a detailed article about leveraging MySQL Sandbox for testing your upcoming releases. Watch this spot for information on that soon. Giuseppe has added some nice new enhancements that should make this process even easier.


  1. Hallo,

    that sounds very interesting to me. Currently we are using GNU make to update triggers, views, stored procedures and schema changes or to create a new database setup from the scratch, but i would like to know watch is your opinion on that point! Unfortunately I am sitting in Germany and will not have the time to travel to Santa Clara, so is there a chance that your speech or slides will appear online? Would be very nice…


    Comment by Dennis Birkholz — March 22, 2009 @ 2:35 pm

  2. Wow. I never thought about packing up releases with GNU Make. I’m glad you posted that comment. The tools that I’m most familiar with are ant and lately maven. These are arguably java-centric, but then I’ve been working in shops that are mostly java-based.

    Bottom line – I think using GNU Make is an excellent idea. If it is something that you are more comfortable with than other tools, or if your application development is compiling with Make then it should prove to be the best tool for your job. I think you’ve already shown that the tool can do what you want it to do – or you wouldn’t be using it.

    The one thing that Maven does nicely is integrate with source control. You can configure it so that when you create a package, it first creates a tag or snapshot in your repository, then it uses that tag for the build. This ensures that at any given point in time, there is no confusion about which version of the code is in your build.

    I would be curious to know if Make has this ability.

    Comment by Gregory Haase — March 22, 2009 @ 3:00 pm

  3. Hello,
    I am trying to setup an automated process for DB releases in my organization.right now , the Db releases are handled manually and require more effort and time but still is error prone.I read your article and thought if you can post me your speech or presentation , it will be of much help.

    Thanks in advance

    Comment by Abhi — March 17, 2010 @ 1:58 pm

  4. Hi Abhi,

    Thanks for you interest. Immediately before the tutorial session, I posted all of the materials that were used here:

    The materials included instructions on how to work through the examples in PDF format, and a tgz with some files that were used.

    Although the software versions might be a bit out of date now (this was almost a year ago), you should be able to follow through the examples and get a good idea about how the process works.

    Of course, if you have specific questions you can post them here and I’d be happy to try to help.

    Comment by Gregory Haase — March 18, 2010 @ 1:23 am

RSS feed for comments on this post. TrackBack URI

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

The Silver is the New Black Theme. Blog at


Get every new post delivered to your Inbox.

%d bloggers like this: