As agile software development becomes mainstream, many companies are taking the next step by adopting DevOps practices to optimize their delivery processes. In fact, according to one survey, 71 percent of companies reported having current or planned DevOps projects. The practice, which combines software development and IT operations, can be considered “the missing piece” of agile software development.
While agile processes allow companies to plan, code, and even test software quickly, DevOps focuses on maintaining the momentum by ensuring that software gets out the door—and into the hands of customers—just as quickly.
At face value, making the decision to implement DevOps appears easy. The benefits are numerous—continuous software development, faster delivery of features, more stable operating environments, and reduced recovery time, to name a few.
One report revealed that high performers that use practices like DevOps deploy 200 times more frequently, recover 24 times faster, and have three times lower change failure rates compared to their lower-performing peers. DevOps can also enhance employee engagement, build trust, and make for happier, more productive teams.
However, making the transition to DevOps can be challenging for many organizations. Breaking down cultural silos, testing across multiple platforms, and maintaining functionality while migrating back-end systems are just some of the obstacles companies face.
Seven key strategies companies can employ as they make the move to DevOps:
1. Make sure planning and design processes are iterative.
Anxious to reap the benefits of DevOps, some companies put the cart before the horse by implementing DevOps practices without making their planning, designing and coding processes more agile. In other words, they focus on implementing continuous integration and continuous delivery processes downstream without applying agile methods upstream.
To get the most benefit, companies should first re-configure their planning and design practices to be more iterative. Instead of a quarterly or yearly cadence, companies should be planning and designing in smaller chunks so they can re-prioritize their requirements as needed. Once the upstream processes are more agile, companies can then apply DevOps practices downstream and benefit from a completely optimized development cycle.
2. Focus on company culture.
While restructuring and planning are large parts of the transition process, it is important for companies to also focus on making the necessary cultural changes that come along with DevOps. Unlike waterfall approaches to development, which typically have departments operating in “silos,” DevOps utilizes cross-functional teams that require communication and collaboration among team members that have typically never worked together before. This means that companies should set up teams in a way that fosters easy communication and builds trust.
Gone are the days of development centers or testing centers of excellence. DevOps brings all those functions together into one collaborative team. To build the most effective teams, companies need to focus on creating a unified culture where team members work closely, openly share knowledge, and aim for the same goal. Research shows it is also critical for companies using DevOps to build a culture of experimentation where failure is leveraged as an opportunity for learning and evolving processes.
3. Change up your development architecture.
In a DevOps environment, teams need the freedom to plan, design and deploy quickly without holding each other up. This typically requires making changes to the development architecture. For example, in a traditional development architecture, one team may be ready to commit a code to change, but in doing so, they may break what another team is doing.
To overcome this obstacle, many organizations are adopting micro-services architecture, which decouples items in the application. Rather than have one huge codebase, a company has several codebases, each with their own development pipelines. This allows teams to function independently, avoid potential bottlenecks, and, in turn, push out product faster.
4. Automate testing, but only where it makes sense.
One area that can be confusing during the DevOps transition is testing. With development cycles cut in half, how can months of testing happen in a matter of weeks?
That’s where automated testing systems come into play. However, companies need to be sure they don’t simply automate every test. Instead, the goal should be to provide the most test coverage as possible with the least amount of effort. That includes automating some manual tests, but it also means consolidating the number of tests wherever possible. Are certain tests unnecessary? Can some be combined?
In some cases, it might make more economic sense to keep a few tests manual. Automated tests can speed up testing in the long -run, but they also require setup time, maintenance and evaluation and adoption of automation frameworks. To fully optimize testing in a DevOps environment, companies should consider all the resources they need to maintain quality, and then balance that against speed and cost.
5. Centralize test data.
Making the decision of what tests to automate comes down to having good test data. A testing management system with centralized data can be a useful tool by providing a holistic view of all of your tests—across all of the delivery pipelines—so that you can see how frequently tests are failing, how long they take to run, and how much time you are spending on environment setup and data creation.
For example, many companies focus on automating test execution but fail to consider automating the creation of test data. So while automated tests may be cued up and ready to go, they are always waiting on the test data before they can run. This, in turn, slows down the cycle. An automated test management system can provide insight into the time spent on data creation and determine whether or not it is worth automating.
6. Closely analyze legacy processes.
Another major challenge for companies transitioning to DevOps is figuring out how it will impact legacy processes. Transitioning legacy processes to DevOps is complicated, with a high initial cost of transformation that doesn’t always offer the best return on investment. The key is to take a look at the application and evaluate how long it will be around in its current state. Is it worth creating a DevOps process around the legacy application, or is it better to invest in decommissioning or modernizing and rebuilding that application because it will only be around for a year or two?
Answering that question requires companies to take a look at the full path of data from the customer all the way to internal systems and back out. What dependencies does that data have and what are the areas that can be optimized the most at the lowest cost? If a mobile app, for example, has been created using DevOps processes but still connects to a legacy system that uses waterfall-type development, there is likely something that can be done to optimize that process.
7. Build APIs to maintain functionality while migrating back-end systems.
Updating back-end systems is another key aspect of DevOps. However, this can also be challenging, as the migration process needs to be performed carefully to make sure there is no loss in functionality. Addressing this issue goes back to making changes to the development architecture. Companies, for example, can create API’s for legacy applications and break their large monolithic applications into smaller ones. This will allow these applications to be more easily connected to new customer facing-applications and simplify the process of moving business logic from large, legacy monolithic applications out into the API itself. In doing so, the product becomes unhinged and can operate independently in smaller units that speak via API to each other. This additional layer makes the migration process easier and, in most cases, much more seamless.
Like any transition, the move to DevOps will take time, effort, and some trial and error. However, research continues to show that the business payoffs are well worth it. With a few key strategies in place, companies can successfully implement DevOps practices and start reaping the bottom-line rewards that continuous integration and continuous delivery offer.
Tricentis qTest Pulse is a testing application designed specifically for development teams practicing continuous testing within their DevOps pipeline. Tricentis qTest Pulse integrates with the most popular DevOps tools on the market including GitHub, Jira and Jenkins, enabling development teams to deliver high-quality software with every release.