Thank you to all who joined us yesterday for the 24.5 Community Town Hall! It was great connecting with you and sharing the exciting news about the beta and upcoming GA release. We had some fantastic conversations during the session, and we want to keep that momentum going.
This thread is the perfect place to continue the conversation. Feel free to share your thoughts, ask any follow-up questions, or dive deeper into the topics we discussed. Whether it’s about new features, feedback on the beta, or ideas for improvements, we’d love to hear from you!
Thanks for hosting the town hall and for sharing the video here. I’d like to follow your request and try to continue the conversation. I do have some questions regarding Control Center:
Image Registry: In the video, Joonas uses a Docker image called “jojule/myapp:14” to deploy a Vaadin app using Control Center. Is this Docker image pulled from Docker Hub? In a corporate context, it would be interesting to know if it will be possible to pull the image from a corporate image registry? And in addition to that, I could imagine that some smaller teams or ICs may not have a private image registry nor want to deploy their Docker image to a public image registry. For those, it would be interesting to upload a local Docker image directly into Control Center.
Identity management: In the video, Joonas enables identity management for his Vaadin application. How does the Vaadin application have to be configured, to know that it is running in a Control Center environment and can delegate the authentication to a Keycloak server? In the video, it seems that this is supposed to happen automatically and a magical way.
Scaling: In the video, Joonas increased the number of replicas to 3, which is a very static way to do scaling. I suppose Control Center uses a Horizontal Pod Autoscaler in the background? Are there any plans to support a more flexible scaling (up/down), e.g. based on cpu and/or memory utilization?
Session management: In the video, you discuss that Control Center will set up sticky sessions for Flow applications to ensure that a user, once logged in, will be served by the same pod for subsequent requests. What happens, if this pod dies? Does the user have to log in again, or can we use a stateless authentication in conjunction with Keycloak to prevent him from that?
Again, session management: In the video, you discuss that you don’t recommend serializing session data due to very good reasons. When you implement rolling updates for Flow applications in Control Center, how can you ensure a smooth transition for user sessions from a dying pod to a new pod, without interfering the user?
There are a couple of interesting features you could add to Control Center, as Joonas mentioned with supporting RAG. One features that comes to my mind, is to connect Control Center to Git and let Control Center create the Production Build and Docker Image of my Flow or Hilla app and then use this image to update an existing deployment of my app.
I’m really looking forward to the test generation. Before Vaadin, I knew how to test drive almost every step of a spring MVC application. Learning how to do that with Vaadin has been a struggle. I really wish there was someone like Ted Young making weekly videos about TDD with Vaadin.
I’m excited about Control Center for user management, but I’ve never used Kubernetes and don’t really even know what it is. I deploy applications to Railway, which is a PAS, and it handles most of that automatically. I’d love to get access to the user management without the Kubernetes stuff.
Thanks for the great set of questions, René! While I’m tempted to dive into answering them myself, I’ve reached out to the Control Center team to provide responses you can rely on with certainty. In the meantime, here’s a link to the Control Center documentation: Control Center | Vaadin Docs
Connecting Control Center to Git sounds like an exciting idea! It could really simplify the DevOps process. An out-of-the-box Continuous Deployment pipeline with build and image management, plus zero-downtime rolling updates and easy rollbacks? Yes, please!
Since Control Center is still in its early days, we’re super excited to hear your feedback and suggestions on how you’d like to see it evolve. Thanks for sharing your ideas, René!
Thanks for the message, Nathan. I’m glad to hear you find Copilot and test generation interesting! And thanks for the suggestion—TDD with Vaadin is definitely a great topic to explore.
Control Center offers a lot of useful features—user management and role-based access control certainly help speed things up with an excellent out-of-the-box experience. Right now, Control Center is designed for Vaadin apps running on Kubernetes, but it’s really valuable to get feedback from developers not using Kubernetes.
Leif presented some great improvements, and I agree—Binder’s writeRecord() is a super helpful addition!
Thanks for your suggestions, Nico! Those are excellent topics for future webinars—Vaadin responsiveness and theming and Vaadin Copilot with Figma are definitely areas we can explore further. In fact, a deep dive into Vaadin Copilot is already planned, and I’m confident we’ll see some really interesting content there.
Regarding responsiveness, have you checked out Matti Tahvonen’s recent blog post and example application on implementing responsive web design in Java? It’s a great resource to get started.
For Vaadin Security together with Spring Security, we’ll likely touch on this in our upcoming webinar on Control Center. Since user management and security are core features of Control Center, it’ll be a great opportunity to dive into that topic.
I hear you on the complexity of theming, especially for non-front-end developers. It’s definitely a challenge, and it’s great to know that you’d value more in-depth content in this area. If your project requires commercial support for theming and design, our Design Services team knows this stuff inside and out and can help accelerate your project!
Thanks for the feedback, Nico—it’s much appreciated!
Most clouds have their own private registries they can pull from.
In this case I did push to DockerHub as I wanted to keep experimenting with different clouds easy (and they all can pull from there as fallback when there is no image in a local registry).
There is also a field called “Image Pull Secret” that is the name of the secret (not the password itself) used for pulling from local registry when authentication is required.
Overall Control Center is tries to help one get started, but in a way that you can take over the wheel at any time and configure something more sophisticated (like autoscaler) when you need it.
We might well add UI for configuring that later on.
I think (but have not validated) that in case of pod failure, Keycloak session is still valid and the next session will be automatically authenticated without manual login. That said, the user session is lost with the usual consequences.
I consider losing the session contents in case of server crash to be a good compromise vs the performance hit and complexity overhead from serialization.
This is done with blue-green strategy: We’ll run the previous version and the new version of the app side-by-side until the old sessions have been drained and the old pods can be turned off.
Implications:
You can push to production frequently without any interruptions to users
While some users are still in the old version, there some overhead from running extra set of serververs at the same time. This is not as bad as it sounds due to total user session memory and cpu load still being the same.
DB upgrades need to be sufficiently backwards compatible
Thank you, @joonaslehtinen, for answering my questions! Once again, I have the impression that Vaadin takes a very holistic and detailed view on things. I work a lot in the field of DevOps, and I’m very curious to see where things go with Control Center. Very exciting.
Looking forwards to hearing your thoughts if you’ll have a chance of trying out Control Center. And recommendations for what we should be building/fixing there next.
I have only just realised that the documentation on Control Center is already very comprehensive. I didn’t expect that for a product that is still at such an early stage. Very well done.
Thanks Simon! Yes, I watched this one. It’s great. Would love to see more like this, especially more where you are building something from start to finish using TDD. There are lots of videos I’ve found on YT showing off a feature or small topic. Not commenting on your video at all, just saying what I’d like to see more of. Most videos have lots of caveats like, “I took this shortcut, but you would never do this in production,” which always leaves us wanting to learn how to do it in production. Very few people are showing development from start to finish of a non-trivial project like Tim.