Hi there,
the following is not exactly a Vaadin question, but since a lot of pros hang around here I give it a try.
In the “old days” we deployed our webapps to Tomcat. We used the parallel deployment feature which allows to deploy a newer version of a webapp while the old version is still running until all sessions have ended.
This worked very nice, but nowadays our webapps are Spring Boot based and run on Kubernetes (to be more specific, on OpenShift). Of course we have rolling deployments, but I haven’t found a way yet to resemble Tomcat’s parallel deployment, as OpenShift doesn’t know anything (or doesn’t care) about HTTP sessions. So when a new version is deployed, a new pod starts, the old pod terminates and active sessions are gone.
Do you have any idea, suggestions how to deal with that?
I guess that Spring Session would be an approach, but it would require some sort of storage (a database, Redis etc.) which I’d like to avoid.
If I read the docs correctly, the rolling update is done by having actually two different apps (my-app-v1, my-app-v2) and then doing some manual steps to move users from v1 to v2.
What I’m actually looking for is a more automatic way, like Tomcat provides. There I have my-app##v1 running, deploy my-app##v2 and all existing sessions will stay on v1, new sessions will go to v2. Once the last session on v1 has ended, the app is undeployed.