Skip to content
Mustafa Erbay
Technology · 5 min read · görüntülenme Türkçe oku

20 Lessons I Learned in Server Management

In my twenty-year journey in system administration, I learned much more than just technical knowledge. The most important lessons came from my mistakes, my.

100%

Server management, in my opinion, is more like people management than software development. After twenty years, I realized that my biggest mistakes weren’t triggered by technical shortcomings, but by my habit of saying ‘yes’ and the simple assumptions I overlooked. Every problem I encountered in this process turned into a lesson that moved me forward, sometimes at a high cost.

Instead of listing these 20 lessons one by one, I wanted to present them under main themes distilled from my experiences. Because the essence of it is not just technical knowledge, but also the mindset and problem-solving approach behind that knowledge. Let’s take a look at these lessons together.

The Danger of Assumptions and Overlooked Details

In the server world, saying “I think it works” is a polite way of saying “it will definitely break.” In the early years of my career, while doing network segmentation for a client project, I assumed that VLAN tagging would work as expected at every point. The result? A critical system became inaccessible for two days because the default VLAN on a port of an old switch in between was different. This simple oversight cost me dearly.

Once, I thought I had correctly optimized Redis’s memory usage in the backend of one of my side products. However, because I made the wrong OOM eviction policy choice, Redis would suddenly stop under a certain load. Seeing only “OOM-killed” in the journald logs led me to spend days examining cgroup limits and Redis configuration to find the source of the problem. Such small details can deeply affect a system’s stability.

The Human Factor and the Power of Processes

No matter how perfect technical architectures are, if people and business processes are involved, everything changes. While working on a production ERP, I realized that software architecture is often not a technical architecture, but an organizational flow. Delayed shipment reports were always incomplete; the reason wasn’t a SQL query or a performance problem, but operators on the field forgetting to update their screens at the right time. This showed me that software is not just code, but a whole with user experience and workflow.

In another lesson, I paid a heavy price for saying “yes.” When a project manager asked for a quick delivery for a “small feature,” I underestimated the potential side effects and testing time and said “yes.” As a result, that “small feature” led to a month-long regression testing cycle and a two-week rollback operation. Sometimes the right answer is “no,” or one needs to learn to say “only under these conditions.”

Security is a Process, Not a One-Time Project

System security is not like building a wall; it’s a living organism that requires constant vigilance. I saw how critical CVE tracking was on an internal banking platform. When a kernel vulnerability (such as CVE-2026-31431 related to algif_aead) emerged, we had to apply a kernel module blacklist within hours. This taught me that security updates are too vital to be put off as “something to do later.”

Even when writing fail2ban rules, I saw how creative attackers can be. Properly configuring JWT/OAuth2 patterns and rate limiting mechanisms, instead of simple regex’s, is vital to thwart SQL injection attempts or DDoS layers. Security is an area that requires continuous learning and staying current; it’s not something you can set up once and forget.

Operational Debt and the Importance of Visibility

Operational debt is as dangerous as technical debt and often progresses more insidiously. During a period when I neglected to monitor WAL bloat in PostgreSQL, I saw our disks fill up much faster than expected. Or, when I overlooked the reliability of systemd unit timers, I only realized during an audit that a critical backup job hadn’t been running for months. If you don’t monitor something, you’ll never know if it’s working.

Observability is not just about collecting metrics, logs, and traces; it’s also about making this data meaningful and generating actionable alarms. Once, while running my applications with Docker Compose on a bare-metal server, I encountered build OOM errors because I hadn’t correctly set container memory limits. Understanding journald’s rate limits and correctly using cgroup memory.high soft limits allowed me to detect such problems beforehand.

The Value of Simplicity and Robustness

One of the most important lessons I learned after twenty years is the power of simplicity. In discussions about monolith vs. microservice, my preference has always been “complexity as needed.” While developing an ERP for a manufacturing company, we considered patterns like event-sourcing and CQRS, but by calculating whether the existing team and infrastructure could handle it, we started with a more pragmatic, modular monolith. This provided us with both fast delivery and reduced our operational burden.

When designing systems, I always keep concepts like idempotency and transaction outbox in mind. Especially when working with eventual consistency in distributed systems, ensuring that an operation yields the same result even if it runs multiple times is critical. These simple yet powerful principles ensure that my systems are more robust and manageable in the long run.

Server management is a journey that requires continuous learning and adaptation. These are some of the most valuable lessons I learned in my twenty-year journey. What was the most valuable lesson you learned in your twenty-year journey? Do they overlap with mine, or did you draw completely different conclusions? I eagerly await your comments.

Paylaş:

Bu yazı faydalı oldu mu?

Yükleniyor...

How was this post?

Frequently Asked Questions

Common questions readers have about this article.

What is more important than technical knowledge in server management?
In my experience, what's more important than technical knowledge in server management are the habit of saying 'yes' and simple, overlooked assumptions. Such mistakes can cause bigger problems than technical shortcomings. For example, when performing network segmentation in a client project, I assumed that VLAN tagging would work as expected everywhere, but this simple oversight led to a critical system being inaccessible for two days.
How can we protect ourselves against the dangers of assumptions?
To protect against the dangers of assumptions, it's important to verify every step and, if possible, control it with automated tests. I learned to prevent major problems later on by meticulously checking the configuration of each device, especially at the network layer. I also learned that verifying and testing everything is a better approach than saying 'I think it works'.
What steps should be followed to optimize memory usage for systems like Redis?
To optimize memory usage for systems like Redis, it's important to set the correct memory usage and make the right OOM eviction policy choice. I once thought I had correctly optimized Redis's memory usage, but because I made the wrong OOM eviction policy choice, Redis would suddenly stop under a certain load. Therefore, it's important to set everything correctly and test it.
What should be done when errors occur in server management?
When errors occur in server management, it's important not to panic and to try to find a solution quickly. When errors occur, I first assess the situation and then follow the necessary steps to try to find a solution to the problem. I also try to learn from every mistake to take the necessary precautions to prevent similar errors from occurring in the future.
ME

Mustafa Erbay

Sistem Mimarisi · Network Uzmanı · Altyapı, Güvenlik ve Yazılım

2006'dan bu yana sistem mimarisi, network, sunucu altyapıları, büyük yapıların kurulumu, yazılım ve sistem güvenliği ekseninde çalışıyorum. Bu blogda sahada karşılığı olan teknik deneyimlerimi paylaşıyorum.

Kişisel Notlar

Bu notlar sadece sizde saklanır. Tarayıcınızda yerel olarak tutulur.

Hazır 0 karakter

Comments

Server-side AI Moderation

Comments are AI-moderated server-side and stored permanently.

?
0/2000

Server-side AI moderation

✉️ Free · No spam · Unsubscribe anytime

Get notified about new posts

New content and technical notes — straight to your inbox.

  • 📌
    Best of the week Single most-worth-reading post
  • 🔧
    Toolbox notes Real tools I used this week
  • 🧠
    Behind-the-scenes Notes that don't make it to blog

We don't spam. Unsubscribe anytime. · Tracked only by Umami (self-hosted, no Google).

Your Reading Stats

0

Posts Read

0m

Reading Time

0

Day Streak

-

Favorite Category

Related Posts