Layer 3 · Go deeper · 10 min
Go deeper
Size it, build it, then make the calls an interviewer will push you on.
Back of the envelope
Size it up
Tap through each step of the arithmetic.
How often does a server die in a 10,000-server fleet?
How big is the 10:00 tatkal rush?
How many API servers carry the rush, even after losing a zone?
Build-up · 7 steps
One booking rush, ten decisions
Apply the principles one at a time to the 10:00 tatkal rush. Each step adds a decision and the number behind it.
Step 1 of 7
Numbers first
Assume 1.5 million people in 10 minutes. That’s 30,000 searches and 7,500 booking attempts a second in the first minute, and 25 people per berth, a scarcity problem first.
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
“You have 10,000 users. A teammate wants five microservices and a global database, so you never rebuild. What do you design for?”
Your move. Pick an approach:
Deep dive 2 of 4
Interviewer
“Search needs fuzzy matching and ranking, core to the product. Teammates want a new database for each access pattern. What do you approve?”
Your move. Pick an approach:
Deep dive 3 of 4
Interviewer
“Many design decisions remain before launch. Which ones deserve a slow, careful, written decision?”
Your move. Pick an approach:
Deep dive 4 of 4
Interviewer
“Your service needs a queue for about 50 messages a second. Run your own streaming cluster, or use a managed queue?”
Your move. Pick an approach:
Build-up · 5 steps
Rename a column without a one-way door
Turn a breaking schema change into five small releases. Old and new columns overlap, so every step but the last can roll back.
Step 1 of 5
Expand
Add the new column, nullable and unused. Nothing reads it yet, so the running app doesn’t notice, and you can still back out.