My most favorite DevOps principle of all.
This DevOps principle is a common place of contention for many. Can you automate everything? Should you automate everything?. From a DevOps context, I say "Yes", and "Yes"!
If you want consistency in quality and the fastest flow possible, you can't rely on human capability. You need the assistance of a robot. A robot does not tire, get sick, feel indifference towards assigned tasks and can operate at scale all day every day.
What does it mean to "automate everything"? It means you have recognised a need to do things better, cheaper, faster, with more quality, security, accuracy and more importantly, to free up people from mundane tasks that are demotivating, laborious, costly and potentially high risk to your employees, business and customers.
Recent advancements in technology such as;
- Orchestration tools like Jenkins and Azure DevOps
- Application Performance Monitoring tools like AppDynamics and New Relic
- Machine Learning and AI platforms such as Watson and Azure AI
- Micro-service Architecture and Containerization
has made the ability to automate process easier and with a more reasonable learning curve.
Not only is the ability to create automated process simpler, the process themselves due to new architecture patterns are less complex and interdependent. Many organisations are going through this type of transformation and optimisation exercise which will effectively be the foundation for enabling automation to take place. We've all heard about the 50 step run sheet that is used when provisioning and deploying a solution into an environment. Followed by the communications that also needs to go back and forth between development and operations and other stakeholders. From initial inspection, attempting to automate this run sheet step by step would most certainly fail. That is why it is critical to analyse the process at hand and identify ways to optimise, break apart, or even replace completely before attempting to apply an automation silver bullet.
Think of automation as not only a software development process (continuous delivery, including continuous integration and continuous deployment) but also as a whole infrastructure landscape that allow infrastructure to be versioned and treated as code as well. To automate a process, it needs to be converted to basic code. All processes normally actioned through the console will have to be transformed into a series of API calls or script run commands. This is the best way traceability, versioning and quality checks can be applied to a once manual task.
So how do we start automating everything? Our team at Puffefish Solutions can help you start this exciting journey. Automation is the core of our values and empowering others to successfully automate is our greatest reward. We start with workshops and exercises that focus on your organisations pain-points and aspirations. We cover EQ and Technical development to ensure people have the right mindset for success. We look at examples of tooling and delivery processes in action. Most importantly, we automate something that will give us business value!
Solutions Consultant | Pufferfish Solutions