System Design

Overview

System design principles and patterns for building scalable applications.

Key Concepts

Architecture Patterns

Scalability

Reliability

Closed permits calls until a failure threshold opens the circuit. Open rejects calls. After a reset timeout, half-open permits a trial; success returns to closed and failure returns to open and restarts the timeout.
Conceptual circuit-breaker state machine illustrating fault tolerance. Thresholds and retry timing depend on the system; the diagram supplies no measured performance claims or default settings. Original diagram based on Martin Fowler, Circuit Breaker.

Design Process

  1. Requirements gathering
  2. Capacity estimation
  3. System interface design
  4. Data model design
  5. High-level design
  6. Detailed design
  7. Scalability considerations
All notes