Lessons from 29 DevOps Experts on the Best Way to Make the Transition to Continuous Delivery – Andrew Yochum

Download the FREE eBook

Collaboration. Automation. Discipline.

Andrew Yochum
Enterprise Technology Architect

Lessons from 29 DevOps Experts on the Best Way to Make the Transition to Continuous Delivery - Andrew Yochum
I’m a big advocate of agile methodologies, having experienced vast improvements on development teams over my career. Many teams adopt agile practices, like Scrum, DevOps, and continuous delivery, to bring agility to the business. Each of these practices plays a role in a team’s realization of the Agile Manifesto’s principles, which should be interwoven to achieve even greater results. The key to achieving agility is being able to deliver confidently in a repeatable fashion—every time. But, how?

Collaboration. Automation. Discipline.

One team I lead for a Software as a Service company had multiple, interdependent applications supporting consumers, business owners, customer service, and internal administration. When I joined, the applications were deployed manually to physical servers. Deployments were time consuming, requiring downtime and carefully executed processes from systems administrators who knew little about the applications themselves. Troubleshooting was tedious when things went wrong. Testing the deployment was equally challenging. Often, the result was failed deployments and downtime.

I knew it was time to bring agile methodologies to the team, fostering collaboration with Scrum and DevOps. The goal: add automation with automated testing, builds, and deployment, and through these elements, bring a disciplined methodology to achieve agility.

We took things to the next level by adding a continuous build and test process internally on a virtualized infrastructure that our systems administrators had set up. The benefits were clear right away. Committing code kicked off a build, deployment, and automated tests. The results of the build showed up in the developers’ inbox and the integrated development environment. Over time, the team added unit and functional tests to ensure that everything worked as expected. Our quality assurance (QA) team evolved from manual testing to automated testing. They became integrated with the development team, writing tests and code as development occurred. We set up a dashboard for me and the executive team to review the state of the development at a glance.

The next big step was adding Infrastructure as a Service cloud servers, using the same deployment process we used internally. Because our systems administrators had become intimately familiar through the initial automation, the leap from physical to cloud servers was reasonably easy.

But, there was a snag. Over time, as new features were developed that required changes to the database schemas, tests failed. Developers had been manually propagating changes to the database schemas ahead of their commits and builds: a big no-no! The schemas hadn’t been integrated as part of the automation process. We took a deep dive into it during our Scrum sprint retrospective, adding user stories to our backlog to address the issue. The team collaborated to apply tools and automate the same methods we used in other parts of the development process.

We accomplished huge improvements overall. The collaboration among developers, QA, and systems administrators fostered greater shared knowledge and improved morale. With full end-to-end automation in place, deployment times went from hours to minutes, with few failures. The team’s adoption of agile methods brought understanding and appreciation for discipline, which allowed them to better their craft. As the team achieved agility, customers and management saw new features reliably delivered more quickly.

Lessons from 29 DevOps Experts on the Best Way to Make the Transition to Continuous Delivery