Micro Focus is now part of OpenText. Learn more >

You are here

You are here

3 priorities for delivering software faster via continuous delivery—without breaking everything

public://pictures/Andrew-Phillips .jpg .png
Andrew Phillips VP of DevOps Strategy, XebiaLabs
For many enterprises, continuous delivery (CD) is key to enabling them to deliver software much more frequently, while greatly reducing the time between the creation of ideas and the delivery of production-ready software.

One of the most critical business challenges facing enterprises is figuring out how to deliver software faster—without breaking everything in the process. As users' expectations are shaped by their experiences of web and mobile applications that keep doing more automatically or at the click of a button, enterprises are tasked with delivering more features to their customers more quickly.

With competitors increasingly able to release new features within days or even hours, companies can no longer afford unpredictable, lengthy, and inefficient release processes that barely support one update every couple of months.

For many enterprises, continuous delivery is key to enabling them to deliver software much more frequently, while greatly reducing the time between the creation of ideas and the delivery of production-ready software.

Priority No. 1: Set measurable goals

Figure out the goals you want to achieve, and don't worry too much about whether those goals line up perfectly with what you may have read about DevOps, continuous delivery, or any other practice or methodology. But keep in mind that you need to achieve your goals without negatively affecting the experiences of your customers or incurring serious financial loss. The big question is: How do you keep a good handle on software quality and reliability when you're putting your foot on the accelerator?

There's no easy answer. Your success will depend on taking baby steps, getting the right tools and infrastructure in place, and building out an automation environment that enables the DevOps team to build, test, and deliver small batches of changes and features that work in production.

Priority No. 2: Incorporate automation, continuous delivery

The technical track of releases rarely proceeds flawlessly in most enterprises. Many tasks, especially in application deployment, environment provisioning, and configuration are still manual or semiscripted—consequently slow and error-prone. Those tasks are immediate candidates for improvement.

Savvy companies seek improvements via DevOps and/or continuous delivery initiatives. Those initiatives usually involve introducing continuous integration and application release automation, a measure of test automation, and on-demand provisioning and configuration of virtualized environments. The goal is to integrate these to create an end-to-end pipeline that can orchestrate the appropriate build, environment provisioning, deployment, and testing steps.

If you are starting a greenfield project or working in a small, highly flexible organization, end-to-end automation all the way to production is often possible. In most enterprise environments, though, releases still require a mixture of manual and automated tasks to be coordinated across multiple teams, as well as an ability to deviate from the original plan in a controlled, auditable manner.

Since a streamlined, highly automated release process remains your end goal, it's critical that your orchestration tooling supports fully automated, continuous-delivery-style pipelines and DevOps-style automated platforms. Technology focused solely on assigning tasks to resources won't enable you to reach that goal.

Ensure the technology you choose can unify the management and technical tracks of your release by supporting this collaborative planning and visibility alongside automated task execution.

Priority No. 3: Test and retest

Traditional methods of manually testing software aren't practical when releases accelerate from once every month, to once every week, to multiple times a day. There isn't enough time, and the pressure to hurry only exacerbates the chances of human error.

The amount of effort required to cover basic regression testing quickly grows to an unmanageable level, even before you delve into new features. Rather than hire more testers, the obvious answer is automation. Testers and developers must work closely together to identify repetitive tests and automate them.

While it's vital to test the functional aspects of the code, security, performance, and so on, you also need to keep a close eye on the business value. Quality isn't just about how well the software works technically; it also means delivering what the end user wants.

Pushing software out the door faster—without damaging the customer experience—is a difficult challenge for any enterprise. However, it can be achieved by setting measurable goals: harnessing the power of automation and continuous delivery, and doing rigorous, automated testing of software. These three facets are essential for any company eager to push the software accelerator to the floor.

Keep learning

Read more articles about: App Dev & TestingDevOps