SYSTEM DESIGN LEARNING

Vishalsheth
23 min readSep 18, 2021

System Design Interview Prep Master Doc

Compiled by — Pooja Biswas

pooja biswas | LinkedIn

All system design youtube channels

20. https://www.youtube.com/c/OktaDev/videos

Important Books :

  • Amazon.com: System Design Interview — An Insider’s Guide eBook: Xu, Alex: Kindle Store
  • Amazon.com: Operating Systems: Three Easy Pieces eBook: Arpaci-Dusseau, Remzi, Arpaci-Dusseau, Andrea: Kindle Store
  • Web Scalability for Startup Engineers: Ejsmont, Artur: 9780071843652: Amazon.com: Books
  • Understanding Distributed Systems: What every developer should know about large distributed applications: Vitillo, Roberto: 9781838430207: Amazon.com: Books
  • Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems: Kleppmann, Martin: 9781449373320: Amazon.com: Books
  • Kafka: The Definitive Guide: Real-Time Data and Stream Processing at Scale: 9781491936160: Computer Science Books @ Amazon.com
  • Buy Distributed Algorithms — An Intuitive Approach 2e (The MIT Press) Book Online at Low Prices in India | Distributed Algorithms — An Intuitive Approach 2e (The MIT Press) Reviews & Ratings — Amazon.in
  • Elasticsearch: The Definitive Guide: A Distributed Real-Time Search and Analytics Engine eBook: Gormley, Clinton, Tong, Zachary: Amazon.in: Kindle Store
  • Buy Cassandra — The Definitive Guide, 3e: Distributed Data at Web Scale Book Online at Low Prices in India | Cassandra — The Definitive Guide, 3e: Distributed Data at Web Scale Reviews & Ratings — Amazon.in

Imp keywords

  • Write ahead logging
  • SSL passthrough / termination on load balancers
  • Clock vectors
  • Hinted handoff
  • Bloom filters
  • Gossip protocols
  • Merkle trees
  • Two phase commit
  • Two phase locking
  • Consistent hashing
  • Data replication
  • Total order broadcast
  • Isolation levels (read uncomitted, read comitted, repeatable read, serializable)
  • Quad trees (GeoHashin)
  • Inverse indexing — Google search/any search indexing
  • Gaming ranking — rank players based on score and faster.
  • Word search in trie — auto suggestions system design
  • Sort 5gb data in 1gb memory — merge sort
  • Paxos algo
  • Merkle Tree
  • Backpressure
  • Circuit breaker
  • Raft
  • Service discovery
  • Saga
  • Hyperloglog

Important algorithms

https://github.com/resumejob/system-design-algorithms

Cloud design patterns

https://docs.microsoft.com/en-us/azure/architecture/patterns/index-patterns

Cloud arch pattern

Ambassador

Create helper services that send network requests on behalf of a consumer service or application.

Design and Implementation,

Operational Excellence

Anti-Corruption Layer

Implement a façade or adapter layer between a modern application and a legacy system.

Design and Implementation,

Operational Excellence

Asynchronous Request-Reply

Decouple backend processing from a frontend host, where backend processing needs to be asynchronous, but the frontend still needs a clear response.

Messaging

Backends for Frontends

Create separate backend services to be consumed by specific frontend applications or interfaces.

Design and Implementation

Bulkhead

Isolate elements of an application into pools so that if one fails, the others will continue to function.

Reliability

Cache-Aside

Load data on demand into a cache from a data store

Data Management,

Performance Efficiency

Choreography

Let each service decide when and how a business operation is processed, instead of depending on a central orchestrator.

Messaging,

Performance Efficiency

Circuit Breaker

Handle faults that might take a variable amount of time to fix when connecting to a remote service or resource.

Reliability

Claim Check

Split a large message into a claim check and a payload to avoid overwhelming a message bus.

Messaging

Compensating Transaction

Undo the work performed by a series of steps, which together define an eventually consistent operation.

Reliability

Competing Consumers

Enable multiple concurrent consumers to process messages received on the same messaging channel.

Messaging

Compute Resource Consolidation

Consolidate multiple tasks or operations into a single computational unit

Design and Implementation

CQRS

Segregate operations that read data from operations that update data by using separate interfaces.

Data Management,

Design and Implementation,

Performance Efficiency

Deployment Stamps

Deploy multiple independent copies of application components, including data stores.

Reliability,

Performance Efficiency

Event Sourcing

Use an append-only store to record the full series of events that describe actions taken on data in a domain.

Data Management,

Performance Efficiency

External Configuration Store

Move configuration information out of the application deployment package to a centralized location.

Design and Implementation,

Operational Excellence

Federated Identity

Delegate authentication to an external identity provider.

Security

Gatekeeper

Protect applications and services by using a dedicated host instance that acts as a broker between clients and the application or service, validates and sanitizes requests, and passes requests and data between them.

Security

Gateway Aggregation

Use a gateway to aggregate multiple individual requests into a single request.

Design and Implementation,

Operational Excellence

Gateway Offloading

Offload shared or specialized service functionality to a gateway proxy.

Design and Implementation,

Operational Excellence

Gateway Routing

Route requests to multiple services using a single endpoint.

Design and Implementation,

Operational Excellence

Geodes

Deploy backend services into a set of geographical nodes, each of which can service any client request in any region.

Reliability,

Operational Excellence

Health Endpoint Monitoring

Implement functional checks in an application that external tools can access through exposed endpoints at regular intervals.

Reliability,

Operational Excellence

Index Table

Create indexes over the fields in data stores that are frequently referenced by queries.

Data Management,

Performance Efficiency

Leader Election

Coordinate the actions performed by a collection of collaborating task instances in a distributed application by electing one instance as the leader that assumes responsibility for managing the other instances.

Design and Implementation,

Reliability

Materialized View

Generate prepopulated views over the data in one or more data stores when the data isn’t ideally formatted for required query operations.

Data Management,

Operational Excellence

Pipes and Filters

Break down a task that performs complex processing into a series of separate elements that can be reused.

Design and Implementation,

Messaging

Priority Queue

Prioritize requests sent to services so that requests with a higher priority are received and processed more quickly than those with a lower priority.

Messaging,

Performance Efficiency

Publisher/Subscriber

Enable an application to announce events to multiple interested consumers asynchronously, without coupling the senders to the receivers.

Messaging

Queue-Based Load Leveling

Use a queue that acts as a buffer between a task and a service that it invokes in order to smooth intermittent heavy loads.

Reliability,

Messaging,

Resiliency,

Performance Efficiency

Retry

Enable an application to handle anticipated, temporary failures when it tries to connect to a service or network resource by transparently retrying an operation that’s previously failed.

Reliability

Scheduler Agent Supervisor

Coordinate a set of actions across a distributed set of services and other remote resources.

Messaging,

Reliability

Sequential Convoy

Process a set of related messages in a defined order, without blocking processing of other groups of messages.

Messaging

Sharding

Divide a data store into a set of horizontal partitions or shards.

Data Management,

Performance Efficiency

Sidecar

Deploy components of an application into a separate process or container to provide isolation and encapsulation.

Design and Implementation,

Operational Excellence

Static Content Hosting

Deploy static content to a cloud-based storage service that can deliver them directly to the client.

Design and Implementation,

Data Management,

Performance Efficiency

Strangler Fig

Incrementally migrate a legacy system by gradually replacing specific pieces of functionality with new applications and services.

Design and Implementation,

Operational Excellence

Throttling

Control the consumption of resources used by an instance of an application, an individual tenant, or an entire service.

Reliability,

Performance Efficiency

Valet Key

Use a token or key that provides clients with restricted direct access to a specific resource or service.

Data Management,

Security

Data Management patterns

  • 06/23/2017
  • +3

Data management is the key element of cloud applications, and influences most of the quality attributes. Data is typically hosted in different locations and across multiple servers for reasons such as performance, scalability or availability, and this can present a range of challenges. For example, data consistency must be maintained, and data will typically need to be synchronized across different locations.

Additionally data should be protected at rest, in transit, and via authorized access mechanisms to maintain security assurances of confidentiality, integrity, and availability. Refer to the Azure Security Benchmark Data Protection Control for more information.

Pattern

Summary

Cache-Aside

Load data on demand into a cache from a data store

CQRS

Segregate operations that read data from operations that update data by using separate interfaces.

Event Sourcing

Use an append-only store to record the full series of events that describe actions taken on data in a domain.

Index Table

Create indexes over the fields in data stores that are frequently referenced by queries.

Materialized View

Generate prepopulated views over the data in one or more data stores when the data isn’t ideally formatted for required query operations.

Sharding

Divide a data store into a set of horizontal partitions or shards.

Static Content Hosting

Deploy static content to a cloud-based storage service that can deliver them directly to the client.

Valet Key

Use a token or key that provides clients with restricted direct access to a specific resource or service.

DATA MANAGEMENT PATTERNS

Design and Implementation patterns

  • 06/23/2017
  • 2 minutes to read

Good design encompasses factors such as consistency and coherence in component design and deployment, maintainability to simplify administration and development, and reusability to allow components and subsystems to be used in other applications and in other scenarios. Decisions made during the design and implementation phase have a huge impact on the quality and the total cost of ownership of cloud hosted applications and services.

Pattern

Summary

Ambassador

Create helper services that send network requests on behalf of a consumer service or application.

Anti-Corruption Layer

Implement a façade or adapter layer between a modern application and a legacy system.

Backends for Frontends

Create separate backend services to be consumed by specific frontend applications or interfaces.

CQRS

Segregate operations that read data from operations that update data by using separate interfaces.

Compute Resource Consolidation

Consolidate multiple tasks or operations into a single computational unit

External Configuration Store

Move configuration information out of the application deployment package to a centralized location.

Gateway Aggregation

Use a gateway to aggregate multiple individual requests into a single request.

Gateway Offloading

Offload shared or specialized service functionality to a gateway proxy.

Gateway Routing

Route requests to multiple services using a single endpoint.

Leader Election

Coordinate the actions performed by a collection of collaborating task instances in a distributed application by electing one instance as the leader that assumes responsibility for managing the other instances.

Pipes and Filters

Break down a task that performs complex processing into a series of separate elements that can be reused.

Sidecar

Deploy components of an application into a separate process or container to provide isolation and encapsulation.

Static Content Hosting

Deploy static content to a cloud-based storage service that can deliver them directly to the client.

Strangler Fig

Incrementally migrate a legacy system by gradually replacing specific pieces of functionality with new applications and services.

DESIGN AND IMPLEMENTATION PATTERNS

Messaging patterns

+4

The distributed nature of cloud applications requires a messaging infrastructure that connects the components and services, ideally in a loosely coupled manner in order to maximize scalability. Asynchronous messaging is widely used, and provides many benefits, but also brings challenges such as the ordering of messages, poison message management, idempotency, and more.

Pattern

Summary

Asynchronous Request-Reply

Decouple backend processing from a frontend host, where backend processing needs to be asynchronous, but the frontend still needs a clear response.

Claim Check

Split a large message into a claim check and a payload to avoid overwhelming a message bus.

Choreography

Have each component of the system participate in the decision-making process about the workflow of a business transaction, instead of relying on a central point of control.

Competing Consumers

Enable multiple concurrent consumers to process messages received on the same messaging channel.

Pipes and Filters

Break down a task that performs complex processing into a series of separate elements that can be reused.

Priority Queue

Prioritize requests sent to services so that requests with a higher priority are received and processed more quickly than those with a lower priority.

Publisher-Subscriber

Enable an application to announce events to multiple interested consumers asynchronously, without coupling the senders to the receivers.

Queue-Based Load Leveling

Use a queue that acts as a buffer between a task and a service that it invokes in order to smooth intermittent heavy loads.

Scheduler Agent Supervisor

Coordinate a set of actions across a distributed set of services and other remote resources.

Sequential Convoy

Process a set of related messages in a defined order, without blocking processing of other groups of messages.

MESSAGING PATTERNS

Book https://learning.oreilly.com/library/view/cloud-architecture-patterns/9781449357979/

LEETCODE all system design problems

  • Web Crawler’]

https://leetcode.com/discuss/interview-question/system-design/124657/Facebook-or-System-Design-or-A-web-crawler-that-will-crawl-Wikipedia

https://leetcode.com/discuss/interview-question/system-design/124658/Design-URL-Shortening-service-like-TinyURL

  • Instagram

https://leetcode.com/discuss/interview-question/system-design/124802/Design-Instagram

https://leetcode.com/discuss/interview-question/system-design/586749/design-Instagram

https://leetcode.com/discuss/interview-question/system-design/719253/Design-Facebook-%3A-System-Design-Interview

  • Dropbox.
  • Twitter

https://leetcode.com/discuss/interview-question/system-design/124689/Design-twitter

https://leetcode.com/discuss/interview-question/system-design/144287/Design-Recommendation-System-for-Amazon-Videos

https://leetcode.com/discuss/interview-question/system-design/600861/System-Design-Youtube-add-click-counts

https://leetcode.com/discuss/interview-question/system-design/557250/Design-a-video-streaming-service-to-support-playback-video-from-different-devices

https://leetcode.com/discuss/interview-question/system-design/496042/Design-video-sharing-platform-like-Youtube

https://leetcode.com/discuss/interview-question/system-design/158698/Distributed-database%3A-Netflix

https://leetcode.com/discuss/interview-question/system-design/124565/Design-Netflix-recommendation-engine

https://leetcode.com/discuss/interview-question/system-design/150607/Design-youtube

  • Ticketmaster

https://leetcode.com/discuss/interview-question/system-design/124803/Design-BookMyShow

https://leetcode.com/discuss/interview-question/system-design/315763/System-Design-or-Seat-reservation-application-like-Ticket-Master-or-BookMyShow

https://leetcode.com/discuss/interview-question/system-design/220073/How-would-you-design-WhatsApp

https://leetcode.com/discuss/interview-question/system-design/124613/Amazon-or-System-Design-or-A-scalable-chat-application-on-phone-browsing

  • Typeahead suggesions.
  • Twitter search.
  • Newsfeed ranking

https://leetcode.com/discuss/interview-question/system-design/349627/How-do-you-design-a-meta-data-for-a-news-feed

https://leetcode.com/discuss/interview-question/system-design/153871/Design-a-News-Feed-system-(like-Facebook-Linkedin-etc.)

https://leetcode.com/discuss/interview-question/system-design/153941/Design-the-%22People-You-May-Know%22-feature-on-LinkedIn-or-Facebook.

  • Uber / Luxe (anti-uber)?
  • Freight / delivery orchestration? (edited)
  • Botnet/decentralized web crawler/torrent

https://leetcode.com/discuss/interview-question/system-design/594844/System-design-question-Help-needed

https://leetcode.com/discuss/interview-question/system-design/464997/Design-a-P2P-file-sharing-application-like-BitTorrent

  • Coupon redeeming system

https://leetcode.com/discuss/interview-question/system-design/353302/Design-a-couponvoucher-management-system-or-DellEMC

https://leetcode.com/discuss/interview-question/system-design/459593/Facebook-or-System-Design-or-E-commerce-Apply-discount-on-every-nth-order

  • Message queue kafka, service bus

https://leetcode.com/discuss/interview-question/system-design/124761/Deciding-which-queue-to-send-a-post-to

https://leetcode.com/discuss/interview-question/system-design/206134/Amazon-or-System-Design-or-Design-a-Distributed-Message-queue

https://leetcode.com/discuss/interview-question/system-design/734303/Microsoftor-Design-an-Enterprise-Service-Bus

https://leetcode.com/discuss/interview-question/system-design/124558/Uber-or-Rate-Limiter

https://leetcode.com/discuss/interview-question/system-design/308452/System-Design-or-Programming-contest-platform-like-LeetCode

  • Large log data collection and processing system

https://leetcode.com/discuss/interview-question/system-design/124603/Amazon-or-Phone-screen-or-How-to-handle-large-log-data
https://leetcode.com/discuss/interview-question/system-design/128037/How-would-you-parse-a-huge-log-file

https://leetcode.com/discuss/interview-question/system-design/189030/Design-a-system-which-can-report-frequently-occurring-exceptions-on-a-dashboard

https://leetcode.com/discuss/interview-question/system-design/196142/Copy-coredump-files-from-millions-of-system-to-single-Storage-server-like-S3

https://leetcode.com/discuss/interview-question/system-design/431023/Google-or-Onsite-or-Get-all-logs-between-times

https://leetcode.com/discuss/interview-question/system-design/440546/Facebook-or-System-Design-Onsite-or-Compute-Percentile-Metrics-Over-Time-Series

https://leetcode.com/discuss/interview-question/system-design/124603/Amazon-or-Phone-screen-or-How-to-handle-large-log-data

https://leetcode.com/discuss/interview-question/system-design/1133962/Service-which-will-download-data-from-multiple-sources-and-ingests-it-in-the-system

https://leetcode.com/discuss/interview-question/system-design/942087/System-Design%3A-Design-a-system-to-process-data-in-different-formats-from-different-sources

https://leetcode.com/discuss/interview-question/system-design/852238/Need-help-with-System-Design-problem-asked-in-a-real-interview

https://leetcode.com/discuss/interview-question/system-design/820877/Bloomberg-System-Design

https://leetcode.com/discuss/interview-question/system-design/778868/Facebook-oror-Onsite-oror-System-Design-Aggregation-click-events

https://leetcode.com/discuss/interview-question/system-design/725364/System-Design-or-IOT-sensor-data-aggregator

https://leetcode.com/discuss/interview-question/system-design/202946/Design-a-system-to-aggregate-metrics-from-large-cluster(800%2B)-of-web-servers

  • Realtime stock price monitoring system/ live score update cricbuzz, realtime gaming score

https://leetcode.com/discuss/interview-question/system-design/625918/Amazon-or-System-Design-or-Design-a-real-time-gaming-ranking-system

https://leetcode.com/discuss/interview-question/system-design/431712/Bloomberg-or-Design-a-system-to-give-prices-of-a-stock

https://leetcode.com/discuss/interview-question/system-design/820877/Bloomberg-System-Design

https://leetcode.com/discuss/interview-question/system-design/124794/Design-a-Multicurrency-trading-system

https://leetcode.com/discuss/interview-question/system-design/490034/FAANG-or-Onsite-or-Intern-or-System-Design-Stock

https://leetcode.com/discuss/interview-question/system-design/124598/Design-network-fail-over

https://leetcode.com/discuss/interview-question/system-design/228661/Design-a-Data-Experimentation-platform

https://leetcode.com/discuss/interview-question/system-design/575186/Design-a-Parking-Spot-System

https://leetcode.com/discuss/interview-question/system-design/598634/Microsoft-or-Onsite-or-System-Design-or-SDE-2

https://leetcode.com/discuss/interview-question/system-design/850712/System-Design-Amazon-2020-(SDE-2)

https://leetcode.com/discuss/interview-question/system-design/765686/System-Design-Interview-Question%3A-Parking-Lot-or-Low-Level-Design

https://leetcode.com/discuss/interview-question/system-design/125260/Parking-Lots-Design

https://leetcode.com/discuss/interview-question/system-design/124566/Design-AlexaSiriGoogle-Home-Architecture

https://leetcode.com/discuss/interview-question/system-design/848252/Amazon-System-Design

https://leetcode.com/discuss/interview-question/system-design/533061/How-to-implement-nearest-location-kind-of-functionality-in-a-google-map-type-application

https://leetcode.com/discuss/interview-question/system-design/154172/Design-google-map-database

https://leetcode.com/discuss/interview-question/system-design/124786/Google-Scheduling-Job-Involving-both-RAM-and-CPU

https://leetcode.com/discuss/interview-question/system-design/692996/Microsoft-System-Design-Please-help

https://leetcode.com/discuss/interview-question/system-design/553563/Googleor-Distributed-SystemorPerformance

https://leetcode.com/discuss/interview-question/system-design/344524/Amazon-or-Design-a-JobTask-Scheduler

https://leetcode.com/discuss/interview-question/system-design/124672/Implement-a-task-scheduler

  • Elevator system

https://leetcode.com/discuss/interview-question/system-design/149264/Design-an-Elevator-system

https://leetcode.com/discuss/interview-question/system-design/150610/Design-a-malware-detection-system

https://leetcode.com/discuss/interview-question/system-design/148187/System-Design-or-Google-Docs

https://leetcode.com/discuss/interview-question/system-design/208207/Design-a-Google-Sheet-System

https://leetcode.com/discuss/interview-question/system-design/349669/Google-SWE-L5-or-Onsite-or-Design-Google-Docs-Versioning-System

https://leetcode.com/discuss/interview-question/system-design/322448/Content-Management-System-Design

https://leetcode.com/discuss/interview-question/system-design/194402/Design-a-file-sharing-system

https://leetcode.com/discuss/interview-question/system-design/211415/Interview-Question-Ecommerce-System-design-(-Eg-%3A-Amazon-)%3A-Concurrency-issues-handling

https://leetcode.com/discuss/interview-question/system-design/589546/Amazon-or-System-Design-or-Amazon-Order-System

https://leetcode.com/discuss/interview-question/system-design/675539/System-Design-question-asked-in-interview

https://leetcode.com/discuss/interview-question/system-design/666792/Microsoft-or-System-design-or-Please-help

https://leetcode.com/discuss/interview-question/system-design/1124722/System-Design-or-Shopping-Cart-or-Payment-Gateway-or-Product-Catalog

https://leetcode.com/discuss/interview-question/system-design/886390/Design-Recommendation-API-or-Akamai-Interview

https://leetcode.com/discuss/interview-question/system-design/776927/Design-an-accountpayment-system

https://leetcode.com/discuss/interview-question/system-design/706038/System-Design-Payment-System-Wallet-system-Payment-gateway

https://leetcode.com/discuss/interview-question/system-design/747591/Amazon-or-Onsite-or-System-design-or-Please-help

  • Facebook live commenting

https://leetcode.com/discuss/interview-question/system-design/583184/FBInstagram-'Live-Comments'-System-design

https://leetcode.com/discuss/interview-question/system-design/124702/Design-a-service-to-calculate-the-top-k-listened-songs-in-past-24-hours

https://leetcode.com/discuss/interview-question/system-design/243604/Design-a-real-time-dashboard-showing-the-most-played-songs

https://leetcode.com/discuss/interview-question/system-design/287678/Design-a-monitoring-or-analytics-service-like-Datadog-or-SignalFx

https://leetcode.com/discuss/interview-question/system-design/423613/Amazon-or-Phone-Screen-or-Design-Restaurant-Reservation-System

https://leetcode.com/discuss/interview-question/system-design/388222/Snapchat-or-System-Design-or-Instagram-Story-Feature

https://leetcode.com/discuss/interview-question/system-design/824659/Intuit-or-Long-Poll-vs-Web-socket-vs-Server-send-Events

https://leetcode.com/discuss/interview-question/system-design/307558/Design-Stack-Overflow

https://leetcode.com/discuss/interview-question/system-design/467655/Amazon-Onsite-or-System-Design-Pickup-Delivery-System-For-Groceries

https://leetcode.com/discuss/interview-question/system-design/277606/Design-a-performance-counter

https://leetcode.com/discuss/interview-question/system-design/339849/System-Design-or-Slack

https://leetcode.com/discuss/interview-question/system-design/174380/Uber-design-question-Design-Wikipeida

https://leetcode.com/discuss/interview-question/system-design/396949/System-Design-Google-Photos

https://leetcode.com/discuss/interview-question/system-design/390503/Google-or-System-Design

https://leetcode.com/discuss/interview-question/system-design/318811/Google-or-System-design-or-Design-a-translation-service-like-Google-Translate

https://leetcode.com/discuss/interview-question/system-design/202958/Multi-Tenant-Saas-Architecture

Other interesting post about specific component design

https://leetcode.com/discuss/interview-question/system-design/663037/Amazon-SystemDesign-Flipkart-Suggestions-Design-Warehouse-Portal

https://leetcode.com/discuss/interview-question/system-design/532889/Design-a-counter-for-a-website-which-tells-how-many-visits-happened-to-that-website

https://leetcode.com/discuss/interview-question/system-design/124568/How-to-design-a-system-to-retrieve-address-information-longitude-and-latitude-information.

OOP design https://github.com/tssovi/grokking-the-object-oriented-design-interview

https://github.com/savitansh/SystemDesignInterview

https://leetcode.com/discuss/interview-question/system-design/943886/Facebook-Product-Design-Questions

https://github.com/checkcheckzz/system-design-interview

GitHub — donnemartin/system-design-primer: Learn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards.

Drawing tool
https://leetcode.com/discuss/interview-question/system-design/758105/Remote-system-design-diagram-drawing-tool

Other informstive posts

I hope it will be helpful if you have mentioned your overall experience.

If you are looking for interview perspective, You need to gain knowledge about distributed systems.

To start with, to simplify it,

For a Simple Application

Input → Processing → DataStore → Processing/Output

For Distributed Systems [I wrote considering for System Design interview]

Following contains quick overlook about the list that need to have for basic understanding.

  • Input/Output
    Communication[Rest, grpc, WebSocket, tcp/udp, webRTC], API Gateway, Proxy Server, Load Balancing — [Reverse Proxy]
    Message Queue — [Queue for sending/receiving information] Kafka/RabitMQ
  • Processing
    Computation — Micro-service [Python, Springboot/Java, Go…], MapReduce
    Service Discovery/Registry — [Finding and Redirecting the load, Saga Pattern] — Eg: Eureka
  • Datastore/Distributed Consensus
    Cache — [Simple Cache to reduce database hits] — Eg: Redis
    SQL — [SQL database for Relational Data — Transactions based like payments, Horizontal Partition/Vertical Partition, Shading ] Eg: MySQL
    NOSQL — [NOSQL for querying documents like product, product details, CAP] Eg: MongoDB/Apache Cassandra
    Concurrency — 2 Phase Commit, 3 Phase Commit, Saga Pattern[Choreography saga, Orchestrator Saga], Split Brain problem.
    FileSystem — Hadoop File System
  • Security
    AAA — Authentication, Authorisation, Auditing

Misc — Logging/Notification

Once you have overall picture in your mind, you can start with YouTube videos like Gaurav Sen or Tech Dummies.

Product Design

The product design interview at Facebook will involve designing a product or API to support an end-user experience. Here’s a list of concepts that Facebook recommends you review before your interview:

-Scalability

-Design patterns

-Data ownership

-Protocols

-Data formats

-Client-server design

-Designing for long term vs. complexity

-Accommodating possible product changes

Some example questions involve designing a product API or an email server.

System Design

The system design interview at Facebook will ask you to weigh design considerations for complex problems. Here’s a list of concepts that Facebook recommends you review before your interview:

-Concurrency (threads, deadlock, starvation, consistency, coherence)

-Caching

-Database partitioning, replication, sharding, CAP Theorem

-Networking (IPC, TCP/IP)

Real-world performance (relative performance RAM, disk, your network, SSD)

-Availability and reliability (types of failures, failure units, how failures may manifest, mitigations, etc.)

-Data storage and data aggregation

-QPS capacity/machine estimation (back of the envelope estimates), byte size estimation

Some example questions involve architecting a video distribution system or designing a mobile image search client.

--

--