Skip to main content

Balanced Application Deployment on Highly Loaded OutSystems Farms

OutSystems

Balanced Application Deployment on Highly Loaded OutSystems Farms

This guide presents the steps required to successfully deploy an Application/Solution onto a highly loaded OutSystems Platform farm environment. The deployment process is balanced throughout the existing front-ends, guaranteeing no downtime for the applications.

Deploying applications in a highly loaded farm environment 

In this procedure, a set of front-ends is disabled from the load balancer, thus not receiving new requests. The applications are then deployed to the front-ends which are not receiving traffic.

When the deployment is finished, the load balancer is configured to only redirect traffic to the frontends which already have the new applications, while the applications are deployed to the remaining front-ends.

Once all front-ends are running the new versions of the applications, the load balancer is configured to redirect traffic among all of them. By performing an incremental deployment, this process ensures no downtime. 

In order to use this procedure the servers must be running at least the OutSystems Platform Server version 4.2 and, in case you are running the J2EE stack, the servers must be running at least the OutSystems Platform Server version 4.2.4.79. 

This procedure requires operations to be executed in Service Center and at Operating System level (in the services management console). Additionally, it also assumes the existence of a network load balancing mechanism for distributing the application traffic between the front-ends.

In order to identify the several server profiles in the farm environment, please consider the following diagram, where the users access the applications through a load balancing mechanism.

During the deploy procedure we will identify each of the front-end as updating or loaded:

  • An updating front-end will not have users accessing the Applications but will allow the deployment process to execute;
  • A loaded front-end will have users accessing its applications but will not allow the Application deployment process to execute. 

Note that, if the environment uses Zones for application segmentation, you must consider updating and loaded front-end profiles in each Zone. In that case, think of each Zone as if it were a distinct environment. 

With this definition in mind, choose your updating and loaded front-ends. To improve the reliability of the procedure we recommend that the sets of updating and loaded front-ends are defined before the procedure, and that the procedure is annotated to have actual front-end/machine names so that it can be referenced during the execution of the deployment.

To execute the deployment, use the following steps: 

Step Description Server

1

Disable the OutSystems Scheduler Service

  • .NET Stack:
    • In Windows’ Services management console (services.msc) stop and disable the OutSystems Scheduler Service. Confirm that the service stays stopped and disabled.
  • J2EE Stack:
    • In a command line, as user root, run the following command:
      # /opt/outsystems/platform/serviceconfigurator.sh -interactive
      and configure the OutSystems Scheduler Service to be disabled. Reply ‘Y’ to all services that are to be enabled, ‘N’ to all that are to be disabled;
    • The OutSystems Scheduler Service will be stopped automatically. Confirm that with the following command:
      # service outsystems status SCHEDULER
      The output must be similar to:
      OutSystems Scheduler Service                      - DISABLED

Do not start this service until instructed to do so.

Updating Front-ends and Loaded Front-ends 

2

 

Set traffic on the load balancer to the loaded front-ends (remove the updating ones)

  • Access your Load Balancing management tool and remove application traffic from the updating front-ends.

Load Balancer

3

 

Disable deployment to loaded front-ends in Service Center

Access the environment’s Service Center and login with administrative privileges;

Go to Administration -> Front-end Servers. For each loaded front-end access its details and press the Disable button.

Loaded Front-ends

4

Publish your Application in Service Center

  • Access the environment’s Service Center directly on an updating environment and login with publishing privileges;
  • Upload and publish your eSpace/Solution through the proper Service Center factory flow;
  • Wait until publishing ends successfully. 

Any Updating Front-end 

5

Test your application on the updating front-ends

  • Access the applications on your updating front-ends to confirm their availability

Updating Front-ends 

6

Set traffic on the load balancer to the updating front-ends

  • Access your load balancing management tool;
  • Add the updating Front-ends to start receiving application traffic;
  • Remove the loaded front-ends so that they stop receiving application traffic. 

Load Balancer 

7

Start the OutSystems Scheduler Service

  • .NET Stack:
    • In Windows Services management console (services.msc), configure the OutSystems Scheduler Service’s startup type as Automatic and then start it.
  • J2EE Stack:
    • In a command line, as user root, run the following command:
      # /opt/outsystems/platform/serviceconfigurator.sh -interactive
      and configure OutSystems Scheduler Service to be enabled. Reply ‘Y’ to all services that are to be enabled, ‘N’ to all that are to be disabled;
    • Start OutSystems Scheduler Service with command:
      # service outsystems start SCHEDULER
    • Confirm the service’s status with the following command:
      # service outsystems status SCHEDULER
      The output must be similar to:
      OutSystems Scheduler Service                      - RUNNING 

Updating Front-ends

8

Restart the OutSystems Deployment Services

By restarting the OutSystems Deployment Services, you ensure all applications are immediately deployed to the loaded front-ends.

  • .NET Stack:
    • In Windows’ Service management console (services.msc), restart the OutSystems Deployment Service.
  • J2EE Stack:
    • In a command line, as user root, run the following command:
      # service outsystems restart DEPLOYER 

Loaded Front-ends
 

9

Access Service Center

  • In the Monitoring -> Platform Monitoring page, click the detail link for the Deployment service in each loaded front-end. Wait until the status of all threads is ‘Sleeping’. When this happens, the deployment process has finished to the loaded front-ends. 
     

Loaded Front-ends 
 

10
 

Reset Traffic on the load balancer to all front-ends

  • Access your load balancing management tool and add the loaded front-ends to start receiving application traffic again. 
     

Load Balancer 
 

11
 

Start the OutSystems Scheduler Service

  • .NET Stack:
    • In Windows’ Services management console (services.msc), configure the OutSystems Scheduler Service’s startup type as Automatic and then start it.
  • J2EE Stack:
    • In a command line, as user root, run the following command:
      # /opt/outsystems/platform/serviceconfigurator.sh -interactive
      and configure the OutSystems Scheduler Service to be enabled. Reply ‘Y’ to all services that are to be enabled, ‘N’ to all that are to be disabled.
    • Start the OutSystems Scheduler Service with the following command:
      # service outsystems start SCHEDULER
    • Confirm the status with the following command:
      # service outsystems status SCHEDULER
      The output must be similar to:
      OutSystems Scheduler Service                      ​ - RUNNING 

Loaded Front-ends 

More Information

Check the OutSystems Platform installation guide to learn more about requirements and recommended steps to install OutSystems Platform.