$ cat post/on-a-cold-december-day-in-2013:-the-dawn-of-containerization.md

On a Cold December Day in 2013: The Dawn of Containerization


December 9, 2013. A frigid day with biting winds, and inside the office, the chill was just as icy. I sat at my desk, staring at my screen, contemplating the state of our infrastructure. We were still in the thick of deploying services monolithically, and we were starting to see the cracks from performance bottlenecks and dependency issues. The buzz around Docker had been growing for a while now, but it was just beginning to seep into our collective consciousness.

Our team had been working on a new application that required us to serve static content, process web requests, and run database migrations all in one go. It was a jumbled mess of interdependencies that made debugging a nightmare. I knew we needed something better, but the transition wasn’t going to be easy. The thought of splitting this behemoth into microservices had crossed my mind, but I couldn’t shake the feeling that it would just add more complexity.

That day, as I was researching Docker containers, an article caught my eye on Hacker News: “Amazon Prime Air.” It seemed like a futuristic idea, but as I read further, I realized that technology is advancing so quickly that what once felt like science fiction could soon be our reality. The juxtaposition of this cutting-edge concept against the mundane task at hand made me realize how much ground we had to cover.

Around the same time, I stumbled upon an old blog post explaining shell scripting in detail. It was fascinating to see just how powerful and flexible shell commands could be when used correctly. The elegance with which a few lines of code could accomplish tasks that otherwise required complex setups intrigued me. Maybe this wasn’t just about splitting our monolith; maybe we needed to rethink the entire way we handled application deployment and scaling.

As I was pondering these ideas, a colleague popped by my desk. “Hey Brandon, have you heard about CoreOS? They’ve got something called etcd that’s supposed to be pretty slick.” He went on to explain how it could help with distributed key-value stores and service discovery—a concept we had been struggling with in our current setup.

The more I read about Docker and these new tools like CoreOS, the more I felt a sense of excitement mixed with anxiety. Excitement because here was this potential solution staring us in the face, but anxiety because it meant significant changes for both our team and our architecture.

I started to experiment by setting up a few containers locally on my machine. It was thrilling to see how easily applications could now be packaged and deployed across different environments. The consistency between development and production became so much better, and I found myself quickly becoming a convert.

However, not everyone on the team shared this enthusiasm. There were arguments about whether we should even consider moving away from our tried-and-true methods. Some argued that Docker was still too experimental and could potentially lead to more problems than it solved. Others worried about the added complexity of managing containers versus just running services directly on servers.

Despite these concerns, I pushed forward with a proof-of-concept project. We set up a small microservice using Docker and deployed it in our staging environment. The results were immediate: easier debugging, quicker deployment cycles, and less downtime during upgrades. It was clear that we needed to start thinking about adopting containerization as part of our future strategy.

By the end of the day, I had a new appreciation for the power of containers and the tools they could enable. As I sat there, feeling the cold wind outside, I realized that while change can be daunting, it’s often necessary for growth. The journey ahead might not always be smooth, but with Docker and technologies like CoreOS, we were taking steps towards a more flexible and scalable infrastructure.


This is how things were shaping up back then, and looking back, those early days of containerization felt both exciting and challenging. I hope this resonates with anyone reading who has faced similar decisions in their careers. Change can be scary, but sometimes it’s the only way forward.