The Problem We Were Actually Solving

The engine began as a single Elixir cluster running on 9 beefy bare-metal nodes in Frankfurt, each with 256 GB RAM and 64 cores. We used Redis for pub/sub to broadcast hunt progress and PostgreSQL for authoritative state. Our core loop was:

Player action → Phoenix channel → Redis pub

All live clients receive update → push to browser via WebSocket

Every 5 seconds, the server snapshots Redis state into PostgreSQL to survive restarts