Real-time multiplayer and live media are among the few workloads where the physical location of the server is the dominant design factor. A well-engineered service far away loses to a simple one nearby.
Latency budget first
Decide the acceptable round-trip time for your experience, then choose locations that fit inside it. For fast-paced interaction the tolerance is small; for turn-based play or streaming with buffering it is far more forgiving.
| Experience | Sensitivity |
|---|---|
| Fast-paced competitive play | Very high; region choice is decisive. |
| Casual real-time play | Moderate; a nearby region suffices. |
| Turn-based | Low; one region can serve widely. |
| Live streaming | Moderate; buffering absorbs jitter. |
| On-demand media | Low; a CDN handles distribution. |
Bandwidth is the cost driver
Media and game traffic is egress-heavy, and egress is the direction providers charge for. Model expected bandwidth before choosing, because the difference between providers on transfer allowances can outweigh the instance price several times over.
- Estimate bytes per user per hour from a measured session.
- Multiply by realistic concurrency at peak, not average.
- Compare each provider’s included transfer and overage rate.
- Check whether traffic between your own instances is charged.
- Re-check after launch; real usage rarely matches the estimate.
Sessions are stateful, which changes scaling
A player connected to a match cannot be load-balanced to another instance mid-session. Scaling therefore means placing new sessions on new instances and draining old ones gracefully as matches end, rather than distributing requests freely.
- Route new sessions by capacity and proximity.
- Drain instances by stopping new placements, not by terminating.
- Keep session state recoverable where the game design permits.
- Monitor per-instance session counts, not just aggregate CPU.
Summary
Choose the region from the latency budget, model bandwidth carefully because it dominates cost, scale by placing sessions rather than distributing requests, and harden the exposed port.