1. Business System Design Methodhistorical

    A repeatable system-design method: clarify requirements, quantify scale, define data and invariants, identify bottlenecks, choose components, and validate failure modes.

  2. Handling Very Large Data Setshistorical

    Strategies for large-scale data: partitioning, external sorting, hashing, Bloom filters, streaming aggregation, distributed storage, and choosing algorithms from access patterns.

  3. Designing Highly Available Systemshistorical

    Availability engineering through redundancy, failure domains, timeouts, retries, load shedding, replication, failover, graceful degradation, observability, and recovery testing.

  4. Designing High-Concurrency Systemshistorical

    A practical path from reducing work per request to caching, horizontal scaling, partitioning, asynchronous processing, backpressure, and hotspot control.

  5. Data Modeling for System Designhistorical

    Choosing data models from invariants and access patterns: relational, document, key-value, search/index, event log, graph, denormalization, and derived views.

  6. Refactoringhistorical

    Refactoring as behavior-preserving design improvement, with test protection, incremental changes, observability, and boundaries between cleanup and architectural rewrite.

  7. Scaling Serviceshistorical

    Vertical vs. horizontal scaling, statelessness, load balancing, autoscaling signals, warm-up, downstream capacity, and stateful partitioning.

  8. Technical Planning for Software Systemshistorical

    A methodology for technical planning: business goals, current bottlenecks, target architecture, risk reduction, migration stages, observability, and measurable outcomes.