Layer 3 · Go deeper · 6 min
Go deeper
Size it, build it, then make the calls an interviewer will push you on.
Build-up · 6 steps
Make read-process-write exactly once
A job reads orders and writes payment instructions. Kafka’s trick is to commit the output and the input offset as one transaction.
Step 1 of 6
A job between two topics
The Processor reads an order and writes a payment instruction. If it crashes after the write but before committing its input offset, the restart writes the payment again. Idempotent producers can’t help.
4 interview moments
You’re the candidate
The interviewer pushes on the hard parts. Pick an approach and see how it holds up.
Deep dive 1 of 4
Interviewer
“Your payments producer uses acks=1 and resends on timeout. Some acked payments vanished after a broker crash; others appear twice. What do you set?”
Your move. Pick an approach:
Deep dive 2 of 4
Interviewer
“Your Kafka Streams job runs exactly_once_v2, writes to payments and calls the payment gateway per order. How do you avoid double charges?”
Your move. Pick an approach:
Deep dive 3 of 4
Interviewer
“The payment gateway is struggling. The SDK retries 3 times, your handler 3 times, and SQS allows 5 receives. What do you change?”
Your move. Pick an approach:
Deep dive 4 of 4
Interviewer
“A bug sent 120,000 address updates to an SQS dead-letter queue. The fix has shipped. How do you replay them?”
Your move. Pick an approach:
Build-up · 5 steps
Follow one dead letter on SQS
Order 881 hits a bug in the consumer. Watch it go from backed-off retries to the DLQ, an alarm, a fix and a capped redrive.
Step 1 of 5
Fail, back off, retry
The consumer fails on order 881 and hands it back with growing delays of 30, 60, 120 and 240 seconds. Five attempts span 7.5 minutes, room for a transient error to clear.