SYSTEM DESIGN

  1. Overview
  2. Basics
    • High Level Design
    • Low Level Design
    • Monolithic
    • Microservices
  3. Network & Protocols
    • TCP/IP Model
    • DNS
    • REST
    • RPC
  4. Load Balancer
    • Sticky Session
  5. Data Centres
    • GeoDNS/GeoIP
  6. Scalability
    • Vertical Scaling
    • Horizontal Scaling
  7. Databases
    • Database Schema
    • Database Queries
    • Database Replication
    • Data Sharding
  8. Indexing
  9. Caching
    • When to use?
    • Expiration
    • Consistency
    • Eviction Policy
  10. Content Delivery Networks (CDN)
  11. Storage
    • Block storage
    • File storage
    • Object storage
    • Redundant Disk Arrays (RAID)
  12. Message Queues
    • Producer/Publisher
    • Consumer/Subscriber
  13. File Systems
    • NTFS
    • FAT32
    • exFAT
  14. Client and Server
  15. Synchronous vs Asynchronous Systems
  16. Stateful Vs Stateless Architecture
  17. Latency
  18. Throughput
  19. Rate Limiting
  20. Pooling & Streaming
  21. Proxies
    • Forward Proxy
    • Reverse Proxy
    • NGINX
    • HAProxy
  22. Logging
  23. Metrics
  24. Monitoring
  25. Automation - CI/CD