Two-tier Architecture

  • Scalable number of front-end web servers
    • Stateless (“RESTful”): if crash can reconnect the user to another server
    • Q: how is the user mapped to a front-end?
  • Scalable number of back-end database servers
    • Run carefully designed distributed systems code
    • If crash, system remains available
    • Q: how do servers coordinate updates?

Three-tier Architecture

  • Scalable number of front-end web servers
    • Stateless (“RESTful”): if crash can reconnect the user to another server
  • Scalable number of cache servers
    • Lower latency (better for front end)
    • Reduce load (better for database)
    • Q: how do we keep the cache layer consistent?
  • Scalable number of back-end database servers
    • Run carefully designed distributed systems code