Systems Architecture & Distributed Systems Topics
Large-scale distributed system design, service architecture, microservices patterns, global distribution strategies, scalability, and fault tolerance at the service/application layer. Covers microservices decomposition, caching strategies, API design, eventual consistency, multi-region systems, and architectural resilience patterns. Excludes storage and database optimization (see Database Engineering & Data Systems), data pipeline infrastructure (see Data Engineering & Analytics Infrastructure), and infrastructure platform design (see Cloud & Infrastructure).
Caching Strategies and Distributed Caching
Using caches to reduce latency and load: cache-aside, read-through, write-through, and write-behind patterns, TTLs, eviction policies, and distributed caches such as Redis or Memcached. Covers cache invalidation, stampede and thundering-herd protection, and the consistency tradeoffs of caching. Focuses on where and how to cache across tiers.
End-to-End Feature Design and Development
The integrated "build a complete feature" interview format: taking one feature from user-facing flow through API design, backend logic, data model, and storage in a single coherent walkthrough. Tests the ability to connect the layers and make consistent trade-offs across them, rather than depth in any single layer.
Architectural Patterns and Anti-Patterns
The reusable structures and common traps of system design: layered, hexagonal, CQRS, and event-sourcing patterns, and anti-patterns such as the distributed monolith, chatty services, and god-service sprawl. Covers when each pattern applies and the smell that signals a wrong turn. A catalog-level view distinct from bespoke case studies.
API and Interface Design for Distributed Services
Designing the contracts between services and clients: REST, gRPC, and GraphQL tradeoffs, versioning and backward compatibility, pagination, rate limiting, and idempotent endpoints. Covers request/response modeling, error contracts, and API gateway responsibilities. Focuses on the interface layer that ties distributed components together, not internal data schemas.
Consensus and Coordination Algorithms
How independent nodes agree on shared state: Paxos and Raft, leader election, quorum reads and writes, distributed locks, and coordination services such as ZooKeeper or etcd. Covers split-brain avoidance, fencing tokens, and the cost of coordination on throughput and latency. Frames when consensus is required versus when it can be designed away.
Fault Tolerance, High Availability, and Disaster Recovery
Keeping a system serving despite failure, from code-level resilience to infrastructure-level recovery: circuit breakers, retries with backoff and jitter, timeouts, bulkheads, graceful degradation, and preventing cascading failures, alongside redundancy, failover (active-active versus active-passive), RPO and RTO objectives, backup and restore, and multi-region failover. Covers dependency-failure isolation, chaos engineering to validate resilience, failure-mode analysis, designing to nines of availability, cost-versus-availability tradeoffs, and recovery runbooks. Spans both the patterns that isolate partial failure and the disaster-recovery planning that restores a business-critical system after a major outage.
Service Discovery and Configuration Management
Letting services find and configure each other at runtime: service registries, client-side versus server-side discovery, DNS-based discovery, dynamic configuration, feature flags, and secrets distribution. Covers how services stay wired together as instances come and go, and how config changes propagate safely. The connective plumbing of a microservices deployment.
System Design Methodology and Trade-off Analysis
The end-to-end approach to an open-ended design problem and the judgment that resolves it: clarifying scope and constraints, gathering functional and non-functional requirements, capacity and back-of-envelope estimation, and mapping requirements to a high-level architecture, then reasoning explicitly about competing options on cost, complexity, latency, and reliability to defend a choice. Covers driving a design interview from ambiguity to a proposal, trade-off frameworks, decision-making under uncertainty and incomplete information, reversible-versus-irreversible decisions, and defending choices under scrutiny. The process-and-judgment skill underneath every system-design case study.
Legacy Modernization and Architecture Evolution
Evolving an existing system rather than designing greenfield. Covers the modernization patterns (strangler fig, anti-corruption layers, facades and protocol adapters), choosing between rehosting, replatforming, incremental refactoring and a full rewrite, data migration and coexistence (dual-running, change-data-capture versus bulk cutover, reconciliation and drift), cutover readiness and decommissioning, recovering undocumented behavior from legacy code and stored procedures, instrumenting a migration so you can tell in real time whether it is working, and the organizational and risk management of long migrations across many teams. The scope is the migration itself: not quantifying or prioritizing technical debt, not code-level refactoring craft, not how to decompose a system into microservices, and not cloud migration or deployment and rollback mechanics as topics in their own right.