Stateful Application Server
Lessons from building and operating a stateful JRuby application server.
- Held
- Event
- Wooga Engineering
- Location
- Berlin
JRuby · distributed systems · concurrency
A production report on scaling a JRuby/JVM application up through shared in-memory state and out through static sharding, including deployment and concurrency trade-offs.
Presentation
Notes
This system kept game sessions in memory and treated the object graph as the primary application state. Static sharding assigned each session to one machine; per-session mutexes protected concurrent access; a lifecycle-aware handover moved sessions between application versions during deploys.
The approach bought high development speed and low execution time, but made ownership, persistence, JVM warm-up, garbage collection, and failure recovery application concerns. That trade was acceptable for game state where small windows of lost progress were survivable. It would be a poor fit for domains where every bit carries financial, medical, or safety consequences.