Recent submissions

Comment · 1 year ago
Scaling matters, but why pay for abusive clients or bots? Adding a cache is easy; the hard part is invalidation, sync, and thundering herd. Use it if the product needs it, not as a band-aid.
Comment · 1 year ago
We had a critical service that often got overwhelmed, not by one client app but by different apps over time. One week it was app A, the next week app B, each with its own buggy code suddenly spamming the service.

The quick fix suggested was caching, since a lot of requests were for the same query. But after debating, we went with rate limiting instead. Our reasoning: caching would just hide the bad behavior and keep the broken clients alive, only for them to cause failures in other downstream systems later. By rate limiting, we stopped abusive patterns across all apps and forced bugs to surface. In fact, we discovered multiple issues in different apps this way.

Takeaway: caching is good, but it is not a replacement for fixing buggy code or misuse. Sometimes the better fix is to protect the service and let the bugs show up where they belong.

Comment · 1 year ago
Excellent read. It highlights key aspects like health checks, server restarts, warm up, and load shedding, all of which make load balancing an already hard problem even harder.
Comment · 1 year ago
Comment · 1 year ago
A strong tooling ecosystem needs money, which usually means corporate sponsorship.
Comment · 1 year ago
Comment · 1 year ago
Author here. Absolutely, HAProxy’s sticktables is a powerful way to implement advanced routing logic, and they’ve been around for years. This series focuses on explaining the broader concepts and tradeoffs rather than diving deep into any single implementation, and since it also covers other aspects of reverse proxies, the focus on load balancing here is mostly to present the challenges and high-level ideas.

Glad you found it a good effort, and I agree there’s room to go deeper in future posts.

Comment · 1 year ago
Author here. Thanks for sharing these thoughts. You’re right that DSR, ASN-based routing, SRV records, and other lower-layer approaches are important in certain setups.

This post is focused primarily on Layer 7 load balancing, connection and request routing based on application-level information, so it doesn’t go into Layer 3/4 techniques like DSR or network-level optimizations. Those are certainly worth covering in a broader series that spans the full stack.

Comment · 1 year ago
Comment · 1 year ago
Thanks for sharing this! I’m the author of the blog post.

Happy to answer any questions about the scenarios in the article or dive deeper into specifics like slow start tuning, consistent hashing trade-offs, or how different proxy architectures handle dynamic backends.

Always curious to hear how others have tackled these issues in production.

Comment · 1 year ago
HTTP has never been truly simple, but HTTP/1.1 is probably the simplest it gets. HTTP/2 and HTTP/3 are significantly more complex.

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton