Design¶
Architecture and decisions behind the ecosystem.
- 2026-09-07 — Circuit breakers should be per origin, not per client
- 2026-09-07 — Exactly-once is a lie; exactly-once effects are not
- 2026-09-07 — Graceful shutdown in Kubernetes is a protocol, not a signal handler
- 2026-09-07 — gRPC channels should not be pooled by address alone
- 2026-09-07 — Idempotency across a chain of microservices
- 2026-09-07 — Idempotency keys: the part everyone gets wrong
- 2026-09-07 — Partition retention is not DROP TABLE
- 2026-09-07 — Redis health checks: PING is not the whole story
- 2026-09-07 — Reliability is not retry=3
- 2026-09-07 — Retries can make an outage worse: designing a retry budget
- 2026-09-07 — Safe gRPC retries: which status codes you should actually retry
- 2026-09-07 — Should your application create Kafka topics on startup?
- 2026-09-07 — Stop passing AsyncSession everywhere
- 2026-09-07 — Transactional inbox: the other half of the outbox pattern
- 2026-09-07 — Transport-independent errors: one domain error, HTTP and gRPC responses
- 2026-09-07 — UUIDv7 as a PostgreSQL partition key
- 2026-09-07 — Warmup, readiness and liveness are three different things
- 2026-09-07 — What happens when Kafka is down for an hour?
- 2026-09-07 — When should Redis fail open?
- 2026-09-07 — Why application lifecycle should not belong to FastAPI
- 2026-09-07 — Why gRPC interceptors break on streaming RPCs
- 2026-09-07 — Why I stopped wrapping HTTP clients
- 2026-09-07 — Your models and your schema have drifted. Would CI notice?
- 2026-09-07 — Zero-dependency cores: why optional dependencies matter in infrastructure libraries
- 2026-09-06 — Timeouts are not deadlines: how latency budgets break across microservices
- 2026-05-15 — The Transactional Outbox pattern in Python: omni-box