DevOps and automation tools have undoubtedly made life easier for IT teams. But cobbling together several tools that don’t play nicely together can slow teams down and reinforce “Dev” and “Ops” silos, rather than delivering the speed and efficiency that automation promises. Whether you’re deploying traditionally packaged apps or containers, building a seamlessly automated delivery pipeline enables your team to deliver at the rate that consumers have come to expect.
Our Practical Approach to Automating Builds & Containers is designed to help you do just that, with constructive, real-world advice for simplifying and automating software delivery. There’s also a bonus guide to using Docker in production for those using containers.
Keeping Up with the SaaSes
Remember when waterfall ruled the earth and release cycles were long? It was a simpler time. Sure, the tools might have been arcane, and there was always a good chance there would be a showstopper that would move your scheduled release back for months, but other things were easier. Expectations were lower among users. They accepted that bug fixes and new features came along infrequently and there was little risk that end users would go find their own solutions if they were dissatisfied. No longer.
Today, born-in-the-cloud software companies have raised consumer expectations considerably. Every company that wants to stay relevant must develop a strategy for delivering quality releases on time, every time. That is fundamentally what is driving the adoption of DevOps disciplines: customer expectation of quality software updates on a rapid cadence. The resulting culture, tools, and processes help development teams meet changing demands, delivering new apps and new features, all with higher quality than before.
It’s Not All Sunshine and Timely Releases
What about the dark side of DevOps? There are a few. Take a look at DevOps toolchains: like snowflakes, no two are the same. New tools spring up all the time, born out of a need to solve a problem that other tools may not solve. And before you know it, the development team is spending time working to integrate the components of the toolchain (or accept air gaps where manual steps are a part of the workflow) to make builds happen and get releases out the door.
There’s still a lot of manual work in DevOps, too. Aside from wrangling tools to work together, release teams spend time making manual hand-offs, coordinating status of dependencies and infrastructure over email, chat, or whatever venue they need to find out if a build is ready to go.
Add in the impact of silos that still exist and it’s no surprise that more than 25% of companies still need up to six months to deploy a change to a primary app into production, according to Puppet’s Pervasive Automation Report.
Gotta Get Automated
Doing DevOps right means getting away from the manual shuffling that commonly characterizes the software delivery process. All of the tool wrangling, manual handoffs, and individual tasks that you do to get a new build out the door must be eliminated – or rather, automated.
The goal is pervasive automation: Automating every bit of your software delivery process so that each commit becomes a build automatically. Your development team wants to focus on creating great software, getting new builds into the hands of eager customers quickly. Automation is the only way to get there at scale.
Getting to pervasive automation means that you need a common, standard delivery pipeline for both applications and infrastructure code. It’s important that the delivery pipeline creates seamless integration between your source code control systems and your deployment tools, whatever they may be.
So, are you going to have to scrap the toolchain you’ve been using, retrain your release team on a new set of tools, and compromise on the features your toolchain brings to your own unique processes? Probably not. The right pipeline automation tools will let you work with the tools you are already familiar with and use. The focus is not on replacing your tools but replacing the manual release tasks that take your team away from building software.
Visibility is key for automation. Teams need insight into every stage of the delivery lifecycle — from code commit to deployment. An automated software delivery pipeline must provide transparency, so it’s clear which builds have failed and which have succeeded, along with audit trails to help identify bottlenecks and troubleshoot.
Concerns abound when the conversation turns to automated systems acting without human oversight. You don’t want a system automatically deploying a faulty build on a Friday afternoon, so it’s understandable that the desire to maintain control can be a barrier to adopting automation.
Fortunately, automating software builds doesn’t have to mean relinquishing control. If anything, an automated software delivery pipeline has the potential to improve control over the entire software release process. A transparent, process-driven pipeline tool can provide greater enforcement of checks and balances with approvals, gates, and triggers at every stage of the delivery pipeline. Manual processes provide control, certainly, but often at the cost of speed and consistency; people don’t always follow processes and mistakes happen.
An automated software delivery pipeline can deliver the control you need with the consistency and transparency to ensure that each production release is a quality release. It’ll get there faster, with less manual intervention, freeing up your development team to spend more time on the next release instead of wrangling builds.
Check out our Practical Approach to Automating Builds & Containers for more guidance.