Your app works well for 1,000 users. Traffic is expected to grow to 1 million users. How would you prepare the system, and in what order?
What the interviewer wants to hear
- Measure and find the real bottlenecks before changing architecture
- Stateless app servers behind a load balancer with autoscaling
- CDN and caching for static and repeated reads
- Database: indexes, connection pooling, read replicas, then partitioning
- Background queues for slow work, plus monitoring and load testing
Model answer
I would first measure. I add observability, such as metrics, logs and tracing, and run load tests to find what breaks first, because guessing leads to complex systems we do not need. Usually the order is: make app servers stateless, keeping sessions and uploads in shared stores, so I can run many instances behind a load balancer with autoscaling. Put static assets and cacheable pages behind a CDN. Then the database, which is usually the real bottleneck: fix slow queries and indexes, add connection pooling, cache hot reads in Redis with clear invalidation, and add read replicas for read-heavy pages while being careful about replica lag. Slow work like emails, image processing and reports moves to a queue with workers. Only if one database still cannot handle writes would I consider partitioning or sharding. Throughout, I keep rate limits, graceful degradation and runbooks ready.
Can you answer it under time pressure?
Take a timed hard round and get scored on every answer.
More hard Full Stack Developer questions
- You are building a multi-tenant B2B SaaS app. How would you design data isolation between tenants, and what are the trade-offs?
- An order flow touches your database, a payment provider and an email service. How do you keep the system consistent when any step can fail?
- You need to split a large users table column "name" into "first_name" and "last_name" on a table with 50 million rows, with no downtime. Walk through your plan.
- For a large e-commerce site in Next.js, how would you choose the rendering and caching strategy for the home page, product pages, cart and account pages?
- Design an e-commerce checkout end to end: cart, payment with a provider like Stripe, inventory and order confirmation. What can go wrong and how do you make it reliable?
- Your startup’s Next.js monolith is growing and some engineers want to split it into microservices. How do you decide, and what would you do?
- Ten minutes after a deploy, 500 errors jump from 0.1% to 8% on the main API. Walk through how you handle the incident.
- Customers need to import CSV files with up to two million rows into your app. Design the feature end to end.
- You are opening your product’s API to outside partners. How do you design authentication, authorization, rate limiting and change management for it?