Connect with us


System Design Course – Learn how to design systems at scale

Hey, welcome to the course. I hope this course provides a great learning experience.

This course is also available on my website. Please leave a star as motivation if this was helpful!

Table of contents

  • Getting Started

    • What is system design?
  • Chapter I

    • IP
    • OSI Model
    • TCP and UDP
    • Domain Name System (DNS)
    • Load Balancing
    • Clustering
    • Caching
    • Content Delivery Network (CDN)
    • Proxy
    • Availability
    • Scalability
    • Storage
  • Chapter II

    • Databases and DBMS
    • SQL databases
    • NoSQL databases
    • SQL vs NoSQL databases
    • Database Replication
    • Indexes
    • Normalization and Denormalization
    • ACID and BASE consistency models
    • CAP theorem
    • PACELC Theorem
    • Transactions
    • Distributed Transactions
    • Sharding
    • Consistent Hashing
    • Database Federation
  • Chapter III

    • N-tier architecture
    • Message Brokers
    • Message Queues
    • Publish-Subscribe
    • Enterprise Service Bus (ESB)
    • Monoliths and Microservices
    • Event-Driven Architecture (EDA)
    • Event Sourcing
    • Command and Query Responsibility Segregation (CQRS)
    • API Gateway
    • REST, GraphQL, gRPC
    • Long polling, WebSockets, Server-Sent Events (SSE)
  • Chapter IV

    • Geohashing and Quadtrees
    • Circuit breaker
    • Rate Limiting
    • Service Discovery
    • SLA, SLO, SLI
    • Disaster recovery
    • Virtual Machines (VMs) and Containers
    • OAuth 2.0 and OpenID Connect (OIDC)
    • Single Sign-On (SSO)
    • SSL, TLS, mTLS
  • Chapter V

    • System Design Interviews
    • URL Shortener
    • Whatsapp
    • Twitter
    • Netflix
    • Uber
  • Appendix

    • Next Steps
    • References

What is system design?

Before we start this course, let’s talk about what even is system design.

System design is the process of defining the architecture, interfaces, and data for a system that satisfies specific requirements. System design meets the needs of your business or organization through coherent and efficient systems. It requires a systematic approach to building and engineering systems. A good system design requires us to think about everything, from infrastructure all the way down to the data and how it’s stored.

Why is System Design so important?

System design helps us define a solution that meets the business requirements. It is one of the earliest decisions we can make when building a system. Often it is essential to think from a high level as these decisions are very difficult to correct later. It also makes it easier to reason about and manage architectural changes as the system evolves.

System Design Course on GitHub:
Platform: Learning
⭐️: 3.5K