System Design
Buidling your system design toolbox is key to mastering system design interviews and real-world distributed systems. This page provides an overview of essential technologies and tools used in system design, categorized by their primary functions. DeepSWE reccomends you learn at least one technology from each category with deep understanding to use in interviews, and have a broad understanding of the rest.
System Design Toolbox Overview
Load Balancing | Envoy Proxy Modern, high-performance edge and service proxy designed for cloud-native applications. NGINX High-performance web server and reverse proxy that can act as a load balancer. AWS Application Load Balancer Layer 7 load balancer that makes routing decisions at the application layer. AWS Elastic Load Balancer Classic Layer 4 load balancer that operates at the transport layer. Kubernetes Container orchestration platform with built-in load balancing through Services. |
Networking | HTTP/HTTPS The foundational protocol of the web, supporting request-response communication. gRPC High-performance RPC framework using Protocol Buffers for microservice architectures. GraphQL Query language and runtime for APIs that allows clients to request exactly the data they need. WebRTC Real-time communication technology enabling peer-to-peer audio, video, and data sharing. |
Content Delivery Networks | Cloudflare Global cloud platform that provides CDN, DNS, DDoS protection, and security services. AWS CloudFront Amazon's global content delivery network service that securely delivers data with low latency. ![]() Akamai One of the world's largest CDN providers, delivering 15-30% of all web traffic. |
Caching | Redis In-memory data structure store used as a database, cache, and message broker. Memcached High-performance, distributed memory object caching system for dynamic web applications. |
Message Queues | Apache Kafka Distributed event streaming platform for high-throughput data pipelines and streaming analytics. RabbitMQ Open source message broker that implements AMQP protocol, providing reliable messaging. Amazon SNS Fully managed pub/sub messaging service for application integration and fan-out scenarios. |
Streaming | Apache Spark Unified analytics engine for large-scale data processing with built-in streaming modules. Apache Flink Framework for stateful computations over data streams, designed for true real-time processing. Google BigQuery Serverless, highly scalable data warehouse with built-in machine learning and real-time analytics. |
Client Technologies | iOS Apple's mobile operating system for iPhones and iPads. Android Google's mobile operating system for a wide range of devices. Web Accessed through a web browser on desktop or mobile devices. |
SQL Databases | MySQL Popular open-source relational database management system. PostgreSQL Advanced open-source relational database with strong standards compliance. SQLite Lightweight, file-based SQL database engine perfect for embedded applications. |
NoSQL Databases | Apache Cassandra Distributed NoSQL database designed for handling large amounts of data across many servers. DynamoDB Amazon's fully managed NoSQL database service with seamless scalability. MongoDB Document-oriented NoSQL database that stores data in flexible, JSON-like documents. Elasticsearch Distributed search and analytics engine built on Apache Lucene. |
Blob Storage | Amazon S3 Object storage service offering industry-leading scalability, data availability, and security. ![]() Azure Blob Storage Microsoft's object storage solution for the cloud, optimized for storing massive amounts of unstructured data. Google Cloud Storage Unified object storage for developers and enterprises with worldwide edge caching. |
API Gateway | AWS API Gateway Fully managed service for creating, publishing, maintaining, monitoring, and securing APIs at scale. |
Getting Started
Each category above represents a fundamental building block in system design. Click on any of the individual technology pages in the sidebar to dive deeper into specific tools, their use cases, and implementation details.
The technologies shown here are commonly used in production systems at scale and are frequently discussed in system design interviews. Understanding when and how to use each tool is crucial for designing robust, scalable distributed systems.