0% found this document useful (0 votes)
648 views30 pages

System Design: Interview Prep

The document discusses key considerations for system design including availability, performance, reliability, scalability, manageability and cost. It provides an example of designing an image hosting application and emphasizes storage scalability, low latency for downloads, data reliability for uploaded images, and cost-effectiveness. The document outlines basics of good system design including implementing a service-oriented architecture (SOA), adding data redundancy to handle failures gracefully, and scaling systems vertically and horizontally. It describes how introducing SOA, redundancy and partitioning can improve various metrics. Finally, it discusses techniques for scaling access such as caches, proxies, indexes, load balancers and queues.

Uploaded by

VarunHasija
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
648 views30 pages

System Design: Interview Prep

The document discusses key considerations for system design including availability, performance, reliability, scalability, manageability and cost. It provides an example of designing an image hosting application and emphasizes storage scalability, low latency for downloads, data reliability for uploaded images, and cost-effectiveness. The document outlines basics of good system design including implementing a service-oriented architecture (SOA), adding data redundancy to handle failures gracefully, and scaling systems vertically and horizontally. It describes how introducing SOA, redundancy and partitioning can improve various metrics. Finally, it discusses techniques for scaling access such as caches, proxies, indexes, load balancers and queues.

Uploaded by

VarunHasija
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 30

System Design

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.

•There needs to be low latency for image downloads/requests.

•If a user uploads an image, the image should always be there (data reliability for images).

•The system should be easy to maintain (manageability).

•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.

• Redundancy – to handle failures gracefully


• Scaling our systems for fast access
After implementing services
How introducing a SOA affects 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
Basics of good system design:

• 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.

• Typically, proxies are used to filter requests, log requests, or


sometimes transform requests

• 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

You might also like