$ cat post/the-branch-was-deleted-/-we-named-it-temporary-once-/-i-left-a-comment.md
the branch was deleted / we named it temporary once / I left a comment
Title: Containers vs. VMs: A Battle in the Cloud Wars
June 29, 2015 - This day felt like a turning point in our IT ops world. The Supreme Court ruling on same-sex marriage was just making headlines, and the tech world had its own drama: containers versus virtual machines (VMs). It’s been an intense month working with Docker and Kubernetes, trying to figure out how they fit into our infrastructure puzzle.
We’ve been wrestling with whether we should switch from VMs to Docker. Our application stack is already fairly modular, but moving to a containerized world felt like a massive leap. The idea of running multiple containers on the same host appealed—less overhead and more flexibility. But could we handle all the complexity? What about security? These questions kept us awake at night.
Last week, Kubernetes was announced by Google. This tool had been in our radar for some time now, but its official release made it harder to ignore. The promise of self-healing clusters, automated deployment, and state management seemed too good to pass up. But we needed to weigh the benefits against the learning curve and potential risk.
My team started experimenting with Docker a few months ago. It was fascinating how quickly our developers could spin up new services in containers. We saw huge gains in development velocity and service isolation. However, as more developers embraced it, the ops team found ourselves battling with growing container sprawl. It wasn’t uncommon to see containers running with root privileges or being used for tasks they shouldn’t be. This led to a series of security issues we had to address.
We held a heated discussion about how to enforce best practices around Docker usage. Some argued that Kubernetes could handle the complexity, while others insisted on keeping things simpler with Puppet or Ansible. The tension in the room was palpable. I remember someone saying, “Why not just stick with VMs? They’re proven and we know them.” That argument had merit, but it wasn’t addressing the core problem of our monolithic application architecture.
The Google engineers hinted that they were open to seeing a future where Kubernetes could run on top of VMs as well. This made me wonder if there was a way to gradually transition without fully committing to Docker or Kubernetes right away. Maybe we could start small, containerize parts of our stack, and see how it goes.
Reflecting on the month, I realized that this wasn’t just about technology; it was about culture change too. We needed buy-in from everyone—developers, ops, management. The tech news about Swift being open-sourced added fuel to the discussion. It showed that sometimes the most impactful changes come when you’re not expecting them.
In the end, we decided to take a hybrid approach for now. We would continue using VMs but explore Docker and Kubernetes in smaller projects. This way, we could start gaining experience without overhauling everything at once. It’s not the perfect solution, but it seems like a pragmatic step forward.
The tech world moves fast, and June 2015 felt like a moment of transition. Containers weren’t just about simplifying our lives; they were challenging us to rethink how we build and operate software systems. Here’s hoping that as I write this in the future, looking back, it will be seen as one of those pivotal moments where tech evolved, even if only by increments.