Implementing Network-Level Rate Limiting with eBPF and Go: A Deep Dive into Kernel-Space Traffic Control

Implementing Network-Level Rate Limiting with eBPF and Go: A Deep Dive into Kernel-Space Traffic Control

Why Your User Space Rate Limiter Is Probably Crying If you’ve ever tried to implement rate limiting in user space, you know the feeling. Packets arrive at the network interface, traverse through several kernel layers, bounce around in syscall overhead, and by the time your beautifully crafted rate limiting logic gets a chance to inspect them, you’ve already lost the performance battle. It’s like trying to stop a tsunami with a garden hose while wearing roller skates....

January 12, 2026 · 14 min · 2972 words · Maxim Zhirnov
Внедрение rate limiting на уровне сети с использованием eBPF и Go

Внедрение rate limiting на уровне сети с использованием eBPF и Go

Почему ваш ограничитель скорости в пользовательском пространстве, вероятно, плачет Если вы когда-либо пытались реализовать ограничение скорости в пользовательском пространстве, то знаете это чувство. Пакеты поступают на сетевой интерфейс, проходят через несколько уровней ядра, обрабатываются системными вызовами, и к тому времени, когда ваша тщательно продуманная логика ограничения скорости получает возможность их проверить, вы уже проиграли битву за производительность. Это как пытаться остановить цунами садовым шлангом, катаясь на роликах. eBPF (расширенный Berkeley Packet Filter) меняет всё уравнение....

January 12, 2026 · 5 min · 986 words · Maxim Zhirnov
Building an A/B Testing System in Go: From Zero to Production-Ready Experiments

Building an A/B Testing System in Go: From Zero to Production-Ready Experiments

Building an A/B Testing System in Go: A Practical Guide to Smart Experimentation So you want to run A/B tests in Go. Good news: it’s not rocket science. Bad news: it’s also not as simple as flipping a switch. But here’s the thing—once you’ve got it working, you’ll have superpowers to validate your ideas with real data instead of gut feelings. And that’s when things get interesting. In this article, we’ll build a complete A/B testing system from scratch....

January 7, 2026 · 11 min · 2242 words · Maxim Zhirnov
Построение системы A/B тестирования в Go: от нуля до готовых к производству экспериментов

Построение системы A/B тестирования в Go: от нуля до готовых к производству экспериментов

Создание системы A/B-тестирования в Go: практическое руководство по разумному экспериментированию Итак, вы хотите запустить A/B-тесты в Go. Хорошая новость: это не ракетостроение. Плохая новость: это также не так просто, как перевернуть выключатель. Но вот в чём дело — как только вы настроите систему, у вас появятся сверхспособности проверять свои идеи реальными данными, а не интуицией. И вот тогда всё становится интересно. В этой статье мы построим полную систему A/B-тестирования с нуля....

January 7, 2026 · 4 min · 820 words · Maxim Zhirnov
Building a Distributed Locking System in Go with ZooKeeper: From Theory to Production

Building a Distributed Locking System in Go with ZooKeeper: From Theory to Production

The Lock Dilemma: When sync.Mutex Just Isn’t Enough You know that feeling when you realize your precious in-process mutex won’t cut it anymore? Yeah, we’ve all been there. Your single-threaded assumptions worked fine until your system decided to grow up and become distributed. Suddenly, you’ve got multiple services running on different machines, all trying to access the same resource, and your sync.Mutex is sitting there looking confused—because it only locks things within a single process....

January 5, 2026 · 11 min · 2181 words · Maxim Zhirnov