The reasoning, not the résumé.
Anyone can list a technology. These are the questions I get asked in design reviews and interviews, answered the way I would answer them there — including what each choice costs.
- Why a local cache in front of Redis, instead of Redis alone?Because the two layers answer different questions — one removes the network, the other removes the cold start.
- Why Kafka for cache invalidation rather than Redis pub/sub?Ordering per key, replay for instances that were down, and an audit trail of what invalidated when.
- Why group batch work by card hierarchy instead of by arbitrary chunks?Because grouping by hierarchy removes duplicated work; chunking arbitrarily only redistributes it.
- How do you stop a payment being processed twice?An idempotency key enforced by a uniqueness constraint at the point of record, not a check-then-act in application code.
- How do you query a billion-row transaction table without falling over?Bound every access by a key range, keep the access path matched to an existing index, and stop treating COUNT(*) as free.
- What actually makes a batch service horizontally scalable?Workers that own nothing. If a worker holds state or assigns its own work, adding a second one creates a coordination problem instead of capacity.