# DNS with single server setup
# Load balancer(s)
# Database replication
# Cache
# CDN
# Stateless web tier (introduce shared storage to store shared states)
# Multiple Datacenters
# GeoDNS
# Message Queue: use MQ tto achieve loose coupling
# Database scaling
Summary:
- keep web tier stateless
- Build redundancy at every tier
- Cache data as much as you can
- Support multiple data centers
- Host static assets on CDN
- Scale your data tier by sharding (or functional partitioning)
- Split tiers into individual services, like using messaging queue
- Monitor your system and use automation tools for your system