What Database Race Conditions Taught Me About Distributed Locks
What 3 Database Race Conditions Taught Me About Distributed Locks When you start building backend systems with asynchronous workflows, everyone tell…
Tech news from the best sources
What 3 Database Race Conditions Taught Me About Distributed Locks When you start building backend systems with asynchronous workflows, everyone tell…
📝 Originally published (in Japanese) at forge.workstyle.tech . I'm building an AI avatar stream that runs unattended. No human broadcaster — the ava…
Zaris is a distributed key/value store built for .NET, with its own binary protocol and native .NET clients. With 2.0.0, every Zaris node can also e…
A few weeks ago I published a write-up on inverting the control flow of a settlement API: instead of the endpoint owning window semantics (batching,…
A rate limiter changes when it leaves memory Rate limiting can start with a Map and a counter. That is enough for a single process. The design chang…
There are already good Redis tools for NestJS. Most of them mainly help you connect NestJS to Redis and use the Redis client. That's useful, but as…
Introduction One of the important things to consider for this CI/CD tool is how to execute the different jobs. CI/CD jobs are long running and can t…
You are in a Staff Engineer system design interview. The interviewer draws a simple architecture on the whiteboard: an API, a Redis cache, and a Pos…
When I was building my backend API, I realized a big problem: anyone could spam my endpoints. If a user repeatedly reloads a page or hits an endpoin…
Shopify just did something that would make most engineers do a double-take: they replaced Redis with MySQL for their inventory reservation system, a…
Analogy Imagine you have built a backend API that works perfectly. You deploy it. Users start coming in. At first, everything feels fast. Then the t…
Every senior backend interview I've done in the last 18 months asked at least one Redis question and one Kafka question. Below are the 10 that came…
This is Part 2 of the Directus + Coolify series. If you're new here, start with "Secure Your VPS Before Hackers Do" and the first Directus + Coolify…
Imagine your application makes thousands of queries to the same database. All this traffic generates latency, CPU load, disk load, and increases cos…
Redis is a data structure server that lives in memory. It's fast because reads and writes never touch a disk during normal operation. It's versatile…
Engineering posts often end with: The new design is correct, scalable, and fast. Fast compared with what? When we changed Podium so tied players ran…
"We use Redis Cluster" can mean two very different things: Our dataset is distributed across Redis nodes. Every individual data structure is distrib…
A leaderboard looks like a one-command problem: ZADD weekly 100 alice ZADD weekly 100 bob ZREVRANGE weekly 0 -1 WITHSCORES While building Podium , a…
In my earlier post , I showed that storing a million small values as Redis keys is a waste of memory. It's because every key has its own overhead. T…
Celery + Redis: Background Tasks Made Simple tags: python, celery, redis, tutorial tags: python, celery, redis, tutorial Celery + Redis: Background…
The failure that pushed me into this design was not subtle. I had a blended embedding that kept returning candidate matches that looked reasonable a…
Hello everyone! After publishing my Machine Learning with ML.NET series, I decided to turn the recommendation model into a complete application. In…
Originally published on tamiz.pro . Building real-time systems that can withstand failures, scale under load, and maintain consistent state is a sig…
The Bug That Started It All It began as a small bug I found myself while testing: OTP verification kept failing whenever I refreshed the page, opene…
In Disaster Recovery and Backups , we made peace with the database disappearing entirely: accept it can happen, and make recovery boring and rehears…
There's an old joke that there are only two hard problems in computer science: cache invalidation and naming things. The joke endures because it's t…
Every cache pattern so far accepts that cache misses happen: a key expires, a request misses, and someone pays the cost of reloading from the databa…
Write-through keeps the cache and database consistent by writing to both synchronously, which makes writes as slow as the database. Write-behind tak…
Cache-aside puts the caching logic in your application. Read-through and write-through move it into the cache layer itself, so the application talks…
Cache-aside is the caching pattern you'll use most, and probably the one you already use without knowing its name. The application checks the cache…