By definition, continuous delivery is not a discrete project with a defined conclusion. It’s a process that stakeholders need to cultivate, improve and drive forward – even after that process seems to be working just fine.
So, the question begs: What initiatives should you undertake when you feel like your continuous delivery pipeline is running well? How do you take your continuous delivery automation to the next level?
Looking at a number of successful continuous delivery implementations and listening to some of the world’s top thought leaders on the matter, we’ve come up with a few best practices that can keep the improvements coming.
Push farther to the right along your continuous automation pipeline
This is a fancy way of saying, “Get more aggressive.” If a typical pipeline moves left to right, from source code on the left to production on the right, procedures call for teams to start automating facets early in the process and then tackle those closer to production later. It’s usually an issue of resources: You can’t do everything and pay for everything all at once, so start with incremental tasks that you can easily implement and convince others to implement. In some organizations, you might have to think of this as start with the smaller battles you can win – and succeed at! When you feel you can generate a return on investment, push deeper into your pipeline and get into more territories.
Moving continuous delivery closer to production is more of a challenge because tooling in a production system isn’t truly automated. Leveraging configuration management solutions such as Chef or Puppet can automate the set-up of your infrastructure. The other option is to adopt a practice called immutable infrastructure, which completely replaces, instead of updates, an existing part of your infrastructure making deployments less complex. Replacing a system at the lowest level, you can help force the automation of every deployment step that follows.
Get your production and non-production environments in sync
Usually, when you start implementing continuous delivery, you see that your non-production environment is not only simpler than your production environment — it is different because the people who have built it often are from different cultures inside the organization. The development team has a strong influence on the non-production environment, while the operations team drives improvements in production. In the second generation of continuous delivery, we need to adopt the same culture on both sides of the pipeline – everything up to pre-production and production, so they will be the same. This is the culture that is DevOps. In DevOps environments, everyone works towards shared goals. Nothing gets thrown over the wall and finger pointing is eliminated. First you share automation with other groups involved in software delivery, then you share the culture. Immutable infrastructure - using containers such as Docker, offers a great foundation to share the same culture between the development and operations teams as it ensures the environment and configurations are the same throughout the software delivery process.
Improve the quality of the automated test
One sure fire way to improve your continuous delivery pipeline is to bring the testing culture to a new level. It’s an evolutionary process. First, you commit to testing. Then you add testing to existing products, and eventually you design your product with automated end-to-end tests sync’d with the process. The benefits are clear: It’s more cost-effective to create a series of tests along a pipeline than to create individual tests as you go. Plus, each test will be cheaper to implement because the product will have been designed for this, and you will be able to go further with test automation. More automated testing gets you to market faster and frees up resources to do more high-value tasks. Plus, product teams will be more confident in adding features because they know the software will be tested more thoroughly.
Reshape your organization to take advantage of continuous delivery
A year or so after you start your continuous delivery project, it makes sense to redefine the roles and responsibilities of people in the process. This will align everything you do toward the delivery of new functionality. Your development and operations teams should be organized based on shared objectives to be achieved. Some roles may change, some may require new skill sets. For example, as manual tests get replaced by automation, new roles may appear and others may disappear. There will be fewer people recreating the same thing and more people will be charged with thinking and rethinking automation functions.
This won’t necessarily involve more outside training. Rather, it will spur more internal training – more knowledge-sharing sessions between all the different roles within your organization. People working in different communities on different products will need to share knowledge to drive processes further. Teams should organize brainstorming sessions to discuss ways to integrate more automation into their pipelines. For example, if one team at an e-commerce web site company is working on an online shop for retail goods and another team is working on a ticket system for theater shows, the teams can learn from each other by comparing the performances of their pipelines. They can’t do this if they’re operating in silos.
Another way to promote knowledge sharing is to physically change the teams. Have members of one team shift over and embed with the other. That way, teams will continually share best practices and challenge each other to innovate on their pipelines.
Spread the word
While it’s valuable to share knowledge inside the company, it also helps all involved to promote a culture that shares information to the world outside. Encourage leaders of your continuous delivery projects to present what they’ve done at conferences. There are dozens of events each year where DevOps leaders exchange ideas and discuss best practices in the world of continuous delivery. The discipline is still pretty young, so professionals are anxious to learn about how their peers are doing and how they could do their own jobs better.
Sharing your company’s achievements with continuous delivery is good for the people and good for the company. The people get feedback from outside the organization. They get recognized for their quality work. The company gets recognized as a forward-looking organization that presents a positive place to work and uses best practices to spur market innovation. Everybody wants to work at a cutting-edge workplace. Encouraging your workers to spread the word about continuous delivery will help bring in the best and the brightest in the business.
The bottom line: Continuous delivery work is never done. Organizations never completely master it; there is always room for improvement. Organizations can improve – continuously – if they challenge their own methods and share knowledge inside and outside their four walls.