Progress / Phase 20
Phase 20: Many Machines
When measurements show one process is the limit, zones run in separate processes and then on separate machines, behind gateways that hold the client connections.
Phase 200 / 16 · 0%
This phase is still ahead.
20.1 The case for splitting
0 of 1 done- Decision Record the measured single-process limit that justifies splitting, the options (more tuning, a bigger host, a gateway plus zone processes) and the choice.
20.2 Gateway and zone processes
0 of 6 done-
lorehallow-gateway: terminates client WebSockets, authenticates, and routes each player to a zone process; clients don’t reconnect on handoff. - Internal protocol between gateways and zone processes in
proto/(packagelorehallow.internal.v1), with golden vectors, over one persistent connection per process pair. - Service registry: which zone runs where, health checks, and draining a zone process before a deploy.
- Cross-process handoff using the Phase 11 protocol, rolling back when either side fails.
- Chat, whispers and parties across processes.
-
make serverruns the whole set locally; production gets a systemd unit per service.
20.3 Multiple machines
0 of 3 done- Zone processes on a second machine over a private network, with mutual TLS between processes.
- Partial-failure tests: kill a zone process, a gateway, or the network between them; players end up safe and can reconnect.
- Rolling deploys: drain and restart one zone process at a time with no lost progress.
20.4 Measurement
0 of 1 done- Re-run every scaling.md case against the split deployment, measure the cost of the extra hop, and record before and after in
docs/perf/phase-20.md.
20.5 Walkthrough
0 of 2 done-
docs/walkthroughs/phase-20-many-machines.md: gateways, inter-process handoff, partial failure, and what splitting did and didn’t fix. - Devlog draft, release notes and tag
v1.1.0.
Acceptance criteria
0 of 3 done- The limit recorded in 20.1 is gone, with before and after results on named hardware.
- A zone process crash affects only its zones’ players, who are back in the world within 30 seconds.
- A rolling deploy across every zone process loses no progress.
