Lots of people will give you guff about “devops” and how it means that you no longer need people to run your business infrastructure because it is all a simple matter of programming.
I cannot emphasize enough how wrong this is.
What devops does is apply the lessons learned in software development to the processes of running computer infrastructure. As a direct result, you can improve your processes by minimizing human involvement in the execution of processes. What you cannot do is improve your processes without knowing what those processes are, how they are executed, and what might go wrong.
Ask any developer: can you solve a business problem without understanding it? No, you cannot. Programming is the expression of decision-making in a formal automation. You cannot make (good, or even reasonable) decisions without understanding the process.
The naive devops-uber-alles view concentrates on building an MVP, a minimum viable product, and then elaborating on it in customer-desired ways. The ops part is relegated solely to deployment, the process of getting the application running on one or more servers.
Here is what operations brings to the table:
- statistics collection
- systems monitoring
- alerting of humans based on the above
- load balancing
- strategic deployment decisions (e.g. multiple vendors, geographic distribution)
- backup and restore decisions and methods
- security policy
- security implementation
- security testing
In modern development, it is considered good to write tests to ensure that the code you write does the right thing. In modern devops, you need to implement runtime tests to assure yourself that the computers you are running on are still behaving as you desire.