The Wayback Machine - https://web.archive.org/web/20120711104502/http://dotnet.sys-con.com:80/node/2271681

Welcome!

.NET Authors: Liz McMillan, Nicole Gorman, Kevin Remde, Clint Edmonson, Security Gateways

Related Topics: .NET, Java, XML, SOA & WOA, AJAX & REA

.NET: Article

Apply Agile When Deploying Apps

As software development has advanced, a number of new trends & ideas are helping developers get their product to market faster

The application release lifecycle is unnecessarily complex, manual and time-consuming and its cumbersome nature is putting businesses in a position of weakness. This one very critical process determines how fast a business can deliver products to market and yet is complex, error-prone and full of bottlenecks. An application release process can drive products to market faster, to strengthen the overall product roadmap and get the business to be more reactive to market needs.

A focus on speed of deployment is an off-shoot of the growth of cloud and Agile development methodology. The bottom line is - the faster that new features, fixes and improvements reach the customer, the better for everyone. The same principle applies in an enterprise environment - the faster the latest version of an application reaches users, the more productive they can be.

Both environments require scalability. As your product offerings grow and branch out, the delivery method must be capable of handling the changes. In the enterprise environment a large portfolio of software applications is the norm and any deployment solution must be able to scale.

Automated app deployment can reduce costs, and increase speed and scale as needed, but before we take a look at the solution let's discuss the problem.

App Deployment Nightmares
There are a lot of potential problems in deploying applications manually. Not least of which is the time it can consume for developers and IT support. Configuration is the first challenge. Where is the application stored? Which version should be installed? Where should it be installed? Where is the configuration file and how is it applied?

Security is another issue. What permissions are required to install and run the application? How much access do users have?

Manual steps also cost time and money and they introduce the potential for human error. You may have to copy a specific file to a specific location or rename a file. Even running separate scripts for different environments and projects can be a time drain and every manual process required increases risk.

Automation Headaches
Automated app deployment has its own set of problems. If you have someone create custom deployment scripts, then you can bypass some of the problems but that will only work for one app deployment. It also takes time and it means you are relying on that one specialist to update the scripts as required. Scripts can be very complex and they aren't standardized, especially if different developers write different scripts.

If you have a series of scripts, you need a process in place and instructions on how to run them correctly. They will also need to be edited frequently to cater for any changes. A monolithic script might be able to cover the entire deployment process so that you have just one script to run but what happens when you have to deploy to a different environment? What about partial upgrades? Any changes will necessitate a modification of the script.

Either case requires specialist support to run and adapt and results in a system that won't work for a different app deployment. If you need to rollback for any reason it will be a major headache. What is the solution?

Intelligent ARA
Looking to push Application Release Automation to the next level requires some clever tools. In order to break the bottleneck you need a system that is truly automated, standardized and capable of handling multiple application deployments across projects. The aim is to avoid reliance on specialists writing scripts.

The advantages can be impressive. According to a Gartner report by Ronni J. Colville, ARA tools help to minimize the risk of human error and add reliability. They also provide transparency for all of the stakeholders involved and, more important, limit downtime and ensure faster delivery to the end user. That visibility throughout the process can be a real boost to DevOps as both ends of the operation can see the process in action.

Continuous Deployment
There's one step beyond an intelligent app deployment system and that's the idea of rolling out software updates as soon as possible to the live server through a continuous integration system. Realistically this requires you to have some kind of continuous automated testing system in place so you can reduce the risk of introducing problems. On the other hand it means you can push out extremely frequent updates, dispense entirely with any manual tasks associated with the release and forget about the last minute rush to squeeze in features before the build deadline, which so often results in bugs.

A fully automated system capable of planning and adjusting as necessary to serve various environments makes continuous deployment a potential reality. Provided you have the ability to track the process, rollback and uninstall where necessary, you can minimize the risks. For a true commitment to an agile development methodology this is a natural endpoint.

Bottleneck at the Funnel
As software development has advanced, a number of new trends and ideas are helping developers to get their product to market faster. It is always more cost-effective to solve problems as early as possible in the process and this simple truth has transformed our approach to development and testing.

The deployment end of the funnel has remained as a bottleneck sapping up the time and energy of talented software engineers and IT professionals. It's still often a potential source of human error and when it is badly handled the results can be devastating in terms of downtime or dissatisfied customers.

The same logic being applied to software development needs to carry over into the deployment phase. Ultimately by building a complete pipeline from development, through quality assurance, to deployment, where automation and standardization is the ideal, we can save money, deliver as fast as possible and scale as needed. It just makes sense.

More Stories By Coert Baart

Coert Baart is CEO of XebiaLabs, a developer of platforms that automate the delivery of applications onto middleware environments like WebSphere, WebLogic, .Net, JBoss, Tomcat and cloud environments like VMware, Puppet, Red Hat and IBM. You may reach him at [email protected].

Comments (0)

Share your thoughts on this story.

Add your comment
You must be signed in to add a comment. Sign-in | Register

In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.


'); var i; document.write(''); } // -->
 
About .NET Developer's Journal
.NET Developer's Journal covers everything of interest to developers working with Microsoft .NET technologies, explaining both basic and advanced .NET concepts.

ADD THIS FEED TO YOUR ONLINE NEWS READER Add to Google My Yahoo! My MSN