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.
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.