Versioning and rollback… with a variety of systems.

July 23, 2009

We have a variety of home built systems at AirAdvice that provide a variety of services — building custom and dynamic reports, calculating energy usage, evaluating Energy Star scores, translating calculations for various energy types, etc etc. (and hopefully someday I’ll be allowed to provide an API for people to get at these systems…)

So what happens if you need to, er, want to roll all these interconnected systems back?

Obviously we use source code control for, well, source code and tack version numbers onto our other apps. But usually they are inextricably linked. A database migration might blow away an equipment type by renaming it, and the new energy modeling software will only recognize this new equipment type. What version was the version of the modeling software that matches the rolled back source code? Quickly now. Your servers are down.

On the one hand it seems like this would be a simple thing to solve. We already track what migration we are on in the database. We could track the application versions of the compiled with the migration numbers, a tag or commit number, and a date stamp for a release date.

This is handy as a reference for the tech when the proverbial monkey poo hits the proverbial fan, but he would still have to reference this table by hand when doing a manual rollback.

Is there a way to automate these types of references, other than some amalgamation of Windows batch and *nix makefiles? I suppose ant could be used across both; we already use it for PhpUnderControl to see when I break unit tests, and watch our code coverage grow. But that doesn’t really centralize command and control if, for example, in one keystroke I wanted to roll back a variety of systems, and make sure that all systems were rolled back together.

Anybody know of such a system or a homegrown procedure that can handle it?

Advertisement

Leave a Reply

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

WordPress.com Logo

You are commenting using your WordPress.com 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 )

Connecting to %s

Follow

Get every new post delivered to your Inbox.