tolgacelik.net
Writing

Notes from distributed systems in production.

Essays and field reports from building and operating high-traffic, polyglot platforms — Kubernetes, AWS, incident response, iGaming scale.

Redis Cache Invalidation: Four Patterns From Production
backendproduction

Redis Cache Invalidation: Four Patterns From Production

Cache invalidation is famously "one of the two hard things in CS." True — but the hard part isn't the magic, it's choosing the right pattern for your shape of system. Four field-tested patterns from iGaming production.

3 min read
Zero-Downtime Database Migrations: The Expand-Contract Pattern
backendproduction

Zero-Downtime Database Migrations: The Expand-Contract Pattern

Schema changes are the most-feared deploys in most systems. With the right approach, zero downtime is achievable. The expand-contract pattern I've used for years and the step-by-step plan.

3 min read
Background Jobs: Idempotency, Retries, and DLQs
backenddistributed systems

Background Jobs: Idempotency, Retries, and DLQs

Async job queues are the silent backbone of production. Get them wrong and you ship duplicate operations, lost messages, and data inconsistency. Three patterns that have kept us safe in production.

3 min read
Scaling WebSockets: Connections, State, Broadcast
backenddistributed systems

Scaling WebSockets: Connections, State, Broadcast

Scaling an HTTP API to tens of thousands of users is relatively easy. Managing the same load over WebSocket connections is a different game. Four years of multiplayer production.

4 min read
Redis Pub/Sub or RabbitMQ? When to Pick Which
backenddistributed systems

Redis Pub/Sub or RabbitMQ? When to Pick Which

I've run both in the same platform for years. Why each got chosen, when I paid the cost of a wrong call, and the four questions I ask before picking.

3 min read
Polyglot Architecture: Java, .NET, and Python on One Platform
distributed systemsbackend

Polyglot Architecture: Java, .NET, and Python on One Platform

Our production platform has 20+ microservices — some Java/Spring, some .NET Core, some Python. Can multiple languages live next to each other cleanly? When is it necessary, when is it regret?

3 min read
MySQL + MongoDB Together: The Real Cost of Polyglot Persistence
backenddistributed systems

MySQL + MongoDB Together: The Real Cost of Polyglot Persistence

In our game platform, MySQL and MongoDB run side by side. The advantages of using both, the costs that sneak up on you, and four questions to ask before that decision.

3 min read