System requirements
functional non-functional
define system behavior define qualities of a system
what a system is supposed to do how a system is supposed to be
example: example:
the system must allow applications to exchange messages scalable, highly available, fast
System requirements
The problem seems too big. I
should try to define specific Also, I need to figure out
Let me state the problem functions and reduce the scope. non-functional requirements and
ambiguously and see how use my knowledge of system
the candidate approaches it. design concepts and patterns to
address each requirement.
interviewer software
engineer
(candidate)
System requirements
scale writes Hmmm… Let me think… leader election
Here are some fundamental concepts
scale reads that help design scalable, highly coordination service
available, and fast systems.
hash-based partitioning strong consistency
bounded queue load shedding
append-only log rate limiting
embedded database shuffle sharding
B-tree database reverse proxy
LSM-tree database service discovery
push vs pull request routing
software
long polling engineer batching
leader-based replication compression
leaderless replication network protocols
System requirements
My goal is to collect data
I will help you define
points, not see you get
requirements.
stuck and suffer.
interviewer interviewer
I do interviews to hire, not
I may have a bad day :(
reject.
interviewer interviewer
System requirements
When writing a system
design document, we
also…
software
engineer
• Define functional requirements and scope.
• Define non-functional requirements.
• Order non-functional requirements according to their importance.
• Use this list as a tiebreaker when considering multiple design options and trade-offs.