You know what I did the other day? No, how could you. I’ll tell you.
I sat through a meeting where we discussed how we organise our code and our release process to deploy changes to a Kubernetes cluster.
I smiled. Why did I smile? What did this say to me? It told me that somewhere along the line, we stopped asking questions. Questions such as “If we’re having to approve changes for a scalable microservice architecture hasn’t something fundamental gone wrong with our architectural approach?”
We seem to have forgotten how to challenge the status quo. What is the point of this switch? What is the need for this lever? Why do we invest a lot of good money, time and effort in this architecture when we’re going to deploy like we did in 1963?
But we don’t need a Kubernetes cluster to get our deployment wrong. We don’t need anything fancy. We start with the code. If we don’t make our choices modular and our modules scriptable, then we can’t automate anything.
But not all automations are made equal. And between declarative infrastructure platforms like Terraform, interactive scripts of all ilks and kinds in all languages, competing configuration management standards and tools not to mention cloud specific ways of working, we often end up with a bag full of spanners. Code here there and everywhere, very difficult to comprehend let alone navigate.
Think, Don’t Code
How do you fix this? Well you don’t. You learn to live with it, you learn to make improvements where you can without breaking what you already have.
A “DevOps Engineer” is, of course, a misnomer. The whole intention is that there wouldn’t be any DevOps Engineers. Every developer would be able to “build it, run it”. But hey, here we are.
What do I do when I want to make something better. I sit and I observe. I look at the systems, both human and technical and wonder what happened in the past that made this particular system so broken.
Who changed it? When? How did they leave the organistion? When and who’s supporting it now and what is there preferred way of working?
Every commit is a clue.
Every log entry a trace of something that happened, uniquely. Once.
DevOps is game of whodunnit.