System Design Notes

Pages

  • Attachments
    An index of PDF references and diagrams attached to the system design notes, from TinyURL designs to VietQR and Discord compression charts.
  • Edit History Backup
    Community discussion on storing document edit history using versioned diffs with periodic full snapshots, plus comparisons to persistent segment trees, ropes, and git blobs.
  • Fundamentals
    An overview of system design fundamentals: the CAP consistency-availability trade-off, eight common problems with standard solutions, and a curated list of learning references.
  • Non Functional Requirements
    Defines non-functional requirements and capabilities, and lists the steps to gather requirements before building an application.
  • Overview
    A table of contents for the system design notes, covering fundamentals, software architecture, technical solutions, resilience patterns, and attachments.
  • Reference Code
    A pointer to a sample backend blog application on GitHub for studying application architecture.
  • Retry And Circuit Breaker
    Covers retry with gradual backoff, the Circuit Breaker pattern, distributed transaction techniques such as SAGA, and the Outbox pattern for reliable messaging.
  • Software Architecture
    A survey of software architecture patterns (Clean, Hexagonal, Microservices, EDA, DDD, CQRS, LMAX, MVC family) and design principles (SOLID, DRY, AOP, Command Bus), with references and examples.
  • Technical Solutions
    A curated catalog of detailed technical solutions and case studies, from JWT revocation, caching, and background jobs to TinyURL, ID generation, rate limiting, migrations, and scaling for traffic spikes.