System design is the process of creating the architecture, modules, components, interfaces, and data for a system. System design is the core concept behind the design of any distributed systems. These concepts are now repeatedly being asked in several interviews. This checklist covers all the important concepts with which you can ace your interviews!
- Software development lifecycles
Software Development Lifecycles (SDLC) refer to methodologies or frameworks that guide the process of designing, developing, testing, deploying, and maintaining software systems. - Idea behind load balancer
Load balancing is the process of distributing a set of tasks over a set of resources. Different types of load balancing algorithms are used to distribute incoming network traffic across multiple servers, ensuring optimal resource utilization and improved performance. Explore more topics: Memento, Command and Iterator Design Pattern. Leaderless Replication. - Different types of databases
In the world of system design, databases play a crucial role in storing and managing data efficiently. Understanding the different types of databases is essential for designing scalable and robust systems. - Key-value store
A Key-Value Store is a type of NoSQL database that stores data as a collection of key-value pairs. Each piece of data is associated with a unique key, which serves as an identifier for retrieving or updating the data. - Distributed operating system
A distributed operating system, is an advanced software architecture that extends the capabilities of traditional operating systems to manage and coordinate multiple interconnected computers or nodes within a network. - Distributed file system
A Distributed File System is a file storage technology that spans multiple physical or virtual servers, allowing them to work together as a single, unified file system.
- Types of load balancing algorithms
Load balancing algorithms are crucial for distributing incoming network traffic across multiple servers, thats why
rate limiting systems uses different algos. - Idea of vertical and horizontal scaling
These types of scaling involves increasing the resources of a single server or node, such as CPU, memory, or storage capacity, to handle greater workloads. It is typically limited by the hardware's capacity and can result in higher costs. - Idea of layer 4 and layer 7 load balancing
Layer 4 and Layer 7: Layer 4 load balancing focuses on distributing traffic based on network-level attributes, while Layer 7 load balancing takes application-specific factors into account for more intelligent routing decisions. - Backpressure and exponential back-off to handle overload systems
Backpressure and exponential back-off are strategies used to manage and mitigate the effects of system overloads, ensuring efficient resource utilization and preventing system collapse.
- Choose the right type of NoSQL database
When selecting a NoSQL database, several factors come into play, including scalability, data model, consistency requirements, and query patterns. - In-memory database
An in-memory database stores data in the main memory (RAM) for faster access and lower latency compared to traditional disk-based databases. - Different caching strategies in system design
Different caching strategies in system design are techniques used to improve the performance and responsiveness of a pplications by storing frequently accessed data in a faster retrieval layer, like memory, for quicker access. These strategies help reduce the load on backend databases and minimize latency. - Types of caching in web application
This is an important topic as caching plays a vital role in improving the performance and reducing the load on backend systems. In web applications, different types of caching techniques are employed. - Database replication
Database replication is the process of creating and maintaining duplicate copies of a database on multiple servers. It ensures data availability, fault tolerance, and load distribution. - Data partitioning in system design
Data partitioning in system design is the practice of dividing a large dataset into smaller, more manageable segments to improve performance, scalability, and availability. Each partition is typically stored on separate servers or nodes, allowing for parallel processing and reducing the risk of data bottlenecks. - Concept of reverse proxies
A reverse proxy is a server that acts as an intermediary between clients and backend servers, forwarding client requests to appropriate backend servers and returning the response to the clients. Unlike a traditional proxy, which protects clients from exposure to the internet, a reverse proxy shields backend servers from direct client requests. - Types of client-server communication
Client-server communication refers to the exchange of data and requests between client devices (such as web browsers or applications) and remote server systems. - ER diagram/entity relationship model
An Entity-Relationship (ER) Diagram , also known as an Entity-Relationship Model, is a graphical representation used to design and illustrate the logical structure of a database. It depicts the relationships among various entities (objects, concepts, or things) within a database system. - Federation: functional partitioning of database + fdbs
Federation, in the context of system design refers to the practice of breaking down a large, monolithic database into smaller, more manageable functional units. This approach is known as Functional Database Sharding (FDBS). Each functional unit, or shard, holds a subset of the data and is responsible for its own operations. This enhances scalability and performance by distributing the workload across multiple database instances. - Different types of file system
Different types of file systems refer to various methods and structures used to manage and organize data on storage devices like hard drives or solid-state drives. - Redundant Arrays of Independent Disks
RAID is a technology that combines multiple physical hard drives into a single logical unit to improve data performance, protection, and availability. - Wide column store
Wide Column Store is a type of NoSQL database that stores data in tables with rows and columns, similar to relational databases. - Apache HBase in system design
Apache HBase is a distributed, scalable, and consistent NoSQL database that is designed to handle massive amounts of data. - Google Cloud BigQuery in system design
Google Cloud BigQuery is a fully managed, serverless data warehouse that offers high-performance querying and analytics capabilities. - Memcached in system design
Memcached is an open-source, high-performance, distributed memory caching system designed to accelerate dynamic web applications by alleviating database load. - Graph database in system in system design
A graph database is a specialized type of database designed to store and manage data as nodes, edges, and properties, resembling a graph structure. In system design, using a graph database can be advantageous for scenarios where relationships between data points are crucial. - PostgreSQL in system design
PostgreSQL, often referred to as "Postgres", is a powerful open-source relational database management system (RDBMS) that plays a significant role in system design. - Object-oriented database
An Object-Oriented Database is a type of database that combines the principles of object-oriented programming with database management systems. - Sharding
Sharding is a database design technique used to horizontally partition large datasets across multiple physical or logical databases. - ACID and base model
The ACID and BASE models are two different approaches to ensuring consistency and reliability in database systems. - Master-slave and master-master replication in databases
Both replication methods offer benefits in terms of scalability, fault tolerance, and performance enhancement, but they also bring challenges like data consistency, conflict resolution, and configuration management. - Time Series Database
A time series database is a specialized type of database designed to efficiently store and manage time-stamped data points, often generated at regular intervals. It is optimized for querying and analyzing temporal data, such as sensor readings, stock prices, website analytics, and more. - 7Rs of database migration
The7 R's of Database Migration, are a set of principles to guide the process of migrating a database from one environment to another. These principles ensure a smooth and successful transition while minimizing risks and ensuring data integrity. - Database mirroring and log shipping
Database mirroring is a high-availability solution in SQL Server that involves maintaining two copies of a database, the principal and the mirror, on separate server instances. The primary database (principal) is constantly mirrored to the secondary database (mirror) in real-time. - Database clustering
Database Clustering is a technique used to enhance the availability, performance, and fault tolerance of databases by distributing the data across multiple servers. It involves setting up a group of interconnected database servers that work together as a single system. - Different database migration strategies
Database migration strategies are essential for smoothly transitioning from one database version, schema, or platform to another without disrupting the application's functionality. - File systems in database
A file system in a database refers to the method of managing and storing data within a database system. It's an essential component that handles how data is organized, stored, retrieved, and managed on physical storage devices. - Always on availability
Always On availability typically refers to a high-availability feature in database management systems. It ensures that the database remains accessible and operational without interruption, even during maintenance or hardware failures.
- Idea of zero copy
The "Idea of Zero Copy" is a technique used in computer systems to optimize data transfer between different parts of a system, especially in cases involving I/O operations. - Sidecar design pattern in system design
The
Sidecar Design Pattern is an architectural approach in system design where functionality that's not core to the main application is outsourced into a separate service, often referred to as a "sidecar." - Cloud design patterns
Cloud design patterns are architectural solutions that address common challenges when designing and deploying applications in cloud environments. - Idea of consistency patterns in system design
Consistency Patterns refer to strategies that manage data consistency across distributed systems. - Consistent hashing
Consistent Hashing is a technique used in distributed systems to evenly distribute data across multiple nodes while maintaining a level of stability when nodes are added or removed from the system. In this approach, each data item is associated with a hash value, and each node in the system is also mapped to a hash value range. - Stateless and stateful architecture
Stateless and stateful architectures: Stateless architectures are generally easier to scale and are more suitable for distributed systems, while stateful architectures are used when maintaining context and personalized experiences are crucial. - Message queues in system design
Message queues are essential components in system design that facilitate asynchronous communication and decoupling between different parts of a distributed application. They are used to manage the flow of messages between various services, allowing these services to communicate without needing to be directly connected. - Noisy neighbor+throttling pattern
The Noisy Neighbor and Throttling Pattern, is a design approach used in distributed systems to manage resource allocation and prevent a single component from consuming excessive resources, thereby affecting the overall system performance. - Partition tolerance after 2000s
Partition tolerance, in the context of distributed systems, refers to the system's ability to continue functioning even when communication between nodes (servers) is unreliable or disrupted. It's one of the three aspects of the CAP theorem, along with Consistency and Availability.
- Basics of YAML
YAML is a human-readable data serialization format. It's often used for configuration files and data exchange between languages with different data structures. - Basics of Rich Text Format (RTF)
Rich Text Format (RTF) is a document file format that allows for the formatting and styling of text within a document. Unlike plain text files, RTF files can include various text attributes such as font styles, sizes, colors, alignments, and more. - Basics of XML
XML (eXtensible Markup Language) is a widely used markup language designed to store and transport data in a human-readable and machine-readable format. - Portable Network Graphics (PNG) file format
Portable Network Graphics (PNG) is a popular image file format designed to store and display raster graphics, such as images and icons.
- OpenGenus Visual Documentation
OpenGenus Visual Documentation is a tool designed to enhance understanding and learning of complex algorithms and data structures through visual representation. - Airbnb's massive deployment technique: 125000+ times a year
Airbnb, a prominent online marketplace for lodging and travel experiences, employs a remarkable deployment strategy that involves an exceptionally high frequency of software deployments. With a staggering rate of over 125,000 deployments annually, Airbnb's approach emphasizes rapid iteration and continuous delivery. - Live streaming to 25.3M concurrent viewers: deal with traffic spike
Live streaming to a massive audience demands a robust infrastructure capable of handling a sudden influx of viewers during significant events. To manage the surge in traffic, content delivery networks (CDNs) are employed. - How server outrage do not impact Netflix
Netflix's resilience against server outages is achieved through a combination of strategies. One key approach is the concept of microservices architecture, where the platform's functionalities are divided into smaller, independent services. These services are distributed across various servers and data centers. - Why companies have high deployment rate
Companies aim for high deployment rates primarily to achieve faster development cycles, continuous improvement, and enhanced user experiences. - Apache Kafka in system design
Apache Kafka
is an open-source distributed event streaming platform used for building real-time data pipelines and streaming applications. - MapReduce in system design
MapReduce , is a programming model and processing framework used to process and generate large-scale data sets in parallel across a distributed cluster of computers. It was popularized by Google and has become a cornerstone technology for processing big data. - Dapper in system design
Dapper is an Object-Relational Mapping (ORM) library developed by Stack Overflow. It's designed to simplify data access in applications by mapping database query results to strongly-typed objects. - what is Pub/Sub messaging
Pub/Sub (Publish/Subscribe) messaging is a communication pattern in which senders (publishers) and receivers (subscribers) are decoupled. Publishers distribute messages to topics, and subscribers receive messages from those topics based on their interests. - Apache ZooKeeper in system design
Apache ZooKeeper is a distributed coordination service that plays a crucial role in system design, especially in distributed and highly available applications. It provides a centralized platform for managing configuration, synchronization, and group services. - System Design of CRM Software
CRM software is designed to manage an organization's interactions and relationships with its customers. - Probnik: Netflix's innovation testing framework
Probnik, is an innovative testing framework developed by Netflix to simulate real-world failure scenarios and assess system resiliency. It's designed to push systems to their limits and identify potential weaknesses before they impact user experiences. - How Spotify went down after an outage
Spotify experienced an outage due to an unexpected combination of events. The incident occurred due to a synchronization issue within the infrastructure that led to a cascading failure. The system was designed to maintain high availability through redundancy, but a software bug caused a disruption in the communication between nodes. - How Uber got hacked
Uber experienced a data breach that exposed the personal information of around 57 million users and 600,000 drivers. The breach was not immediately disclosed to the affected individuals or regulatory authorities, which led to significant controversy. - Choking algorithm in BitTorrent
BitTorrent is a peer-to-peer (P2P) file-sharing protocol that facilitates the distribution of large files across the internet. Unlike traditional client-server models, where a central server serves files to multiple clients, BitTorrent employs a decentralized approach where users collectively share and distribute files. - Long polling fault tolerance in system design
Long Polling is a communication technique used in web development to achieve near real-time updates without the need for constant requests from the client to the server.
- Liskov substitution principle
The Liskov Substitution Principle (LSP) is a fundamental principle in object-oriented programming that emphasizes the relationship between a base class and its derived classes. - Open-closed principle
The Open-Closed Principle (OCP), is one of the SOLID principles of object-oriented programming design. It states that software entities (such as classes, modules, functions) should be open for extension but closed for modification. - Dependency inversion principle
The Dependency Inversion Principle (DIP) is one of the SOLID principles of object-oriented programming and design. It suggests that high-level modules should not depend on low-level modules, but both should depend on abstractions. - Cache stampede
Cache stampede, also known as "dog-piling" or "thundering herd," is a phenomenon that occurs in caching systems when a cache entry expires, and multiple requests for the same resource simultaneously trigger cache misses. - How to design a System?
Designing a system , whether it's a software application, a network infrastructure, or any other complex solution, requires a systematic approach.
- System design of meeting scheduler
The System Design of a Meeting Scheduler involves creating a digital platform that efficiently manages scheduling and coordinating meetings among multiple participants. This system simplifies the process of selecting suitable meeting times while considering participants' availability and preferences. - System design of file uploading service
System design of file uploading service involves designing a scalable and reliable system to handle file uploads. Load balancing, caching and data partitioning are important factors of this topic. - How are email systems designed?
Designing email systems involves creating a complex infrastructure that enables the sending, receiving, and storage of electronic messages. It typically comprises multiple components, such as mail servers, protocols like SMTP and IMAP, spam filters, and user interfaces. - System design of a URL shortner
System design of a URL shortener is a process that involves designing a service to shorten long URLs while maintaining their accessibility and redirect functionality. - System design of elevator system
Designing an elevator system involves creating an efficient and safe mechanism for vertical transportation within a building. Key considerations include optimizing passenger wait times, elevator movement, and building energy efficiency. - System design of movie ticket booking system
TheSystem Design of a Movie Ticket Booking System involves creating a robust and user-friendly platform that enables users to search for movies, view showtimes, select seats, and purchase tickets online. - System design of car rental system
Thesystem design of a car rental system involves creating an architecture that efficiently handles the process of renting vehicles to customers. - System design of bank management system
The system design of a Bank Management System encompasses creating a digital framework for effectively managing various banking operations and customer interactions. - System design of a firewall
A firewall acts as a security barrier between a trusted internal network and an untrusted external network, such as the internet. - System Design of Hotel Management System
A hotel management system is a software application designed to streamline various operations in a hotel, from reservation and check-in to check-out and payment processing. - Train Reservation system design
The system design of a train reservation system involves creating a robust and user-friendly platform to facilitate booking train tickets. - System Design for Parking lot
The System Design of a Meeting Scheduler involves creating a digital platform that efficiently manages scheduling and coordinating meetings among multiple participants. This system simplifies the process of selecting suitable meeting times while considering participants' availability and preferences.
- System design of Google Search
Google Search is a complex and highly efficient system designed to quickly retrieve relevant information from an immense index of web pages. The architecture involves multiple components working together, learn about them through the article. - System design of pastebin
Pastebin is a web application that allows users to store and share snippets of text, code, or other content with a unique URL. - System design of YouTube
YouTube's architecture handles massive user-generated content and high traffic load. - System design of Google Maps
Google Maps is a widely used online mapping service that provides users with detailed geographical information, navigation assistance, and location-based services. - System design of Amazon
Amazon is the largest e-commerce platform in the world, it provides variety of services to its vast users. Some topics to explore: System Design of Amazon Hub Locker Service, Eager Loading and Over-Eager Loading. - System design of GitHub
GitHub is a widely used platform for hosting and collaborating on software development projects. Some topics to explore are: Memory Pool with C++ Implementation. - System design of Spotify
Spotify's system design is a remarkable example of how to handle the complexities of streaming music to millions of users globally. - System design of Microsoft Teams
Microsoft Teams is a collaboration platform that offers chat, video meetings, file storage, and application integration. Here are a few topics to explore: Always On availability, System Design of Movie Ticket Booking System, Thundering Herd Problem. - System design of WhatsApp
WhatsApp is a popular messaging application that allows users to send text messages, make voice and video calls, and share multimedia content. The system design of WhatsApp involves a combination of client-server architecture, real-time communication, and data synchronization to ensure a seamless and reliable messaging experience. Some topics to explore: Who uses Apache Kafka and why?,
Long Polling. - System design of Uber
Uber's system design revolves around connecting riders with drivers in real-time through a mobile app. Some topics to explore: System Design of StackOverflow, Top K Heavy Hitters System Design, Payment Gateway System Design. - BitTorrent architecture
BitTorrent is a peer-to-peer (P2P) file sharing protocol that revolutionized the distribution of large files over the internet. Its
architecture enables efficient, decentralized sharing. - System design of Instagram
Instagram , a popular photo and video sharing social platform, has a complex system design to handle its massive user base and dynamic content. - System design of Snapchat
Snapchat, a multimedia messaging app, requires a complex system design to support its unique features such as disappearing messages and multimedia sharing. - System design of Facebook Messenger
Facebook Messenger is a real-time messaging platform with millions of users worldwide. Its system design encompasses various components to ensure seamless communication. - System design of Airbnb
The system design of Airbnb involves creating a robust and scalable platform that connects hosts with travelers seeking accommodations. - System design of Amazon Hub Locker Service
Amazon Hub Locker Service is a delivery solution that offers customers an alternative way to receive their orders. It involves a network of self-service kiosks strategically placed in public locations, such as grocery stores or convenience stores.
- Infrastructure as a service
Infrastructure as a Service (IaaS) is a cloud computing model that provides virtualized computing resources over the internet. - Idea of virtualization
Virtualization is a fundamental concept in system design that involves creating virtual instances of computing resources, such as servers, storage, and networks, to effectively utilize physical hardware. By abstracting physical resources, virtualization allows multiple virtual machines (VMs) or virtual environments to run on a single physical machine, enhancing resource utilization, flexibility, and cost-efficiency. - Application layer with Microservices and Service Discovery
The application layer in microservices architecture refers to the topmost layer where individual microservices communicate with each other. - Containerization
Containerization is a technology that enables the packaging and isolation of applications and their dependencies into a standardized unit called a "container." Containers provide a consistent and reproducible environment for applications to run across different computing environments, such as development, testing, and production. - How to run container images safely?
Running container images safely involves several best practices to ensure the security and stability of your applications within containerized environments - AWS Redshift in system design
Amazon Redshift is a fully managed data warehousing service provided by Amazon Web Services (AWS). It's designed to handle large-scale data analytics and complex querying. Redshift is optimized for online analytical processing (OLAP) workloads, making it a suitable choice for data warehousing and business intelligence applications.
- RPC vs. REST
The choice between RPC and REST depends on the project's requirements. If you need efficient communication between services with strict performance needs, RPC might be a good fit. On the other hand, if you want a more standardized, scalable, and flexible approach to building APIs, REST is often a preferred choice due to its compatibility with HTTP and its ability to handle various client types. - Context switching in OS
Context switching, is a fundamental concept in operating systems that enables multitasking, where multiple processes or threads share a single CPU core. It refers to the process of saving and restoring the state of a process or thread so that the CPU can seamlessly switch from one task to another. - Fault Tolerance in System Design
Fault tolerance in system design refers to the system's ability to continue functioning, albeit with reduced performance, even when certain components or parts of the system fail. - The lock convoy problem in OS
The"lock convoy problem" in operating systems refers to a performance issue that arises in multi-threaded applications when multiple threads compete for a single resource, such as a shared lock, in a synchronized manner. This competition can lead to inefficient resource utilization and reduced overall system performance.
Generated by OpenGenus. Updated on 2023-11-27