High-Level Design (HLD) System Design Cheatsheet

Ankush kunwar
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.

--

--

Ankush kunwar
Ankush kunwar

Written by Ankush kunwar

Experienced Software Engineer Skilled in Microservices, Backend Development, System Design, Python, Java, Kubernetes, Docker, AWS, and Problem Solving

No responses yet