Architecture Trade-off Simulator
Build and compare system models. Inspect queueing, capacity, costs, and the assumptions behind every result.
First time here?Quick start & guided walkthrough
Follow one request through the system, find the bottleneck, and compare one change at a time.
- Choose a starting scenarioThe example describes an overloaded database. Select another scenario if you prefer. Incoming requests/s controls the load on the whole system.
- Change one assumptionSelect a component below the diagram, then edit its server count or mean service time. Diagram positions are visual; the input values determine the model.
- Calculate and compareCalculate the model and read stability before comparing latency. Save A, change one value, and Compare A/B to see the difference. An overloaded queue has no finite stationary latency.
Drag a component to arrange the diagram. Use the component selector below to edit it with a keyboard. Connections describe expected serial visits; cache output carries misses only.
Edit connections
Load an example or enter your own input to begin.
How to use this tool
Start with one of four illustrative scenarios. Change request rate, service times, server counts, cache hit rate, and per-instance prices. Calculate again to inspect stability, bottlenecks, and cost.
Add a component, connect it to the graph, and configure expected visits along each connection. Use fractional visits to split traffic between a primary and a read replica. A cache forwards only its misses. Unconnected or cyclic graphs are rejected.
Save configuration A, change the model, then compare. Export the current configuration and report locally; import that exported JSON to restore the model. Open Show the Math for per-station inputs and intermediate values.
How it works
Application, database, cache, load-balancer, and service components are M/M/c queues. Their service time is a mean duration per visit, and the server count denotes identical parallel servers. Network components add a fixed delay; queue components route background work to workers.
Erlang C gives mean queueing time for stable stations. Little’s Law relates arrival rate, time, and jobs in the system. When offered load reaches capacity, stationary queue length and latency are unbounded.
The model sums serial synchronous station time per original request. Background station time is reported separately. Maximum sustainable input is limited by the station with the smallest capacity divided by its expected visits.
Scope and limitations
- An educational open-network approximation, not a benchmark, deployment recommendation, CPU model, or availability prediction.
- Poisson arrivals, exponential service times, FIFO queues, stationary workload, and independent routing assumptions may differ substantially from real traffic.
- Parallel fan-out/join latency, locks, contention, batching, cache invalidation, correlated failures, finite buffers, and distributed consistency are not modeled.
- Costs are illustrative user-entered USD prices, multiplied by instances and 730 hours/month. No provider quotes are bundled.
Technical references
Your input stays in this tab. These tools do not upload, store, or send it to an AI service.