In this post
The framework
- Clarify. Ask what the system must do, for whom and at what scale. State your assumptions.
- Define the interface. Sketch the main operations and the data they use.
- Draw the simple version. One box, one database. Make it work first.
- Find the bottleneck. Where does it break as load grows? Data size, writes, hot keys, latency?
- Evolve the design. Add caching, partitioning, queues or replication, each in answer to a named problem.
- Discuss trade-offs and failures. What does each choice cost, and what happens when a part fails?
What interviewers look for
- Questions before answers.
- Reasoning about trade-offs, not name-dropping technologies.
- Awareness of failure, cost and operations.
- Clear communication and willingness to change course.
Common mistakes
- Starting with a complex diagram.
- Adding components with no stated reason.
- Ignoring data consistency and failure.
- Not checking the design against the requirements at the end.
Practise
Design systems you already use, out loud, with a friend. Write down what you would change after the first user and after the thousandth. See architecture decisions are expensive to undo.
Sources and further reading
- IICTP. TPBOK, Architecture & Systems Design. iictp.org/standards/tpbok.
IICTP is a new independent credential and is not ISO/IEC 17024 accredited.