Cloud Source Blog
In This HP Cloud Source Blog, HP Expert, Christian Verstraete will examine cloud computing challenges, discuss practical approaches to cloud computing and suggest realistic solutions.

Increase your reaction speed, update your development approach

agility.jpgLet me start with a little story. A good year ago I was in Quebec, and let me disclose something here … speaking French, I’m really welcome out there. We had a wonderful time. One of the customers we met was a local bank. Their IT team wanted to experiment with cloud and we convinced them that cloud enabling their development environment made a lot of sense. So they did. They ran a proof of concept with two development teams. Last May I went back. The POC was nearly over and the head of infrastructure wanted us to take the equipment back. Unfortunately for him, there was no way the development teams were ready to let go. Actually they wanted 8 other teams to join. The infrastructure team saw a lot of benefits for development, but little for them. So, they did not see the benefits of having to buy the equipment. We ended up having to go to the CIO to resolve the issue.

It told me two things. First, moving to cloud changes the equation. The traditional organization and its way of financing/measurement may no longer apply. Second, once you provide developers with tools to facilitate their job, they love it, and it’s becoming difficult for them to go back to their original way of working.

 

How can you speed development up?

Over the application development process, developers use a multitude of environments for design, coding, documentation, testing etc. In a traditional environment they have to set-up their systems at each step in the process. That takes time. We at HP, analyzed the amount of time lost doing this, and surprise, surprise, we came up with a total of 15% of people’s time.

 

Providing them with a centralized environment where they can provision these environments automatically reduces that time drastically, giving them extra hours for developing their applications. That’s a direct benefit gained from using cloud based technologies to provide them the environments they need.

 

But there is more to it. In setting-up their environments, developers have a tendency to use the software versions they have available. In the old world it’s often the DVD that’s on their desk. This results in multiple versions of middleware, databases and tools being used. That will delay the integration of the components of the application and having it taken in production. How much time is gained here is difficult to say, but I would guess anywhere between 10 and 20%. Life also becomes easier for operations, and that’s another hidden benefit of doing this.

 

In a cloud environment, there is only one version of each virtual machine image, and it’s up to the creator to ensure he/she uses the appropriate version of all software components.

 

Using a cloud based environment actually adds two other benefits, first regular back-ups of the work done. Don’t tell me all your developers back-up their environments on a daily basis and never have to redo work because they lost it in a crash. Secondly, availability and security are improved through the use of a centrally managed environment.

 

These are simple approaches you can take to improve responsiveness without fundamentally transforming the way the organization develops applications. Listen to Ramon Baez, HP’s CIO describing how HP is using cloud to improve its velocity and responsiveness.

 

 

Automate testing

You remember the traditional environment where you develop your code Monday through Thursday and spend Friday doing testing? Sure, you’ll run small module testing during the week, but if you expect another module to give you something in one format, while it’s provided in another, you’ll only spot it on Friday.

 

Well this can be changed dramatically by automating the testing. Assume following for a minute. You’ve spend your day in coding functionality. It’s time to go home. You clock your days’ work in the repository and leave. And then it starts. Your contribution and the one of your colleagues are compiled and assembled. The assembled modules are installed and a series of tests are run.

 

By the time you get in, next morning, you have a report on how well your work behaved during those tests, which test succeeded, which one failed, what happened etc. So you can start your journey fresh, knowing that yesterday’s work is doing the job, or what you need to change.

 

By taking such approach you speed up development process, not only because you relieve the developers from a lot of the testing activities, but also because you allow them to be more productive by highlighting issues earlier.

 

Deployment automation

Cloud put the spotlight on automated deployment of applications. During the lifecycle of the application, it will have to be installed on multiple environments. For each of those environments the installation scripts have to be written. They may have to be adapted as the development evolves. That also takes time.

 

What if we could describe the environmental characteristics required by the application and use those to generate scripts and workflows to automatically deploy the application on the different environments.

 

So, you do your module tests on your local machine, your integration tests on a private cloud environment, stress tests in a public cloud, maybe your staging is running on a managed cloud to finally install the application on a private cloud but with high availability, scale-up/scale-down and load balancing.

 

New technologies such as Continuous Delivery Automation allow you to precisely do that. This is also how OpenStack is tested. Monty Taylor describes this quite well in a presentation given at LinuxCon NA 2013.

 

If you have a little more time, you may want to listen to him presenting OpenStack on OpenStack, how testing is done, during OSCON 2013.

 

http://www.youtube.com/watch?v=oMIcx-tj1-I

 

Conclusion

As companies move away from big software release cycles, updating their code regularly, automating testing and deployment becomes critical. It allows developers not just to be more productive, but also to respond to users’ needs much faster. Isn’t that what agile development is all about. What is key though is the integration between development and operation, because having more agile development without involving operations will not give us any benefits. We fundamentally need both.

Leave a Comment

We encourage you to share your comments on this post. Comments are moderated and will be reviewed
and posted as promptly as possible during regular business hours

To ensure your comment is published, be sure to follow the community guidelines.

Be sure to enter a unique name. You can't reuse a name that's already in use.
Be sure to enter a unique email address. You can't reuse an email address that's already in use.
Type the characters you see in the picture above.Type the words you hear.
Search
About the Author
Christian is responsible for building services focused on advising clients in their move to cloud, particularly from a business process and ...


Follow Us
The opinions expressed above are the personal opinions of the authors, not of HP. By using this site, you accept the Terms of Use and Rules of Participation