SYSPRO Web UI Scalability Solution - SYSPRO 8 2021 R2
The scalability and performance of the SYSPRO Web UI (Avanti) offering has been bolstered by the release of the SYSPRO Application Gateway service that, together with Microsoft Windows containers, allows a much larger number of users to run on a single application server.
Therefore, this article positions the considerations of how to scale the Web UI, as well as how to deploy and setup your system for optimal performance, robustness, and scalability – especially once you exceed 30-35 users.
Overview
The new SYSPRO Application Gateway solution, managing Web UI Load Balancing using containerization, provides the scalability required for you to take advantage of the SYSPRO Web UI.
The use of SYSPRO Web UI means that you don't require a separate Desktop Client PC for each user, nor a set of Terminal Servers, helping to reduce cost and simplify administration.
SYSPRO 8 2022 is the first version that has the SYSPRO Web UI scalability solution using containers built-in to the release.
See the SYSPRO Web UI Scalability Solution for SYSPRO 8 2022 article for information relating to the SYSPRO 8 2022 release.
However, this solution is available to be retrofitted for sites currently running SYSPRO 8 2021 R2. Therefore, this article contains the information required for deploying the solution in the previous release.
One of the key requirements for the SYSPRO Web UI scalability solution using containers is that the Host computer must be running Windows Server 2022.
The reasons for this include:
-
The Web UI Container includes what is known as a Server Image, and the Web UI component requires the latest image that is only supported on Windows Server 2022.
-
Earlier Windows Server versions don't fully support the technology required to run the SYSPRO Web UI at scale.
Important Licensing and Cost Considerations - Windows Server 2022 Standard vs. Datacenter edition:
The SYSPRO Web UI Scalability solution using containers allows you to configure the number of containers providing the level of scalability required.
Our validation has shown that you may easily have 10 or 20 containers (or more) running concurrently, depending on the number of users required.
-
The Windows Server 2022 Standard Edition supports an unlimited number of containers - however, there is a licensing cost depending on your Microsoft commercial agreement.
-
The Windows Server 2022: Datacenter Edition includes a license that supports an unlimited number of containers on a single server without additional license costs.
The additional, initial cost of the Datacenter edition allows flexibility regarding the number of containers without additional costs – especially if you later decide to add more Web UI users.
We have used Windows Server 2022: Datacenter Edition in all our testing of this solution.
It is up to you to decide the most cost-effective deployment and licensing, although the Datacenter Edition would be our preferred option.
SYSPROs validation of the Web UI scalability solution using containers took the form of two base server configurations:
The number or users represents the number of unique Web UI processes running on the app server.
Server A - 100 user configuration
-
Azure server: Standard D16s v5
-
15 Containers
-
8 Cores (16 virtual CPUs) Intel Xeon – Platinum 8370C 2.80GHZ
-
64 GB RAM
Server B - 200 user configuration
-
Azure server: Standard D32s v5
-
20 Containers
-
16 Cores (32 virtual CPUs) Intel Xeon – Platinum 8370C 2.80GHZ
-
128 GB RAM
In all cases, the validation had a target CPU load of 40-70% with a maximum of 90% for short intervals.
The number of containers to be configured should be based on the planned number or Web UI users.
For guidelines on how to calculate this, view the How do I determine the number of containers required FAQ within this article.
Background
When SYSPRO 8 was initially released during 2018, the Desktop Client User Interface (Desktop UI) was the standard user interface and an initial version of our user interface using a web browser (Web UI) was made available. Over the past few years, we have focused on providing equality between these two user interface styles.
It should be noted that whether you are using the Desktop UI or Web UI, they both use the same underlying interactive business apps and database logic – they have a shared code base so that hotfixes applied to one directly affect the other. In fact, you can have a mix and match of users using whichever is the most appropriate user interface and the logic is the same.
The Desktop UI is a client-server technology relying on the user having access to a dedicated client PC connecting to the host app server, or a Terminal Server connecting to the host app server. Typically, sites have been configured with between 25-30 users per Terminal Server. Meaning that for each additional 25-30 users you would require another Terminal Server to be configured.
The SYSPRO Web UI does not require Terminal Server (nor a standalone client PC) as the browser running on virtually any modern device can be used to connect to the web interface. However, to scale the Web UI does require some additional considerations.
This section has been included for clarity.
When SYSPRO 8 was initially promoted the phrase SYSPRO Avanti was widely used to distinguish the Web Browser user interface from the traditional Windows Rich Client desktop interface.
The word Avanti has been used extensively in promotional, education, help materials and many other places. The word Avanti is visible in some SYSPRO screens and some of the underlying services, applications and even database tables.
However, there has been some confusion in the field regarding Avanti and SYSPRO 8 as if they are different products – which is not the case. They are simply two different user interfaces on the same product with the same functionality.
Many other software solutions have a version that can be accessed by a web browser and an installed application that can run natively on the underlying operating system. They are often very similar in functionality, but the web browser flavor often has a simpler to use interface – especially for novice or occasional users. SYSPRO 8 is the same.
We have decided to start making this clearer by referring to our traditional Windows Client as the Desktop UI and the Web browser interface as our Web UI. It’s important to note that the underlying business logic and database layer are identical – they use a common code base.
Therefore, if you see the word Avanti, is just means our Web UI.
SYSPRO 8 has several user interfaces allowing different entities to take advantage of SYSPRO functionality. The following diagram introduces some of their key components:
Some of the services have been deliberately excluded from this diagram for simplicity.
-
The Desktop Client Users connect via Terminal Server (or Individual Windows PCs) via the SYSPRO 8 Communications Service (not included in the diagram) to the interactive apps on the SYSPRO app server.
-
The interactive apps use business logic and the database layer to handle business transactions or perform simple, add, update, delete and query functions.
-
Custom apps written by third parties, or other SYSPRO components, call the SYSPRO 8 e.net Communications Load Balancer that in turn communicates with Business Objects handing the business functions requested.
-
SYSPRO Web UI users (running a browser on any device) connect to Internet Information Services (IIS) (not included in the diagram) through to the SYSPRO 8 Avanti Initialization Service.
-
The SYSPRO 8 Avanti Initialization Service acts as a broker to load a Web UI instance (i.e. the Web UI).
-
The Web UI components connect to the interactive apps (the same ones as those used by our client-server SYSPRO Desktop client users) from where all business transactions are handled.
Performance when running 30+ instances of the SYSPRO Web UI
By experience and confirmed with extensive testing, this architecture works well with up to about 30-35 users. Beyond this you may start to experience slow-down or intermittent issues.
One of the main reasons for this is that the Web UI component consumes some additional resources, over and above the client-server processes used by the Desktop UI.
Due to this we have developed a container-based solution isolating the Web UI components, thus providing improved scalability, robustness, and performance.
Solution
The SYSPRO Web UI Containerized solution allows the Web UI to run at scale with high performance and robustness.
There are no changes to the way the SYSPRO Installation (including hotfixes) is applied to the SYSPRO Application server when using containers, with the exception of the SYSPRO 8 Avanti Initialization Service (which should instead be installed to the SYSPRO root folder):
-
Each container runs software by mapping (i.e. mounting) to folders on the host VM.
-
When users interact with the SYSPRO Web UI, the network traffic is routed via the SYSPRO Application Gateway service.
-
The SYSPRO Application Gateway contains a load balancer that locates the least loaded Web UI Container and brokers the browser access to that container. Note that each Web UI Container can support many Web UI components.
-
The SYSPRO 8 Avanti Initialization Service (running inside each container) loads an instance of the Web UI component (as normal) which in turn communicates with the interactive app.
This has the advantage that each container has its own set of resources that are being consumed by the Web UI components.
The containers provide isolation from one group of Web UI components to another, allowing a much larger number of Web UI components to be run concurrently on the same underlying SYSPRO Application Server.
Therefore, instead of being limited to 30-35 users, you can have a much larger number of SYSPRO Web UI sessions running on a single app server, both reliably and with good performance.
On a site with a large number of users, you may have as many as 20 or more of these containers.
This diagram shows a single container that will be used to host Web UI components:
-
A Web UI container is created by using a special Windows container image and applying configuration changes to it from within.
-
When a Web UI container is deployed at a site, the parameters (e.g. registry entries relating to the location of the SYSPRO installation) are dynamically injected into the container.
-
In addition, the SYSPRO 8 Avanti Initialization Service is started within the container, ready for users to connect and run the SYSPRO Web UI.
This only applies if the SYSPRO 8 Avanti Initialization Service is installed under the SYSPRO root folder.
Best practice recommendation:
C:\SYSPRO\Services\SYSPRO Avanti Initialization Service
Where C:\SYSPRO indicates the SYSPRO root, under which the core SYSPRO programs and screen sets reside.
The new Application Gateway service endpoint setup option (Setup Options > System Setup > Connectivity) allows you to define the service's endpoint. Any queries related to what users are busy with or to log them out, is then sent to the SYSPRO Application Gateway service, which in turn communicates with the SYSPRO 8 Avanti Initialization Service in the appropriate container.
Conclusion
There is still only a single SYSPRO instance installed on a single App Server.
This keeps the SYSPRO installation as simple as possible:
-
Only a single set of hotfixes need to be applied.
-
There is only one \Base folder.
-
There is only one \Work folder.
You can therefore take advantage of our SYSPRO Web UI at scale with the same confidence as SYSPRO Desktop Client users.
Deployment and Configuration
The containerized solution requires you to install and configure the SYSPRO Application Gateway, as well as configure and instantiate an appropriate number of Web UI Containers.
This section explains how to achieve this:
Before you can install and configure the SYSPRO software, the following hardware and operating system requirements (and their configuration) must be performed or verified:
We recommend using Windows PowerShell to run the various commands.
Your server must be running Windows Server 2022: Datacenter Edition.
Alternatively, if you are running Windows Server 2022: Standard Edition: Please note the potential additional licensing costs, depending on the number of containers and your Microsoft commercial agreement.
The following Microsoft Windows components are required:
-
windowsdesktop-runtime-6.0.8-win-x64.exe
-
aspnetcore-runtime-6.0.4-win-x64
-
dotnet-runtime-6.0.4-win-x64
To install a Windows container, proceed as follows:
-
Open the Server Manager program in Microsoft Windows.
-
Select the Add roles and features option.
The Add Roles and Features Wizard is launched.
-
Once the wizard has launched, verify the prerequisites within the Before you begin screen:
Once you are satisfied that all requirements are met, select Next to continue.
-
From the Select installation type screen, select the Role-based or feature-based installation option:
Select Next to proceed.
-
From the Select destination server screen, enable the Select a server from the server pool option and ensure that the default server (i.e. Microsoft Windows Server 2022 Standard Evaluation) is selected:
Select Next to proceed.
-
From the Select server roles screen, ensure that the default is selected - File and Storage Services (1 of 12 installed):
Select Next to proceed.
-
From the Select Features screen, enable the Containers item as a feature:
Select Next to proceed.
-
From the Confirmation screen, select the Install function to commence with the installation:
-
Once the installation is complete, close the wizard and restart the server:
Before you can use the Microsoft Windows containers, you must install Docker - which SYSPRO uses to create and deploy the containers.
With Docker, you can treat containers as lightweight, modular virtual machines, including the flexibility to create, deploy, copy, and move them from environment to environment, thus helping you to optimize your apps for the cloud.
We recommend using Windows PowerShell to run the various commands.
-
Enter the following command within Windows PowerShell:
CopyINSTALL-MODULE -NAME DOCKERMSFTPROVIDER -REPOSITORY PSGALLERY –FORCE
-
Complete the installation of the NuGet provider package by pressing Y from the keyboard:
-
Enter the following command within Windows PowerShell:
CopyINVOKE-WEBREQUEST -UseBasicParsing "https://raw.githubusercontent.com/microsoft/Windows-Containers/Main/helpful_tools/Install-DockerCE/install-docker-ce.ps1" -o install-docker-ce.ps1
.\install-docker-ce.ps1Please refer to the Microsoft documentation for more information.
-
Once the script executed successfully, you can restart your computer.
-
Confirm the Docker’s installed version by using the following command in Windows PowerShell:
CopyDOCKER – VERSION
-
Confirm that the containers' features are installed by executing the following command in Windows PowerShell:
CopyGET-WINDOWSFEATURE -NAME CONTAINERS
-
To verify that the Docker service is running, execute the following command in Windows PowerShell:
CopyGET-SERVICE DOCKER
Next, the SYSPRO components need to be installed:
-
Only required if the SYSPRO 8 Avanti Initialization Service is currently installed:
Uninstall the SYSPRO 8 Avanti Initialization Service (before running the SYSPRO Installer Application).
By default, this service was previously installed to a location not visible to the containers upon start up. Hence the requirement to uninstall and reinstall the service to a folder that is accessible by the containers.
-
Run the SYSPRO Installer Application on the application server.
-
Install the SYSPRO 8 Avanti Initialization Service under the main SYSPRO Installation.
For example:
C:\SYSPRO\Service\SYSPRO Initialization Service
The SYSPRO 8 Avanti Initialization Service must be installed where the container can access it.
When the container starts, it mounts C:\SYSPRO as a volume and can therefore create an instance of the Initialization Service.
-
Contact your regional support office for assistance with installing the SYSPRO Application Gateway.
This is because the SYSPRO Application Gateway is only available within the SYSPRO Installer Application from SYSPRO 8 2022.
-
Although the required SYSPRO software is included in the SYSPRO 8 2022 release, its only available for SYSPRO 8 2021 R2 in the form of a diagnostic hotfix.
We recommend that you install the latest consolidated hotfix prior to installing this diagnostic hotfix.
To install the diagnostic hotfix, proceed as follows:
-
Select Start from your Windows taskbar.
-
Launch the Command Prompt application.
-
Run the following command:
Copymsiexec /p "https://syspro8install.azureedge.net/syspro-8-2021-r2-hf-diagnostic/DH_118619_1009_011.SYSPRO.8.2021.R2.msp" /qb
-
The SYSPRO Container Controller application allows you to configure your containers (as well as define how many containers you require) to ensure your environment scales correctly.
Application Access
You can access and download the SYSPRO Container Controller application from the following URL:
https://syspro8install.azureedge.net/containerfiles/SYSPRO.Container.Controller.exe
Application Reference Help
The following link provides detailed information on the application's navigation and how it works:
Recommendations
We have determined that the best performance is achieved by calculating 10 instances of the SYSPRO Web UI (Avanti) running per container, with an additional 5 containers to ensure peak performance.
In other words, if you want to run 100 instances of the SYSPRO Web UI (Avanti), you require 15 containers in total:
100 instances ÷ 10 instances per container = 10 containers.
10 containers + 5 extra containers = 15 containers.
Configure your Gateway service details within the Setup Options program in SYSPRO as follows:
-
Within SYSPRO, open the Setup Options program (SYSPRO Ribbon bar > Setup).
-
Navigate to the Connectivity System Setup pane (Setup Options > System Setup > Connectivity):
-
Enable the Use Application Gateway service option.
-
Enter your service endpoint within the Application Gateway service endpoint field.
-
Enter the authentication key that you created during the install of the SYSPRO Application Gateway.
-
Use the Test connection function to ensure that your details are captured correctly and that the service can connect.
-
-
Save your changes and exit the program.
-
Restart SYSPRO.
You can also view and configure this information in SYSPRO by running the Application Gateway Configuration program (Program List > Administration).
You can verify that your system is now configured correctly to use containers by proceeding as follows:
-
Log into the SYSPRO Web UI (Avanti) with two different users.
-
Launch the View Users program (Program List > Utilities).
-
You should see that each user is logged onto a different server name and server ID.
If these columns are not visible, use the field chooser to drag the Server computer name and Server machine name columns onto the listview.
The server details displayed will match some of the containers that were created.
FAQs
We have determined that the best performance is achieved by calculating 10 instances of the SYSPRO Web UI (Avanti) running per container, with an additional 5 containers to ensure peak performance.
In other words, if you want to run 100 instances of the SYSPRO Web UI (Avanti), you require 15 containers in total:
100 instances ÷ 10 instances per container = 10 containers.
10 containers + 5 extra containers = 15 containers.
See the subject Container Configuration earlier in this article for more information.
We recommend limiting the number of instances of the Web UI that each user can access concurrently:
-
The Maximum number of instances allowed setup option (Setup Options > System Setup > System-Wide Personalization) enables you to manage how many instances are allowed for your system.
Each instance of the Web UI consumes the same amount of app server resources:
-
A single Web UI user with two instances, is identical to two Web UI users, each with a single instance.
-
If you allow each user to open two Web UI instances, then each of these is considered a ‘User’ when it comes to scaling.
When users interact with the SYSPRO Web UI (using Windows containers) the network traffic is routed via the SYSPRO Application Gateway.
This service then detects the least loaded Web UI Container and sends a message to the SYSPRO 8 Avanti Initialization Service residing within the selected container. This, in turn, instantiates a Web UI session, just the same as the non-containerized architecture.
The SYSPRO installation (including hotfixes) resides on the underlying host computer (or host VM).
The advantages of this are that there is only a single SYSPRO installed instance, resulting in a simple hotfix process and a common \Work and \Base folder structure.
Terminology
Each container is like a mini-virtual machine, without many of the overheads of a traditional VM.
A container image is a static, lightweight, standalone and executable package of software that includes everything needed to run an application:
-
Executable code
-
Runtime
-
System tools
-
System libraries
-
Settings
This enables it to run an isolated process on information technology (IT) infrastructure.
Copyright © 2024 SYSPRO PTY Ltd.