Automation is repetition. It is a way to collectively achieve the same end result in a fast and efficient manner. If you have 1,000 servers and need to patch all of these servers as part of your annual security compliance strategy, for instance, you would establish a baseline for your patching and then execute the patching together at one time.
One great way to accomplish these tasks is by using Ansible as a configuration, orchestration, and deployment tool that integrates with a variety of applications and platforms. Another value of automation is its ability to minimize risk, through error correction for instance. The more a sequence is automated, the more consistency in design, delivery, or process is built-in.
But before I get into automation, let’s first discuss what DevOps really is.
DevOps: Setting the record straight
DevOps is not a product nor an action, but an ideology, practice, or mindset. DevOps—according to Gene Kim, co-author of The Phoenix Project, and The DevOps Handbook—is about "the three ways." These three ways are:
- The First Way: Systems Thinking
- The Second Way: Amplify Feedback Loops
- The Third Way: Culture of Continual Experimentation and Learning
DevOps encompasses stability, agility, availability, speed, continuous delivery, continuous integration, collaboration, resiliency, etc. DevOps brings together the developer or development team with operations, which typically means sysadmins or engineers in an attempt to break down the proverbial walls or barriers that have been preventing true progress, such as short software delivery times and performance.
The ultimate value we want to see from DevOps teams is shorter software delivery times, greater deployment frequency, things get fixed quickly such as a bug in the code, and consistent service availability.
In this article, DevOps specialists are system administrators that operate on a team in which dev and operations function together. DevOps specialists are the caretakers in my view of automation. This is not to say developers and development teams don't automate. The focus of this article is system administrators.
According to the 2019 State of DevOps report, automation in DevOps takes organizations from low performers (12%) to medium performers (44%), higher performers (23%), and elite performers (20%). Where DevOps is used, typically there is some form of automation, with tools like Ansible, Puppet, or Chef.
Optimization in infrastructure as code (IaC) or software development is only sustainable through automation. The bar here is high. Companies that used to deploy software in two- to four-week cycles are now deploying 60 times a day; it would be almost impossible to achieve these results manually.
"Automating DevOps reduces human inefficiencies which leads to shorter software release cycles and a higher return on investment." — Abner Malivert, Senior Consultant, Red Hat
Automation is not automagic
As I stated earlier, automation is optimizing DevOps and making organizations that were already high performers into elite performers. Automation does this by allowing DevOps teams to optimize for throughput and stability.
In a previous article I wrote (Automation is not Automagic), I discuss the strategy around automation as well as the skills that are needed by automation specialists to evolve and engineer automation on a high scale:
"Because the most successful companies must be (or become) software companies, and technology and infrastructure are evolving and changing so fast, it is no longer sufficient to have processes and automation that are cobbled together. We must have well-designed, sophisticated automation that empowers teams at scale. This comes with failing fast and continuous testing and application to weed out the waste and emerge as nimble practitioners of automation.
"The old way of doing things—writing scripts and sort of cobbling things together in an ad-hoc manner—does not scale. As many successful companies have proven, if you can iterate faster and ship sooner, you can capture the market faster. Companies that invest significantly and deliberately in automation will have the ability to move faster."
Automation takes DevOps to the next level
One way automation optimizes DevOps is in the ability for organizations to measure change lead time. For the primary applications or service you work on, what is your lead time for change? For example, how long does it take to go from code commit to successfully running code in production?
The Taguchi method is all about: "First, drive quality." You first want to have a fully repeatable process, and so step-by-step, day-by-day you're able to get better and better. This concept is considered the heart of the Taguchi method and the heart of DevOps.
So, automation is a repeatable that’s constant, eliminates risk, and increases rewards in most cases. It also reduces the potential for errors.
Technology is changing the way we live our lives at such a fast pace.
DevOps optimization: Build automation longevity into your DevOps strategy
As Danielle Pollard says: "Technology is changing the way we live our lives at such a fast pace. In order to keep up with the demand, companies are challenged to find innovative, disruptive, nimble ways to consistently deliver value through frequent delivery of quality software." Testing is a staple of software development that strengthens the quality and speed of software delivery. One area where automation optimizes DevOps or software development is in automated testing. In the realm of automated testing, frequent, fast, and quality software delivery is the intended outcome.
What is automated testing? Automated testing is the act of conducting specific tests via automation (e.g., a set of regression tests) as opposed to conducting them manually, comparing the actual outcome with the expected outcome. This result can be achieved by writing test scripts or using any automation testing tool.
In order for automation to remain relevant and optimized in your organization, your team or organization must have a strategy in place that continuously accesses the related risks, dependencies, constraints, and (of course) the successes. That need can mean different things for different teams and organizations, but creating a strategy that will guide your automation longevity is the ultimate plan.
As I stated in Automation is not Automagic, the organization has to start from the ground up and take a hard look at their automation wins and losses. Then, they have to look at the people they have in place and the people they wish to hire.
Companies have to think creatively, and that creativity can come from unexpected places. Technology evolves at the speed of light, and companies need a mindset that allows solutions to come from all directions, plus automation specialists that are comfortable with disruption, and even chaos.
Best automation practices have to be the norm when it comes to optimizing DevOps, but they must be groomed and refined with every endeavor to reach the state where you, as an organization or team, are not merely knocking on the optimization door but gaining entry. Think of the process like this:
$ sudo dnf install automation $ sudo dnf install DevOps $ sudo dnf upgrade optimization
Ultimately, how automation optimizes DevOps is a journey, not a sprint. DevOps teams and practitioners have to take heed that using automation to optimize DevOps requires restraint as well. There is risk and reward in automating, and without recognizing this and acting responsibly, organizations and DevOps teams will find themselves with more technical debt than optimization.
[Want more on DevOps? Download the open source guide to DevOps monitoring tools.]