High-Level Design (HLD) System Design Cheatsheet
2 min readFeb 1, 2025
1. Understanding Requirements
- Functional Requirements: Core features (e.g., user login, messaging, video streaming, etc.).
- Non-Functional Requirements: Scalability, availability, fault tolerance, consistency, etc.
- Constraints & Assumptions: Users, data size, traffic volume, latency requirements.
2. Defining System Components
- Client Layer: Web, mobile apps, APIs.
- Application Layer: Microservices, monolith, API gateways.
- Data Layer: Databases (SQL/NoSQL), caching (Redis, Memcached).
- Storage Layer: Blob storage, file storage, CDN.
- Networking: Load balancers, reverse proxies.
3. Database Selection
- Relational Databases (SQL): ACID compliance, structured data.
- NoSQL Databases: Document-based (MongoDB), Key-value (Redis), Columnar (Cassandra), Graph (Neo4j).
- Sharding & Partitioning: Horizontal scaling.
- Replication: Master-slave, leader-follower.
- Indexing & Query Optimisation.
4. Scalability & Performance
Load Balancing: Round-robin, Least connections, Consistent hashing.
Caching Strategies:
- CDN for static content.
- Application caching (Redis, Memcached).
- Database caching (Read replicas, materialized views).
Asynchronous Processing:
- Message queues (Kafka, RabbitMQ, SQS).
- Event-driven architecture.
5. Availability & Fault Tolerance
- Replication: Multi-region, Multi-master, Read replicas.
- Failover & Redundancy: Hot standby, cold standby.
- Distributed Systems Principles: CAP Theorem (Consistency, Availability, Partition Tolerance).
6. Consistency & Data Integrity
- Strong vs Eventual Consistency.
- Distributed Transactions: Two-phase commit, Saga pattern.
- Quorum-based Voting (Raft, Paxos).
7. Security Considerations
- Authentication & Authorization: OAuth, JWT, OpenID.
- Data Encryption: TLS, SSL, AES.
- Rate Limiting & API Security.
- DDOS Protection, Firewalls, IDS/IPS.
8. Monitoring & Logging
- Metrics Collection: Prometheus, Grafana.
- Logging & Analysis: ELK Stack (Elasticsearch, Logstash, Kibana), Splunk.
- Alerting & Incident Management: PagerDuty, Opsgenie.
9. Common System Design Problems
- URL Shortener: Hashing, unique ID generation.
- Rate Limiting: Token bucket, leaky bucket.
- Messaging Queue: Kafka, RabbitMQ, SQS.
- Designing Instagram/Twitter: Timeline generation, fan-out.
- Designing Netflix/YouTube: Content delivery, CDN.
- Designing Uber: Real-time tracking, geospatial indexing.
10. Interview Tips
- Clarify Requirements First.
- Start with a High-Level Architecture before diving deep.
- Discuss Trade-offs (CAP theorem, consistency vs availability).
- Think About Scaling Early.
- Use a Whiteboard or Paper to Diagram Your Solution.
- Keep It Conversational & Collaborative.
Final Note:
System design interviews are about demonstrating structured thinking, scalability trade-offs, and handling real-world constraints effectively. Practice designing different systems and focus on reasoning over perfect solutions!
Thank you for reading !!!
If you enjoy this article and would like to Buy Me a Coffee, please click here.
you can connect with me on Linkedin.