I would first establish the workload characteristics and scaling target: current and expected traffic, read/write ratio, latency objective, data volume, availability requirements, regional requirements, and budget. Then I would scale each tier independently, because the application, cache, and database have different bottlenecks and consistency trade-offs.
Before choosing an architecture, I would ask:
- Is traffic steady, bursty, or seasonal?
- Is the application stateless?
- What are the read/write ratios?
- What is the current bottleneck?