System Design: Interview Prep
System Design: Interview Prep
Interview Prep
Key metrics we’ll be considering while
designing our systems
• Availability - Uptime of a system
• Performance – Speed of a system
• Reliability – Consistency of data
• Scalability – Concurrently traffic handling ability
• Manageability – Maintenance and updates
• Cost – Amount of resources you need to spend
Example: Image Hosting Application
Important aspects of the system are:
•There is no limit to the number of images that will be stored, so storage scalability, in terms of image count needs to be considered.
•If a user uploads an image, the image should always be there (data reliability for images).
•Since image hosting doesn't have high profit margins, the system needs to be cost-effective
Basics of good system design:
• Services - SOA
• Data redundancy – to handle failures gracefully across data and
services
• Scaling our systems for fast access
Basics of good system design:
• Services – SOA
each service has its own distinct functional context, and interaction with
anything outside of that context takes place through an abstract interface,
typically the public-facing API of another service.
• Services - SOA
• Redundancy – to handle failures gracefully
• Scaling our systems for fast access
Introducing redundancy and SOA to our systems
How introducing redundancy affects our
systems :
• Availability
• Performance
• Reliability
• Scalability
• Manageability
• Cost
Basics of good system design:
• Services - SOA
• Redundancy – to handle failures gracefully
• Scaling of our systems for fast access – Vertical (More resources) and
horizontal scaling (Partitioning/replication)
Introducing redundancy, SOA and partitioning
How introducing partitioning affects our
systems :
• Availability
• Performance
• Reliability
• Scalability
• Manageability
• Cost
Web
applications
How to overcome problems in case of huge sets of data ?
Building blocks of scaling access to our
systems :
• Caches
• Proxies
• Indexes
• Load Balancers
• Queues
Caches
• locality of reference principle: recently requested data is likely to be
requested again
• hardware, operating systems, web browsers, web applications and
more.
• A cache is like short-term memory: it has a limited amount of space,
but is typically faster than the original data source and contains the
most recently accessed items.
How introducing cache helps us ?
Cache misses increases
Global Cache
Distributed cache
Proxies
• a proxy server is an intermediate piece of hardware/software that
receives requests from clients and relays them to the backend origin
servers.
• API gateways
Indexes
• An index makes the trade-offs of increased storage overhead and
slower writes (since you must both write the data and update the
index) for the benefit of faster reads.
• An index can be used like a table of contents that directs you to the
location where your data lives.
• Map or Index table
• There are two kinds of indices:
• Ordered indices: Indices are based on a sorted ordering of the values.
• Hash indices: Indices are based on the values being distributed uniformly
across a range of buckets. The buckets to which a value is assigned is
determined by function called a hash function.
Load Balancers
Request based or
round robin or
resource requirement
based or randomly?
Queues
Using queues to manage the requests
• Case studies
• Interview Questions
Next class • Definitive steps which can help you ace any
system design interview