Jmix application scaling options similar to CUBA

There is no such topic in Jmix Documentation similar to CUBA Scaling topic and my question is about scaling backoffice UI part independently from the core part of application due to the heavy consumption of resources by Vaadin Components / Sessions.

I guess that part of the documentation will come on a later release, for now you can refer to the Kubernetes deployment docs that cover that (with Hazelcast) for some clues: https://docs.jmix.io/jmix/deployment/k8s.html#hazelcast-configuration

Thanks for the answer, Marc!
As far as I understand, in the example with k8s, the entire application is scaled, without division into layers.
Hopefully it will appear in future releases. So far I do not even suggest how to properly divide into different deployment units

There is no physical separation between layers in Jmix, so there is no out-of-the-box option for deploying UI separately. If you need a set of functionality not affected by the UI load, there is a standard approach - create a separate application and make it available through an API.

Regards,
Konstantin

Hi guys!

It would be nice to have a module template without a ui libraries (service-module), or even a multi-module application.

Regards,

Thomas

Good idea, we’ll do it.
Meanwhile, you can easily create such an application from the standard “Single-module application” template:

  • In build.gradle, remove all starters having “ui” in their name.
  • Add REST API add-on
  • In FullAccessRole, remove @ScreenPolicy and @MenuPolicy annotations and imports
  • Remove *.screens.* package and all its contents in both src/main/java and src/main/resources

That’s it, you can start the app and connect to it through the REST API as described in the docs.

Regards,
Konstantin

1 Like

Thanks, Konstantin, we will try this solution.