System Design

Overview of system design concepts: architecture patterns, scalability, reliability, and the design process

· 1 min read · budding

Overview

System design principles and patterns for building scalable applications.

Key Concepts

Architecture Patterns

  • Microservices
  • Monolithic
  • Serverless
  • Event-driven

Scalability

  • Horizontal vs Vertical scaling
  • Load balancing
  • Caching strategies
  • Database sharding

Reliability

  • Fault tolerance
  • Redundancy
  • Monitoring
  • Disaster recovery
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