Skip to the content.

🏗️ System Design and Architecture Notes

A step-by-step roadmap for learning system design, distributed systems, networking, scalability, security, infrastructure, and real-world architecture.

📖 Read the interactive version for a better reading experience.

This guide is useful for:

How to use this roadmap

Study the phases in order. Each phase builds on the previous one.

  1. Learn the fundamentals.
  2. Understand how data is stored and queried.
  3. Learn how to improve performance.
  4. Study distributed systems and failure handling.
  5. Learn networking and service communication.
  6. Study security and identity.
  7. Learn how systems run in production.
  8. Study architecture patterns and integration styles.
  9. Practice real-world system design problems.
  10. Review the interview and estimation material regularly.

Do not try to read every topic in one sitting. Complete one subsection, take notes, and then apply the ideas in a small design exercise.

Start with these files before moving through the phases:

Phase 1: Fundamentals and Design Principles

Goal: Understand the basic properties, constraints, and principles used to design reliable systems.

Core system design concepts

Phase 2: Capacity Planning and Scaling

Goal: Estimate system capacity and understand how to scale services and infrastructure.

Phase 3: Databases and Data Modeling

Goal: Learn how to choose databases, model data, and scale storage systems.

Database fundamentals

Database technologies and storage systems

Transactions and locking

Replication, consistency, and recovery

Distributed transactions and data change flows

Phase 4: Caching and Performance

Goal: Reduce latency, improve throughput, and protect backend systems.

Phase 5: Distributed Systems

Goal: Understand coordination, consistency, failure handling, and communication between services.

Coordination and consistency

Event-driven architecture

Conflict resolution and collaboration

Phase 6: Networking and Communication

Goal: Understand how requests travel through the internet and between services.

Internet and protocols

Load balancing and request routing

Real-time communication

Content delivery and location-based systems

Phase 7: Security and Identity

Goal: Design systems that protect users, data, services, and infrastructure.

Authentication and authorization

Application and infrastructure security

Phase 8: Observability and Operations

Goal: Detect problems, understand system behavior, and operate services reliably.

Phase 9: DevOps, Cloud, and Deployment

Goal: Package, deploy, scale, and manage applications in production.

Containers and Kubernetes

Deployment and infrastructure

Phase 10: Architecture Patterns and Application Design

Goal: Compare common architecture styles and select the right pattern for a system.

Phase 11: Search, Analytics, and Data Processing

Goal: Learn the building blocks behind search, analytics, recommendations, and large-scale data processing.

Phase 12: Media and Streaming Systems

Goal: Understand how large media files are uploaded, processed, delivered, and streamed.

Phase 13: Real-World System Design Problems

Goal: Apply the concepts from the earlier phases to complete system designs.

When practicing a design problem, follow this sequence:

  1. Clarify the requirements.
  2. Identify functional requirements.
  3. Identify non-functional requirements.
  4. Estimate traffic and storage.
  5. Define the public APIs.
  6. Design the data model.
  7. Draw the high-level architecture.
  8. Explain the request and data flows.
  9. Identify bottlenecks and failure modes.
  10. Add scaling, caching, observability, and security.
  11. Discuss tradeoffs and alternative designs.

Suggested study schedule

Week 1: Fundamentals

Read Phase 1 and complete a simple single-server design.

Week 2: Capacity and scaling

Read Phase 2 and practice traffic, storage, and CPU calculations.

Weeks 3 and 4: Databases

Read Phase 3. Design a storage model and compare SQL, NoSQL, partitioning, sharding, and replication.

Week 5: Caching and performance

Read Phase 4. Add caching, rate limiting, backpressure, and latency targets to an existing design.

Week 6: Distributed systems

Read Phase 5. Study consensus, event delivery, failure handling, and consistency tradeoffs.

Week 7: Networking

Read Phase 6. Trace a request from the client through DNS, the load balancer, the gateway, services, and storage.

Week 8: Security and operations

Read Phases 7 and 8. Add authentication, authorization, secrets, logs, metrics, and tracing to your designs.

Week 9: DevOps and architecture patterns

Read Phases 9 and 10. Practice deployment, multi-region architecture, containers, and service boundaries.

Week 10: Search, media, and real-world problems

Read Phases 11, 12, and 13. Complete at least three full system design exercises.

Final checklist

Before considering a design complete, verify that it includes:

After completing this roadmap, you should be able to reason about scalable systems, explain design tradeoffs, and approach system design interviews with a repeatable process.