Engineering

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.

ArchitectureBatch ProcessingCachingConcurrencyCorrectnessDataKafkaOperabilityPaymentsPerformanceResilienceSQLScaling
  1. 01Why 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.CachingResilience
  2. 02Why 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.CachingKafkaOperability
  3. 03Why group batch work by card hierarchy instead of by arbitrary chunks?Because grouping by hierarchy removes duplicated work; chunking arbitrarily only redistributes it.PerformanceBatch Processing
  4. 04How 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.CorrectnessPaymentsConcurrency
  5. 05How 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.DataPerformanceSQL
  6. 06What 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.ArchitectureScaling