DevOps Isn't Perfect

I saw a post recently from Grant Fritchey, Help Me, Help You, Deliver DevOps. In it, Grant shows that DevOps isn't making developers do everything, it isn't just giving developers more responsibility, and it isn't developers handling some of the operational staff responsibilities. It's about getting development and operations to work together. Hence, DevOps, not DEVops, or Dev ops.

In the post, Grant also links to some fundamental failures from companies that supposedly have adopted DevOps processes. Companies like Gitlab and Amazon. There are plenty more examples, which certainly make some people question whether DevOps is better than other methods of building and deploying software. How are the VSTS issues different from the Knight Capital debacle?

In some sense, they aren't. In many cases, we've had a software issue that affected customers. People were upset, services weren't delivered, and it's entirely possible that revenue was lost. However, one of the things that I think differentiates DevOps is that developers and operational staff can troubleshoot and determine a root cause much quicker. Since the entire commit, build, test, release pipeline is instrumented and documented, your staff can quickly determine what new items might have caused an issue. If it's not a new item, they can also quickly determine if that's the case.

However, once you've placed your system in production, DevOps doesn't ensure that your HA (High Availability) or DR (Disaster Recovery) preparations are adequate. Those are still the responsibility of your Ops staff, but by using DevOps, and storing configuration as code and provisioning your systems in all environments the same, hopefully you've taken advantage of this to actually ensure you have tested some HA or DR features in an environment outside of production.

However, DevOps isn't prescriptive advice. DevOps isn't a particular process or a tool that you use or install. DevOps is about learning and improving over time. For different companies, this means you'll be at a different stage in your DevOps maturity than other companies. Some have complete deployment processes, but limited instrumentation and monitoring in production. Some have tons of data and deploy code perfectly, but no HA. Some have great HA, but poor deployment processes.

DevOps is about constant improvement and advancement to make your software development (Dev) and deployment (Dev and Ops) and monitoring/management (Ops) better over time. This might not prevent human error, or even code bugs, but DevOps should mean you make fewer mistakes, less often, and learn from them to avoid repeating those issues.