{"id":24822314,"url":"https://github.com/imshawan/system-design-resources","last_synced_at":"2026-05-08T04:44:26.336Z","repository":{"id":273830411,"uuid":"920742101","full_name":"imshawan/system-design-resources","owner":"imshawan","description":"System Design concepts with real-world examples and practical insights. Perfect for anyone looking to master the art of building scalable, reliable, and high-performance systems.","archived":false,"fork":false,"pushed_at":"2025-01-31T18:50:08.000Z","size":162,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-05T02:37:44.919Z","etag":null,"topics":["distributed-systems","java","javascript","python","python3","software","software-development","software-engineering","system-design","system-design-interview","system-design-project","system-design-questions","systemd"],"latest_commit_sha":null,"homepage":"https://systemd.imshawan.dev","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/imshawan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-01-22T17:38:01.000Z","updated_at":"2025-01-31T18:50:11.000Z","dependencies_parsed_at":"2025-06-04T23:10:42.384Z","dependency_job_id":"97b47788-85b9-44f6-950b-be7bb568038f","html_url":"https://github.com/imshawan/system-design-resources","commit_stats":null,"previous_names":["imshawan/system-design-resources"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/imshawan/system-design-resources","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imshawan%2Fsystem-design-resources","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imshawan%2Fsystem-design-resources/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imshawan%2Fsystem-design-resources/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imshawan%2Fsystem-design-resources/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/imshawan","download_url":"https://codeload.github.com/imshawan/system-design-resources/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imshawan%2Fsystem-design-resources/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32767590,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-08T02:36:36.067Z","status":"ssl_error","status_checked_at":"2026-05-08T02:36:07.210Z","response_time":54,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["distributed-systems","java","javascript","python","python3","software","software-development","software-engineering","system-design","system-design-interview","system-design-project","system-design-questions","systemd"],"created_at":"2025-01-30T18:40:59.148Z","updated_at":"2026-05-08T04:44:26.302Z","avatar_url":"https://github.com/imshawan.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# **Getting Started with System Design**\n\n## 1. Fundamentals of System Design\n\n\n#### Purpose:\n\nBuild foundational knowledge about what system design is and why it matters.\n\n---\n\n## Chapter list\n\nHere’s a detailed breakdown of the **chapters** for the first section, **Fundamentals of System Design**. Each chapter is designed to provide foundational knowledge and hands-on exercises for practical understanding.\n\n---\n\n#### **[1.1 Overview of System Design](1-Fundamentals/1.1-Overview-of-System-Design/README.md)**\n\n- **Purpose**: Understand what system design is and its importance in solving real-world engineering problems.\n- **Chapters**:\n    1. **[Introduction to System Design](1-Fundamentals/1.1-Overview-of-System-Design/README.md)**\n        - [What is system design?](1-Fundamentals/1.1-Overview-of-System-Design/1-System-Design/1-what-is-system-design.md)\n        - [Difference between high-level and low-level design.](1-Fundamentals/1.1-Overview-of-System-Design/1-System-Design/2-high-and-low-level-designs.md)\n        - Examples of real-world systems (e.g., e-commerce, social media platforms).\n            1. [E-commerce Platform System Design](1-Fundamentals/1.1-Overview-of-System-Design/1-System-Design/3-example.md)\n            2. [System Design for Online Streaming Service](1-Fundamentals/1.1-Overview-of-System-Design/1-System-Design/4-example.md)\n            3. [System Design for Social Media Platform](1-Fundamentals/1.1-Overview-of-System-Design/1-System-Design/5-example.md)\n            4. [System Design for Online Education Platform](1-Fundamentals/1.1-Overview-of-System-Design/1-System-Design/6-example.md)\n    2. **[Why System Design Matters](1-Fundamentals/1.1-Overview-of-System-Design/2-Why-it-Matters/README.md)**\n        - Impact on scalability, reliability, and maintainability.\n        - Role of system design in interviews and real-world projects.\n    3. **[System Design Process](1-Fundamentals/1.1-Overview-of-System-Design/3-The-Process/README.md)**\n        - Gathering requirements.\n        - Defining key use cases and constraints.\n        - Designing high-level architecture and low-level components.\n    4. **[Types of System Design](1-Fundamentals/1.1-Overview-of-System-Design/4-The-Types/README.md)**\n        - Designing web applications vs distributed systems.\n        - Real-time systems vs batch systems.\n        - Offline-first systems vs always-online systems.\n\n---\n\n#### **[1.2 Principles of Scalability, Availability, and Reliability](1-Fundamentals/1.2-Principles-of-Scalability-Availability-and-Reliability/README.md)**\n\n- **Purpose**: Learn core principles that guide the design of robust systems.\n- **Chapters**:\n    1. **[Scalability](1-Fundamentals/1.2-Principles-of-Scalability-Availability-and-Reliability/1-Scalability/README.md)**\n        - Vertical scaling vs horizontal scaling.\n        - Stateless vs stateful architectures.\n        - Examples of scalable designs (e.g., distributed databases).\n    2. **[Availability](1-Fundamentals/1.2-Principles-of-Scalability-Availability-and-Reliability/2-Availability/README.md)**\n        - Definitions: Availability vs uptime.\n        - Designing for high availability (HA).\n        - Redundancy and failover mechanisms.\n    3. **[Reliability](1-Fundamentals/1.2-Principles-of-Scalability-Availability-and-Reliability/3-Reliability/README.md)**\n        - Reliability vs availability.\n        - Fault tolerance and graceful degradation.\n        - Techniques for improving reliability (e.g., retries, idempotency).\n    4. **[Trade-offs Between Scalability, Availability, and Reliability](1-Fundamentals/1.2-Principles-of-Scalability-Availability-and-Reliability/4-Trade-offs/README.md)**\n        - How to balance trade-offs based on requirements.\n        - Real-world examples of trade-offs.\n\n---\n\n#### **[1.3 Key Metrics: Latency, Throughput, Response Time, etc.](1-Fundamentals/1.3-Key-Metrics-Latency-Throughput-Response-Time-etc/README.md)**\n\n- **Purpose**: Understand key performance metrics for evaluating system efficiency.\n- **Chapters**:\n    1. **[Latency](1-Fundamentals/1.3-Key-Metrics-Latency-Throughput-Response-Time-etc/1-Latency/README.md)**\n        - Network latency vs application latency.\n        - Sources of latency in distributed systems.\n        - Techniques for reducing latency (e.g., caching, CDN).\n    2. **[Throughput](1-Fundamentals/1.3-Key-Metrics-Latency-Throughput-Response-Time-etc/2-Throughput/README.md)**\n        - Definition and measurement.\n        - Maximizing throughput with parallel processing and batching.\n    3. **[Response Time](1-Fundamentals/1.3-Key-Metrics-Latency-Throughput-Response-Time-etc/3-Response-Time/README.md)**\n        - Average response time vs percentile response times (e.g., P99).\n        - How to optimize response times.\n    4. **[Connections Between Metrics](1-Fundamentals/1.3-Key-Metrics-Latency-Throughput-Response-Time-etc/4-Connections-Between-Metrics/README.md)**\n        - How latency and throughput interact.\n        - Choosing the right metrics based on system requirements.\n    5. **[Hands-On Exercises](1-Fundamentals/1.3-Key-Metrics-Latency-Throughput-Response-Time-etc/5-Hands-On-Exercises/README.md)**\n        - Simulate latency and throughput scenarios (e.g., HTTP requests under load).\n        - Use tools like Apache JMeter or k6 for load testing.\n\n---\n\n#### **[1.4 CAP Theorem and PACELC Theorem](1-Fundamentals/1.4-CAP-Theorem-and-PACELC-Theorem/README.md)**\n\n- **Purpose**: Learn how distributed systems balance trade-offs in consistency, availability, and partition tolerance.\n- **Chapters**:\n    1. **[CAP Theorem Basics](1-Fundamentals/1.4-CAP-Theorem-and-PACELC-Theorem/1-CAP-Theorem-Basics/README.md)**\n        - Definition and history of CAP Theorem.\n        - Explaining consistency, availability, and partition tolerance.\n        - Why you can only pick two of the three.\n    2. **[Real-World Implications of CAP](1-Fundamentals/1.4-CAP-Theorem-and-PACELC-Theorem/2-Real-World-Implications-of-CAP/README.md)**\n        - Examples of systems focusing on consistency (e.g., relational databases).\n        - Examples of systems focusing on availability (e.g., NoSQL databases).\n        - How network partitions affect system behavior.\n    3. **[PACELC Theorem](1-Fundamentals/1.4-CAP-Theorem-and-PACELC-Theorem/3-PACELC%20Theorem/README.md)**\n        - Introduction to PACELC (Partitioning, Availability, Consistency, Else Latency, Consistency).\n        - Real-world examples of latency vs consistency trade-offs.\n        - Comparing CAP and PACELC with diagrams.\n    4. **[Hands-On Exercises](1-Fundamentals/1.4-CAP-Theorem-and-PACELC-Theorem/4-Hands-On-Exercises/README.md)**\n        - Create a partitioned system simulation and test availability vs consistency trade-offs.\n        - Discuss PACELC in context of popular systems like DynamoDB or Cassandra.\n\n---\n\n#### **[1.5 Consistency Models (Strong, Eventual, Causal)](1-Fundamentals/1.5-Consistency-Models-Strong-Eventual-Causal/README.md)**\n\n- **Purpose**: Explore different consistency models used in distributed systems.\n- **Chapters**:\n    1. **[Introduction to Consistency](1-Fundamentals/1.5-Consistency-Models-Strong-Eventual-Causal/1-Introduction-to-Consistency/README.md)**\n        - What is consistency in distributed systems?\n        - Why consistency is challenging in distributed environments.\n    2. **[Strong Consistency](1-Fundamentals/1.5-Consistency-Models-Strong-Eventual-Causal/2-Strong-Consistency/README.md)**\n        - Definition and examples (e.g., RDBMS with ACID properties).\n        - Trade-offs and use cases.\n    3. **[Eventual Consistency](1-Fundamentals/1.5-Consistency-Models-Strong-Eventual-Causal/3-Eventual-Consistency/README.md)**\n        - Definition and examples (e.g., DynamoDB, Cassandra).\n        - How eventual consistency works (e.g., anti-entropy, read-repair).\n    4. **[Causal Consistency](1-Fundamentals/1.5-Consistency-Models-Strong-Eventual-Causal/4-Causal-Consistency/README.md)**\n        - Definition and examples (e.g., Git versioning).\n        - Use cases where causal consistency is essential.\n    5. **[Hands-On Exercises](1-Fundamentals/1.5-Consistency-Models-Strong-Eventual-Causal/5-Hands-On-Exercises/README.md)**\n        - Simulate strong, eventual, and causal consistency in a distributed environment.\n        - Implement a simple key-value store with eventual consistency.\n\n---\n\n### **[Implementation Tasks for Fundamentals](1-Fundamentals/2-Implementation/README.md)**\n\n- **[Drawing and Planning](1-Fundamentals/2-Implementation/1-Drawing-and-Planning/README.md)**:\n    - Create diagrams to explain CAP and PACELC trade-offs.\n    - Map out a flow of metrics (latency, throughput) for a sample architecture.\n\n\n#### **[1. Overview of System Design](1-Fundamentals/2-Implementation/2-Overview-of-System-Design/README.md)**\n\n1.  **[Gathering Requirements](1-Fundamentals/2-Implementation/2-Overview-of-System-Design/gathering-requirements.md)**:\n    -   Define functional and non-functional requirements for a simple system like a URL shortener.\n    -   Identify constraints such as data storage, scalability, and high availability.\n2.  **[Design High-Level Architecture](1-Fundamentals/2-Implementation/2-Overview-of-System-Design/design-high-level-architecture.md)**:\n    -   Use tools like [draw.io](http://draw.io) or Lucidchart to create a high-level architecture diagram for the system.\n    -   Include components such as frontend, backend, database, and caching layer.\n3.  **[Explore Trade-offs](1-Fundamentals/2-Implementation/2-Overview-of-System-Design/explore-trade-offs.md)**:\n    -   Discuss trade-offs in choosing a relational database vs a NoSQL database for the system.\n    -   Create a document explaining decisions made based on scalability and consistency requirements.\n\n---\n\n#### **[2. Principles of Scalability, Availability, and Reliability](1-Fundamentals/2-Implementation/3-Principles-of-Scalability-Availability-and-Reliability/README.md)**\n\n1. **[Scalability](1-Fundamentals/2-Implementation/3-Principles-of-Scalability-Availability-and-Reliability/scalability.md)**:\n    - Implement a load balancer using tools like Nginx or HAProxy to distribute traffic.\n    - Create a script to simulate increasing traffic and observe how horizontal scaling affects performance.\n2. **[Availability](1-Fundamentals/2-Implementation/3-Principles-of-Scalability-Availability-and-Reliability/availability.md)**:\n    - Design and implement a failover mechanism for a database using read replicas.\n    - Perform manual failover testing to ensure availability during primary database downtime.\n3. **[Reliability](1-Fundamentals/2-Implementation/3-Principles-of-Scalability-Availability-and-Reliability/reliability.md)**:\n    - Implement a retry mechanism in an HTTP client to handle transient failures.\n    - Add idempotency logic to an API endpoint to ensure consistent behavior during retries.\n\n---\n\n#### **[3. Key Metrics: Latency, Throughput, Response Time](1-Fundamentals/2-Implementation/4-Key-Metrics-Latency-Throughput-Response-Time-etc/README.md)**\n\n1.  **[Latency Measurement](1-Fundamentals/2-Implementation/4-Key-Metrics-Latency-Throughput-Response-Time-etc/latency-measurement.md)**:\n    -   Write a script to send HTTP requests to a mock server and measure response times.\n    -   Visualize latency distribution (e.g., using histograms or percentiles like P99).\n2.  **[Throughput Analysis](1-Fundamentals/2-Implementation/4-Key-Metrics-Latency-Throughput-Response-Time-etc/throughput-analysis.md)**:\n    -   Simulate a workload with multiple concurrent requests using a tool like Apache JMeter or k6.\n    -   Measure the maximum requests per second (RPS) the system can handle before latency degrades.\n3.  **[Response Time Optimization](1-Fundamentals/2-Implementation/4-Key-Metrics-Latency-Throughput-Response-Time-etc/response-time-optimization.md)**:\n    -   Introduce caching at the application layer (e.g., with Redis) to reduce response times.\n    -   Compare response times with and without caching enabled.\n\n---\n\n#### **[4. CAP Theorem and PACELC Theorem](1-Fundamentals/2-Implementation/5-CAP-Theorem-and-PACELC-Theorem/README.md)**\n\n1.  **[CAP Trade-offs](1-Fundamentals/2-Implementation/5-CAP-Theorem-and-PACELC-Theorem/cap-trade-offs.md)**:\n    -   Set up a distributed key-value store (e.g., Consul or Etcd).\n    -   Simulate network partitions and observe behavior when prioritizing consistency vs availability.\n2.  **[PACELC Exploration](1-Fundamentals/2-Implementation/5-CAP-Theorem-and-PACELC-Theorem/pacelc-exploration.md)**:\n    -   Use a NoSQL database like DynamoDB or MongoDB to demonstrate latency vs consistency trade-offs.\n    -   Write a report comparing latency in strongly consistent and eventually consistent reads.\n3.  **[Visualization](1-Fundamentals/2-Implementation/5-CAP-Theorem-and-PACELC-Theorem/visualization.md)**:\n    -   Create diagrams illustrating scenarios where CAP and PACELC apply.\n    -   Include real-world examples of systems (e.g., DynamoDB for AP, Spanner for CP).\n\n---\n\n#### **[5. Consistency Models (Strong, Eventual, Causal)](1-Fundamentals/2-Implementation/6-Consistency-Models-Strong-Eventual-Causal/README.md)**\n\n1.  **[Strong Consistency Implementation](1-Fundamentals/2-Implementation/6-Consistency-Models-Strong-Eventual-Causal/strong-consistency-implementation.md)**:\n    -   Create a relational database setup with ACID properties (e.g., PostgreSQL).\n    -   Write a script to test transactional consistency by simulating concurrent writes.\n2.  **[Eventual Consistency Simulation](1-Fundamentals/2-Implementation/6-Consistency-Models-Strong-Eventual-Causal/eventual-consistency-simulation.md)**:\n    -   Build a simple distributed key-value store where nodes asynchronously replicate data.\n    -   Test consistency by performing writes and observing when all nodes eventually converge.\n3.  **[Causal Consistency Experiment](1-Fundamentals/2-Implementation/6-Consistency-Models-Strong-Eventual-Causal/causal-consistency-experiment.md)**:\n    -   Implement a versioning system (e.g., using vector clocks) to simulate causal consistency.\n    -   Create scenarios demonstrating causal relationships, such as a collaborative editing tool.\n\n---\n\n#### **Project suggestion for practicing the \"Fundamentals\"**\n\n- **System Design Case Study**:\n    - Design a simple, distributed chat application with the following requirements:\n        - Low latency for message delivery.\n        - High availability during network partitions.\n        - Eventual consistency for message order.\n    - Deliverables:\n        - High-level architecture diagram.\n        - CAP and PACELC trade-off decisions.\n        - Explanation of chosen consistency model.\n        - Implementation of core features focusing on latency, scalability, and reliability.\n     \n\n---\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fimshawan%2Fsystem-design-resources","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fimshawan%2Fsystem-design-resources","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fimshawan%2Fsystem-design-resources/lists"}