DevOps, automation, and continuous deployment are hot topics in software development right now. Most companies that write and release software are interested in implementing some form of automation.
At base2services, we talk with many of these companies who are at various stages of considering and implementing automation. Frequently, we hear that a company has ‘done’ automation, only to discover that they could be achieving much more.
Automation, above all, is a process. It’s not a ‘one-and-done’ solution. It requires constant maintenance, upgrades, and changes to meet new demands. Organisations should be thinking about automation often and optimising their pipelines to match their circumstances. If your organisation is on this journey, there are some important questions you should ask to determine what level and types of automation make sense for your business.
What is Automation?
In the context of DevOps, automation refers to using algorithms to replace the human effort that goes into testing and deploying new code. A quick glance at the dictionary definitions for ‘automation’ and ‘automatic’ gives us helpful clues, and tells us an automatic process has three characteristics:
- Independent. It should be able to operate without human control or oversight.
- Not conscious. You shouldn’t have to think about the process or remember to activate it.
- Certain. It will always happen, every time, and the results of the process are predictable.
So when we talk about automating testing or deployment, we mean standardising the process, allowing scripts to execute the process without human intervention, and requiring all new code go through the automated system. As a result, we can be sure all code that gets deployed meets QA and security standards without humans needing to check every line of code themselves. A great pipeline creates a development environment that is consistent with production, so there are no errors in the live implementation.
Ask yourself: What does automation mean for my business?
You may be thinking: "There’s no such thing as truly independent automation." And you’d be right.
After all, a person created the pipeline and the algorithms behind the automation. A person committed that code, which means it’s possible there are errors or inconsistencies in the implementation of automation itself. This is one of the challenges of automation. Another challenge is, that automation creates a level of abstraction and a new codebase to maintain. Which means, some of the time and resources saved testing and deploying code, now need to be used to maintain that automation. As such, planning ahead for automation and being prepared to maintain and upgrade those services is a transition that many companies don’t consider fully.
It’s tempting to think of automation as a one-size-fits-all solution. However, the reality is that automation is a collection of tools that streamline and secure your pipeline to production. Not every company will need the same automation pipeline. For example, some companies need to control their release timing as a business decision, so they don’t want to automate deployment. For others, automated deployment gets new features and bug fixes out to customers in the most efficient way possible. The components of your automation pipeline are highly dependent on your company’s needs and preferences, and they’ll take time to fully solidify.
Ask yourself: Why do you want automation?
Before you dive straight into the technical details, it’s important to consider what your business goals are.
Your potential automation goals could include:
- Lowering your costs
- Freeing up your developer time
- Mitigating risk
- Increasing customer confidence; and
- Ensuring faster release times than your competitors
Automation is not an end in itself; it’s a means to achieve your goals, so defining your ‘why’ is an important step that impacts the way you implement automation long term.
In base2Services’ practice, when we help companies implement automation they invariably cite reduced problems and faster delivery of new features as the key benefits of automation. We recognize, however, that automation doesn’t happen in a vacuum. There are real budgetary and time constraints that businesses face when implementing automation.
The key is to begin somewhere. Automate to the extent possible, then continue to iterate and find opportunities for continued automation over time. If you don’t continue to update your processes, you don’t really have automation. You merely have a point-in-time build of something that augments or replaces human labor. If that component breaks or ages poorly, you’re back to square one, doing everything by hand again. That’s why automation must be a culture and a process at your company, not just a temporary fix.
Automation can (and does!) break
A common scenario we see is the company that thinks they’ve implemented automation but have set it up to rely on only one person to make sure it works. Often, this person is the company’s lone DevOps engineer, who is responsible for working out the problems between development, testing and production environments. When this person takes a vacation or leaves the company, automation comes to a halt.
The same is true for automation code that a consultant built for you that nobody at your company understands. Or, unmaintained automation systems that aren’t continuously enhanced and updated. These systems are no longer independent, and you’ll worry about them all the time, defeating the purpose of automation.
If you don’t have the resources to create an entire DevOps department (most small- to mid-sized companies don’t), then the best solution to avoiding outdated code and relying on a single person, is to engage a company that provides DevOps as a Managed Service. It gives you peace of mind knowing that a team of experts is responsible for creating and maintaining your deployment pipeline.
Automation Isn’t Static
Simply calling your deployment pipeline automatic doesn’t make it so. It’s critical that you ask hard questions about what you want from automation and how well your current systems are serving you. Ultimately, automation should be highly tailored to the needs of your company and it should grow and change along with your needs. Only then will you see the true rewards of efficiency, cost-effectiveness, fast deployments, and the peace of mind that comes from a well-implemented automated pipeline.
Contact us if you would like to discuss what you want from automation and how to meet your company's needs.