$ cat post/the-year-of-containers:-embracing-docker-in-a-world-of-hackers-and-explosions.md
The Year of Containers: Embracing Docker in a World of Hackers and Explosions
April 22nd, 2013. I remember it like yesterday—springtime, fresh after the long winter of software development. The air was charged with the excitement of change, with Docker just about to take off and reshape how we build and deploy applications.
Back then, my team at [Company X] was still dealing with legacy monoliths. Every time I thought we were finally shipping a feature, someone would come up with a requirement that meant “redeploying” the whole application server. Joy. It was like trying to fix a leaky roof without ever leaving your bed.
Then Docker came along and it felt like a breath of fresh air. Containers seemed too good to be true: lightweight, portable, and easy to manage. The promise of microservices was finally within reach. But as with any shiny new tool, there were growing pains.
One morning, I woke up to the news that Gitmo was in trouble. A hacker had managed to get into their systems and start a debate on whether it’s humane to keep people in isolation for years on end. Meanwhile, back at work, I found myself arguing with my team about how many containers we should run per host. My gut said “as many as possible,” but the ops guys wanted us to be conservative.
Around that time, Path sent a text message containing all 16 million of their users’ contact lists to every number in their database at 6 AM. Oops. This was my first glimpse into how fragile modern systems can be when you don’t think through edge cases.
The world outside our servers seemed wild as well. Boston was just about to host the marathon, and the city had no idea what was coming two days later. Explosions and chaos erupted right in the middle of the race. And just a few weeks after that, Roger Ebert passed away. It made me reflect on how fleeting life is, even for someone as influential as him.
In our development world, BitTorrent’s SecureDropbox alternative was making waves, promising a better way to share files without trusting centralized services. Linode, the hosting provider we used, got hacked and exposed sensitive information of thousands of customers. Security breaches were becoming all too common.
One day, I sat down with my team to discuss our deployment strategy. We had been using Puppet for configuration management, but now Docker was making everyone’s heads spin. The debate was whether to standardize on Docker or stick with what we knew. The answer: both, of course. We would continue managing state and infrastructure with Puppet while embracing the flexibility that Docker offered.
As I reflected on the year ahead, it struck me how much change lay just over the horizon. The 12-factor app approach was gaining traction, promoting a more structured way to build applications. Meanwhile, Kubernetes, which wouldn’t be officially announced until the next year, hinted at a future where containers and orchestration would go hand in hand.
In those early days of Docker, we were all just trying to figure out how to make this technology work for us. It was raw, unpolished, but exciting. The combination of powerful tools like Docker with the chaos of a rapidly changing world made 2013 a year I’ll never forget.
Looking back, it’s clear that Docker laid the groundwork for much of what we take for granted today in modern development practices. As we navigate through the next decade, I’m excited to see where this journey takes us.