Auto-scaling support

Xperience projects can distribute computing among multiple applications. Each application increases the number of requests the project can handle, allowing you to scale performance as necessary. You can also use this feature to increase availability – if one of the servers hosting the project stops working, the other servers ensure the project continues running normally.

Auto-scaling ensures the following configuration and data is automatically synchronized between all applications:

The following image illustrates the structure of a scaled environment:

Auto-scaling schema

If you update a page or upload a file using server 192.168.1.2, the other servers usually wouldn’t know about this change. However, the auto-scaling feature ensures all servers are notified and perform an appropriate action in response – clearing the cache or copying the file to their local file system in this case. This is because all auto-scaled instances are connected to the same project database, which is used by Xperience to store and retrieve the necessary synchronization metadata.

Scale Xperience applications

SaaS environment

For projects deployed to the SaaS environment, no configuration is necessary. The number of available instances depends on your license tier. When the load increases to peak levels in the production environment, an additional instance is temporarily added to ensure load balancing. One auto-scaling instance is available across all tiers. If more instances are required, they can be purchased through a custom service plan.

Self-managed cloud hosting

Xperience auto-scaling is also compatible with other third-party cloud hosting providers, such as Microsoft Azure, that provide their own auto-scaling solutions. Deploy the project to Azure Web Apps or Azure Virtual Machines as you would any other application and use the scaling functionality inside Azure Portal.

Self-managed on-premise hosting

For self-managed projects, auto-scaling is enabled by connecting all running applications to the same database.

  1. Create separate copies of your Xperience application.
  2. Open an application’s configuration file (appsettings.json by default).
  3. Check that CMSConnectionString points to the same database for all applications.
  4. Deploy and run all applications.

Xperience automatically recognizes all running applications connected to the project’s database and synchronizes the necessary information between them.