Fifteen years building and scaling distributed systems, across the industry's move from bare-metal servers and monoliths to cloud-native, Kubernetes and GitOps. I take on the work teams postpone: technical debt, CI/CD built from nothing, and keeping things up.
Caching / Data — Redis, NGINX, CDN, Node.js, PostgreSQL
Reference architecture. Client code is under NDA, so this page describes the design and the reasoning behind it rather than a specific deployment.
A caching hierarchy where each layer has a stated purpose and a stated staleness budget: CDN for static assets, edge cache for anonymous pages, application cache for computed fragments, query cache for expensive reads.
Invalidation is designed before the cache is added, not after it causes an incident. Keys carry a version, writes publish invalidation events, and anything that cannot be invalidated cleanly gets a short TTL instead — a cache nobody can reason about is a bug with better latency.