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.