Distributed Systems
Kafka vs RabbitMQ: How I Think About the Trade-off
A practical comparison of Kafka and RabbitMQ through retention, routing, replay, consumer behavior, task queues, event streams, and operational cost.
Engineering Notes
Practical observations on backend architecture, distributed systems, reliability, databases, and production engineering.
Featured Note
Distributed Systems
A practical comparison of Kafka and RabbitMQ through retention, routing, replay, consumer behavior, task queues, event streams, and operational cost.
All Notes
Lessons, patterns, and constraints from building production Python systems.
Reliability
How idempotency keys, business operation identifiers, database constraints, and transactional boundaries make retries safer.
Backend Architecture
A workload-driven comparison of FastAPI and Django REST Framework across async needs, domain complexity, ecosystem maturity, and team constraints.
Backend Architecture
Scaling Python APIs requires understanding workers, event loops, connection pools, downstream services, caching, background jobs, and backpressure.
Databases
Redis can reduce repeated database work, but caching also introduces stale data, invalidation, stampede risk, and security trade-offs.
Distributed Systems
What happens when consumers fail, events are duplicated, providers time out, payloads are invalid, or partial processing creates ambiguous state.
Databases
A methodical approach to slow PostgreSQL queries using execution plans, workload-specific indexes, ORM query patterns, pagination, pooling, and measurement.
Reliability
Retries and DLQs are reliability tools, but without classification, backoff, idempotency, and operations they can amplify outages.
Security
How to think about identity, token validation, authorization boundaries, service-to-service trust, JWT risks, and gateway trade-offs.
Production Engineering
A senior engineering approach to incidents: establish impact, inspect changes, use observability, mitigate first, find root cause, and improve the system.