Now that we have some large UrbanCode customers under our belt, we can now look at some of the metrics involved in deploying a continuous delivery solution like IBM UrbanCode Deploy. There are definitely some hard measurements that can be taken. You can easily look at a simple metric like the time it takes to perform deployments. Time savings is the easy valuable result the comes from automation. Don’t forget to take into account the amount of time it takes to create the automation, but once it is in place, the more times it is utilized the bigger return on that investment. Over the landscape of an enterprise and a duration of a year or two, your investment in automation in a continuous delivery solution can pay for itself.
But let’s be honest, automation has been around for years and no sys-admin is on the job for more than a day without building a script to automate something. Automation has always been a valuable component to deployments. Using a continuous delivery solution helps to capture that automation into reusable chunks so that it can be extrapolated across the enterprise. But I will say that I have run across some organizations that have been pretty good at this before “continuous delivery” was first uttered.
So what are some other long poles in the deployment tent? I once consulted at a customer that had a testing data center that so large that you literally couldn’t see the opposite wall. There was more hardware in that room (and consequently more needed power and cooling) than I had ever seen. Despite this, it was a 6 month wait to get an available test environment. You would think that with that much computing power under one roof that you would have immediately available systems. However, at any given time more than half of the systems in that room were in “transition” from one testing environment to another. The process of provisioning an environment for a specific application (at that time) took a lot of manual labor and your request was put on a queue that took time to get to.
So to me to get the biggest bang for your buck in continuous delivery is combining deployment automation with system provisioning. And taking it even a step further, provisioning a physical system is one thing, but Cloud solutions bring even more to the value proposition by removing the need for physical deployment targets.
Improvements to IBM UrbanCode 6.x have been made to help bring integration with provisioning and Cloud as a standard capabilility. I will spend more time in a future post or two on this, but here is the high level process.
1. Prepare the Cloud – a deployment pattern is created in the cloud catalog. This pattern specifies the process of creating an infrastructure for an application. The pattern codifies enterprise standards and insures consistent infrastructure. Part of the pattern should be installation of the IBM UrbanCode Deploy agent. When the nodes of the pattern are booted up they will communicate with the UrbanCode Deploy server.
2. Import the Cloud pattern into UrbanCode Deploy – this will create a new Resource Template that has an Agent Prototype for each node in the pattern. Properties that need to be specified for the pattern are captured as UrbanCode Deploy properties.
3. Create a new Application Blueprint that specifies the Resource Template created above. The blueprint binds application information (components) to the Agent Prototypes in the template.
4. Now create a new Application Environment based on the Application Blueprint. You specify your Cloud connection properties as well as any properties needed by the Cloud pattern.
The result of all of this is a newly provisioned Cloud environment with your application deployed to it. Nice.
In a future post or two, I will go into some of the specifics of this solution. But needless to say, the value proposition of this solution is the promised land of continuous delivery.