Keeping Keycloak current is one of the hardest parts of self-hosting — and one of the biggest
reasons to be managed. We handle it with zero-downtime rolling deploys and a gated database
migration step.
persistent-user-sessions (KC 26) keeps sessions in Aurora, so restarting or replacing a
task doesn’t drop logged-in users — Infinispan is just a near-cache.
Stateless tokens
Access tokens are validated in your app, so rolling tasks never invalidate issued tokens.
Clustered across AZs
Tasks are drained and replaced a few at a time behind the ALB — capacity never drops to zero.
For breaking upgrades we stand up a parallel (green) cell on the new version, replay
config, validate, and shift traffic via the registry/DNS — with instant rollback by shifting
back. Dedicated/silo tenants can be scheduled individually.