Scale Horizontally
Stateless Design
# Bad: In-memory state
@@users_cache = {} of Int64 => User
# Good: External cache
Azu.cache.set("user:#{id}", user.to_json)Session Storage
class SessionStore
def self.create(user_id : Int64) : String
session_id = Random::Secure.hex(32)
Azu.cache.set(
"session:#{session_id}",
{user_id: user_id, created_at: Time.utc}.to_json,
expires_in: 24.hours
)
session_id
end
def self.get(session_id : String) : Int64?
data = Azu.cache.get("session:#{session_id}")
return nil unless data
JSON.parse(data)["user_id"].as_i64
end
endLoad Balancer Configuration
Nginx as Load Balancer
HAProxy Configuration
Docker Swarm
Kubernetes Deployment
WebSocket Scaling
Database Scaling
Read Replicas
Connection Pooling
Cache Scaling
Monitoring at Scale
See Also
Last updated
Was this helpful?
