System Design Optimizer
Tune the architecture. Watch it react.
Cost, scalability, availability, networking and security puzzles on real AWS building blocks. Pick instance classes, dial in autoscaling, place subnets, lock down access — every change updates the system health live. Difficulty ranges from beginner to expert.
34 challenges
Trim the idle dev/test bill
A dev/test environment runs oversized, on-demand, 24×7 — for a workload that's idle nights and weekends. Cut the bill hard without breaking it.
Run batch jobs on Spot
A fault-tolerant nightly batch cluster runs on oversized On-Demand instances 24×7. It's interruptible work — pay accordingly.
Right-size the runaway fleet
You inherited a service running an oversized, single-AZ fleet on-demand — no CDN, no cache, and a lone database. It's burning cash, it's too slow, and it's fragile. Meet a tight SLA on a quarter of the bill.
Purchasing strategy under an SLA
The cheapest purchasing option isn't always allowed. Hit a strict availability SLA at the lowest cost — and learn why pure Spot won't cut it here.
Multi-region cost blowout
Someone went active-active across two regions 'to be safe' — doubling the bill for an SLA one region meets easily. Dial the footprint back and add only what's needed.
FinOps overhaul
A two-tier app where nothing is right — prev-gen on-demand fleets in one AZ, no edge caching, an oversized database, cold data on hot storage. Fix all of it under budget.
Offload static traffic with a CDN
Most of this site's traffic is static assets hitting the origin fleet directly. Put a CDN in front so the origin can shrink dramatically.
Cache a read-heavy API
A read-heavy API is hammering its database and running in a single AZ. Add the missing pieces to meet the SLA — without over-building.
Handle a flash-sale spike
Traffic is flat all day, then explodes 20× for one hour during the sale. A fixed fleet either bankrupts you or falls over. Ride the spike efficiently.
Scale the read platform to 12k rps
Growth pushed this content platform to 12,000 rps. The origin fleet and database can't keep up. Absorb the load with edge caching and a cache tier — cheaply.
Global low-latency at scale
Users worldwide need sub-85ms p99. You start with a bare, single-region fleet — you must decide which components the design actually needs, and which are expensive traps.
Kill the single points of failure
One app instance, one database, one AZ. Any failure takes the whole service down. Make it survive an instance or AZ loss.
Multi-AZ everything (four nines)
The business now needs 99.99% — four nines. Two AZs and a Multi-AZ database aren't enough; every tier has to tolerate an AZ loss with headroom.
Survive an AZ outage
Two instances in two AZs looks redundant — until an AZ fails and the other half can't carry the load, and the single-standby database has nowhere to fail to.
Survive the viral launch
15,000 rps, four-nines, a 110ms ceiling and a real budget — starting from a bare single-AZ fleet. Add the right components and tune every tier at once.
Five nines across regions
The board wants 99.995% — impossible inside one region. Set the right multi-region footprint, add what the data tier needs, and don't over-spend on the wrong add-ons.
NAT for private egress
The app servers are exposed in a public subnet just so they can download updates. Move them private and give them a safe way out.
Public vs private subnets
The load balancer is hidden while the app and database sit on the public internet — exactly backwards. Lay out the VPC the right way.
Segment a multi-tier VPC
Web, app, and data tiers all sit in one flat, public network trusting each other over the whole VPC. Segment them properly with least-privilege paths.
Least-privilege security groups
Subnets are fine, but every tier's security group trusts the whole VPC. Tighten each one to accept traffic only from the tier directly in front of it.
Connect VPCs privately
An app needs a shared-services database that lives in another VPC. Right now it reaches it over the public internet. Wire the two VPCs together privately.
Zero-trust network segmentation
A flat, public, mutually-trusting network. Add the missing edge and egress components, then segment every tier into a least-privilege, defense-in-depth VPC.
Stop the public exposure
A public database, a world-readable S3 bucket, and SSH open to the internet. Shut the three classic exposures without taking the site offline.
Encrypt everything (rest & transit)
A compliance audit requires encryption everywhere — at rest and in transit. Right now almost nothing is encrypted. Close every gap.
Close public SSH with SSM
Admins reach the fleet over SSH open to the whole internet, on instances in a public subnet. Provide safe admin access with no inbound SSH.
Lock down the database
The database is publicly reachable, accepts traffic from anywhere, and stores data in the clear. Close every gap without breaking the app path.
WAF and edge protection
The load balancer takes raw internet traffic with no filtering, and the tiers behind it are exposed. Put a WAF at the edge and lock everything behind it.
Defense in depth
Layer every control at once: add edge filtering and egress, put every data store private, close public admin access, and encrypt everything.
Tiered storage lifecycle
40 TB of cold archival data sits in S3 Standard, and the app server is oversized. Move rarely-touched data to the right storage class and trim compute.
Tune the data tier
A tiny burstable database is choking a busy service, with no cache and no redundancy. Choose the right database size and protect the data.
Right-size DynamoDB
A steady key-value workload runs on wildly over-provisioned DynamoDB in a single AZ compute tier. Match capacity to demand and stop paying for idle units.
Scale database reads
A read-dominated workload has outgrown a single database, even a big one. Scale reads with caching plus read replicas — cheaper than brute-forcing the class.
Pick the right DynamoDB mode
Traffic is flat then spikes 20× for an hour. Provisioned capacity either throttles the spike or sits idle all day. Choose the mode that fits unpredictable load.
Global-scale datastore
20,000 rps of global key-value traffic, five-nines, a 100ms ceiling. Pick the capacity mode and footprint, add the right edge/cache, and skip the traps.
For learning purposes only. Costs and capacities are illustrative and are not live AWS prices. Not affiliated with or endorsed by Amazon Web Services.