Skip to content

Instantly share code, notes, and snippets.

@kamranahmedse
Last active January 12, 2023 15:35
Show Gist options
  • Save kamranahmedse/96a951effcdfa0d9f94bf24667a81695 to your computer and use it in GitHub Desktop.
Save kamranahmedse/96a951effcdfa0d9f94bf24667a81695 to your computer and use it in GitHub Desktop.

System Design Roadmap

  • Introduction
    • What is System Design?
    • How to Approach System Design?
  • Performance vs Scalability
  • Latency vs Throughput
  • Availability vs Consistency
    • CAP Theorem
      • CP - Consistency and Partition Tolerance
      • AP - Availability and Partition Tolerance
  • Consistency Patterns
    • Weak Consistency
    • Eventual Consistency
    • Strong Consistency
  • Availability Patterns
    • Fail-over
      • Active-Passive
      • Active-Active
    • Replication
      • Master-slave Replication
      • Master-master Replication
    • Availability in Numbers
      • 99.9% availability - three 9s
      • 99.99% availability - four 9s
      • Availability in parallel vs in sequence
        • In Sequence
        • In Parallel
  • Background Jobs
    • Event Driven
    • Schedule-Driven
    • Returning Results
  • Domain Name System
  • Content Delivery Networks
    • Push CDNs
    • Pull CDNs
  • Load Balancer
    • Layer-4 Load Balancing
    • Layer 7 Load Balancing
    • Algorithms
    • Horizontal Scaling
  • Reverse Proxy
  • Load Balancer vs Reverse Proxy
  • Application Layer
    • Microservices
    • Service Discovery
  • Databases
    • RDBMS
      • Master-Slave Replication
      • Master-Master Replication
      • Federation
      • Sharding
    • Denormalization
    • SQL Tuning
      • Tighten up the schema
      • Use good indices
      • Avoid expensive joins
      • Partition tables
      • Tune the query cache
    • NoSQL
      • Key-Value Store
      • Document Store
    • Wide Column Store
    • Graph Database
    • SQL or NoSQL
  • Caching
    • Client caching
      • CDN caching
      • Web server caching
    • Database caching
    • Application caching
    • Caching at the database query level
    • Caching at the object level
    • When to update the cache
      • Cache-aside
      • Write-through
      • Write-behind (write-back)
      • Refresh-ahead
  • Asynchronism
    • Message queues
    • Task queues
    • Back pressure
    • Idempotent Operations
  • Communication
    • Hypertext transfer protocol (HTTP)
    • Transmission control protocol (TCP)
    • User datagram protocol (UDP)
    • Remote procedure call (RPC)
    • RPC and REST calls comparison
    • Representational state transfer (REST)
  • Performance Antipatterns
    • Busy Database
    • Busy Frontend
    • Chatty I/O
    • Extraneous Fetching
    • Improper Instantiation
    • Monolithic Persistence
    • No Caching
    • Noisy Neighbor
    • Retry Storm
    • Synchronous I/O
  • Cloud Design Patterns
    • Data Management
      • Cache-Aside
      • CQRS
      • Event Sourcing
      • Index Table
      • Materialized View
      • Sharding
      • Static Content Hosting
      • Valet Key
    • Design and Implementation
      • Ambassador
      • Anti-Corruption Layer
      • Backends for Frontend
      • CQRS
      • Compute Resource Consolidation
      • External Configuration Store
      • Gateway Aggregation
      • Gateway Offloading
      • Gateway Routing
      • Leader Election
      • Pipes and Filters
      • Sidecar
      • Static Content Hosting
      • Strangler Fig
    • Messaging
      • Asynchronous Request Reply
      • Claim Check
      • Choreography
      • Competing Consumers
      • Pipes and Filters
      • Priority Queue
      • Publisher/Subscriber
      • Queue-Based Load Leveling
      • Scheduling Agent Supervisor
      • Seuquential Convoy
    • Reliability
      • Availability
        • Deployment Stamps
        • Geodes
        • Health Endpoint Monitoring
        • Queue-Based Load Leveling
        • Throttling
      • High Availability
        • Deployment Stamps
        • Geodes
        • Health Endpoint Monitoring
        • Bulkhead
        • Circuit Breaker
      • Resiliency
        • Bulkhead
        • Circuit Breaker
        • Compensating Transaction
        • Health Endpoint Monitoring
        • Leader Election
        • Queue-Based Load Leveling
        • Retry
        • Scheduler Agent Supervisor
      • Security
        • Federated Identity
        • Gatekeeper
        • Valet Key
  • Monitoring
    • Health Monitoring
    • Availability Monitoring
    • Performance Monitoring
    • Security Monitoring
    • Usage Monitoring
    • Instrumentation
    • Visualization and Alerts
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment