Requirements and constraints
Start with users, workloads, latency targets, availability, consistency, security, compliance, cost, and delivery constraints.
Overviews
System design turns product and operational requirements into a coherent technical system. It combines architecture, distributed systems, data, performance, reliability, security, capacity, and cost into explicit tradeoffs.
A repeatable approach
Good system design is not a technology quiz. It is a sequence of decisions grounded in workload, constraints, failure modes, and evidence.
Define users, use cases, boundaries, and what success means.
Estimate traffic, concurrency, data volume, growth, and peak behavior.
Agree on latency, availability, consistency, durability, security, and cost.
Define components, data flows, ownership, APIs, and trust boundaries.
Analyze storage, caching, queues, contention, bottlenecks, and failure handling.
Test assumptions against capacity, operations, migration, and business constraints.
Core pillars
Start with users, workloads, latency targets, availability, consistency, security, compliance, cost, and delivery constraints.
Choose responsibilities, service boundaries, communication patterns, data ownership, and deployment topology before selecting individual technologies.
Model entities, access patterns, transactions, retention, replication, partitioning, and failure recovery around the workload.
Estimate demand, identify bottlenecks, budget latency, and choose scaling mechanisms with explicit safety margins.
Design for failure, observability, recovery, deployment, incident response, and ongoing capacity management.
Apply threat modeling, least privilege, data protection, abuse prevention, and operational controls throughout the design.
Capacity planning
Capacity planning estimates the resources needed to serve normal demand, peaks, growth, and failures without unacceptable latency, errors, or cost. It is a living model, not a one-time spreadsheet.
Requests, jobs, messages, active users, stored objects, bytes transferred, or another measurable unit.
Separate average load from peak load, bursts, seasonal patterns, and failure-mode traffic.
Use historical trends, product plans, adoption scenarios, and explicit confidence ranges.
Translate workload into CPU, memory, storage, network, connection, and dependency demand.
Reserve headroom for variance, deployments, failover, maintenance, and imperfect forecasts.
Specify when to scale, what can scale independently, and the operational limits of automation.
Use load tests, production telemetry, capacity reviews, and post-incident evidence to update the model.
General metrics
No single metric describes a system. A useful design combines user-facing indicators with resource and dependency signals.
Design review checklist