Skip to content
    Back to courses
    Learning path

    System Design, from first principles to real systems

    40 lessons in three courses, from your first design to distributed-systems trade-offs and complete case studies. Plain-English explanations, diagrams, trade-off tables and practice exercises in every lesson.

    Three courses, one path

    Start at your level. Each course builds on the one before it.

    TrackStarter ~12.5 hr12 lessons

    System Design Foundations: From Zero to Your First Design

    Start here if system design is new to you. Learn how to turn requirements into a design, estimate load, and use the basic building blocks (DNS, load balancers, caches, databases, CDNs) with plain-English explanations and diagrams.

    Not started0 / 12 lessons

    What you will be able to do

    • Turn a vague idea into clear functional and non-functional requirements.
    • Estimate traffic, storage and bandwidth before you draw a single box.
    • Choose between caches, queues, databases and replication, and explain the trade-off.
    • Design for failure: timeouts, retries, circuit breakers and graceful degradation.
    • Reason about consistency, ordering and distributed transactions.
    • Walk through complete designs: URL shortener, photo sharing, news feed, chat, video streaming and ride sharing.

    Tools you will meet

    The lessons teach the ideas first and use these widely used tools as examples. Naming a tool is not an endorsement, and every design in the course works with equivalents.

    Data and caching

    • PostgreSQLRelational database
    • MySQLRelational database
    • MongoDBDocument database
    • Apache CassandraWide-column database
    • DynamoDBManaged key-value database
    • RedisIn-memory cache and data store
    • MemcachedIn-memory cache
    • OpenSearchSearch and analytics engine
    • ElasticsearchSearch engine
    • Amazon S3Object storage

    Messaging and events

    • Apache KafkaDistributed event log
    • RabbitMQMessage broker

    Traffic and platform

    • NginxWeb server, reverse proxy, load balancer
    • EnvoyProxy for gateways and service meshes
    • KubernetesContainer orchestration
    • etcdConsensus-backed key-value store
    • TerraformInfrastructure as code

    Observability

    • PrometheusMetrics and alerting
    • GrafanaDashboards

    Names and logos are trademarks of their respective owners and are shown only to identify the tools.

    The whole subject on one page

    This cheat sheet maps the territory: requirements, the high-level architecture, the request lifecycle, scaling techniques, reliability, data trade-offs, security and the common myths. The first lesson explains every part of it in text.

    Read System Design: The Big Picture
    System Design cheat sheet: requirements, high-level architecture, request lifecycle, scaling techniques, reliability, data and distributed systems, security and operations, common myths and a practical checklistOpen the full-size cheat sheet

    Case studies

    Full designs worked end to end: requirements, estimation, API, data model, architecture, bottlenecks and trade-offs. For a longer worked example, read the notification service design.

    Questions

    Who is this System Design course for?
    Anyone who builds or will build software: students, developers moving into backend or architecture work, and engineers preparing for system design interviews. The first course assumes no prior knowledge.
    Do I need to know a programming language?
    No. The lessons explain ideas with diagrams, tables and plain language. A few lessons include short code or configuration sketches, but you can follow them without writing code.
    Is it free?
    Yes. The first lesson of each course is open to everyone, and a free account unlocks the rest, tracks your progress and keeps your place.
    Where should I start?
    Start with System Design Foundations. If you already know the basics (load balancers, caches, databases), start with Building Blocks, and take the Advanced course and case studies when you are comfortable with replication, sharding and consistency.
    Will this get me through a system design interview?
    It teaches the concepts, the way to reason about trade-offs, and six worked case studies you can practise out loud. No course can promise an interview result, so practise the exercises and explain your designs to another person.