How about full cluster support for signals?

With Vaadin 25.1.0 released already several minutes ago, it’s time to start thinking about future releases. One of the things related to signals that we didn’t do for Vaadin 25.1 was full clustering support.

You can already use signals for local UI state also in a cluster but there’s no support for sharing state between users. This is because the users might be connected to separate nodes in that cluster. Session serialization is also a challenge for shared signals since there are indirect references from one session to any other session with which state is shared. This means that serializing one session might lead to accidentally also serializing other sessions, along with their transitive “dependencies”. To prevent such surprises in production, we have made it impossible to serialize shared signal instances for now. Local signals are serializable already in Vaadin 25.1.

There’s a PRD issue that suggest an architecture for full clustering support. I encourage anyone interested in this feature to have a look and let us know if there’s anything there that seems off.

In addition to the architectural design, there’s also two specific aspects where we’d like input from the community:

  • How important would this feature be? This seems to be an “enterprise” feature since simpler systems would hopefully not need this kind of clustered deployment. This means that the feature might not be particularly important for most users but there might be a subset of users for whom it would be very important. Please let us know so that we can prioritize accordingly!
  • For those who want this functionality, what existing communication infrastructure do you already have that might be appropriate for this case? Some high-level requirements and examples can be found in the PRD.