Layer 3 · Go deeper · 6 min
Go deeper
Size it, build it, then make the calls an interviewer will push you on.
Build-up · 5 steps
Two payments race on one wallet
Two devices pay ₹800 from wallet-42 at the same moment. The stream is at version 7 with ₹1,000.
Step 1 of 5
One stream at version 7
wallet-42 holds ₹1,000 after seven events. Every append must say which version it expects to follow.
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
“A team wants Kafka to be the wallet service’s event store. What do you say?”
Your move. Pick an approach:
Deep dive 2 of 4
Interviewer
“A merchant’s wallet stream has 50,200 events, so every payment spends about half a second replaying. What do you do?”
Your move. Pick an approach:
Deep dive 3 of 4
Interviewer
“A projection bug has corrupted orders_view, built from 500 million events. How do you rebuild it?”
Your move. Pick an approach:
Deep dive 4 of 4
Interviewer
“You’re designing events for a service that handles customers’ names and phone numbers. How will you honour erasure requests?”
Your move. Pick an approach:
Build-up · 5 steps
From a command to a fresh read
A customer places an order, then opens “My orders”. Follow the write, the projection and the read that must not look stale.
Step 1 of 5
The command appends
PlaceOrder goes to the write model, which checks the rules and appends OrderPlaced to the event store.