$ cat post/tab-complete-recalled-/-the-database-was-the-truth-/-we-were-on-call-then.md

tab complete recalled / the database was the truth / we were on call then


Title: Kubernetes Complexity Fatigue: A Developer’s Perspective


July 15, 2019 - Today is a day that feels like the culmination of months and months of work, but also a reminder of how complex our infrastructure has become. As I write this in my home office, I can’t help but think about all the late nights and early mornings spent troubleshooting Kubernetes clusters, setting up pipelines with ArgoCD and Flux, and dealing with the intricacies of eBPF.

The Good, the Bad, and the Ugly

Kubernetes has undoubtedly transformed how we deploy applications. It’s a powerful tool that allows us to manage containers across multiple hosts, providing a consistent environment for development and production. However, the complexity that comes with it is real—and sometimes, it feels like an unnecessary burden.

The Good: DevOps Automation

One of the things I love about Kubernetes is how it enables true DevOps practices. We have internal developer portals like Backstage to streamline our workflows. These portals allow developers to manage their applications, track deployments, and monitor performance—all from a single interface. It’s amazing how much time these tools save us.

The Bad: Complexity Fatigue

But the complexity doesn’t end there. Every time I have to set up a new cluster or debug an issue, it feels like I’m diving into a complex system with many moving parts. We’re using ArgoCD and Flux for GitOps, which helps in keeping our clusters up-to-date. But sometimes, these tools can be finicky, especially when dealing with edge cases.

The Ugly: eBPF Hype

eBPF is one of the most exciting areas right now, but it’s also a bit of a double-edged sword. On one hand, it provides powerful tracing and monitoring capabilities that can help us debug issues more effectively. But on the other hand, it’s not something we have to deal with every day, which means there’s always a learning curve.

A Day in the Life

Today was no exception. I spent most of the morning trying to figure out why one of our applications kept crashing when deployed via ArgoCD. After several hours of digging through logs and looking at pod events, I realized that it was due to an unexpected configuration change. Once I fixed it, everything worked smoothly again.

But then came the eBPF issue. One of our engineers reported that a specific application was experiencing performance issues. After some initial troubleshooting, we decided to use eBPF to gather more detailed information about what was happening at the kernel level. While eBPF gave us a lot of data, it also made it harder for us to pinpoint the exact cause of the issue.

The Industry’s Perspective

Reading through Hacker News today, I couldn’t help but feel like I’m part of a larger conversation around technology. The stories about security vulnerabilities and bans on hacking techniques underscore how critical our role as developers and engineers has become. It’s not just about building software; it’s also about ensuring that what we build is secure and reliable.

In the tech industry, there’s a growing sentiment among some that “boring technologies” are often the best ones. Tools like Kubernetes should be used to simplify operations, not complicate them. The recent push by Microsoft to invest in OpenAI might hint at how AI could help us manage these complexities better in the future.

Reflections

As I look back on this journey so far, it’s clear that while technology is advancing rapidly, the underlying challenges of managing and scaling infrastructure remain. We’re in a phase where SRE roles are proliferating, and platform engineering is becoming more formalized. But for now, my focus remains on making sure our applications run smoothly every day.

In the meantime, I’ll keep advocating for simpler solutions whenever possible. After all, as the saying goes, “Choose Boring Technology.” Sometimes, that’s the best advice we can give ourselves in a world filled with complex and often unnecessary choices.


This is just my take on things right now. The tech landscape continues to evolve rapidly, but I’m hopeful that we’ll find better ways to manage these complexities moving forward.