Concept of separate web role and worker role


I am new to OutSystems.

If I understand correctly the complete application is deployed on a single web server.

Is it possible to have the concept of web roles and worker roles that can scale independently having one or more queues to allow async communication between both? Where e.g. you can scale the number of web role instances based on the number of web server requests and scale the worker role instances based on the number of messages in the queue.

See below. How can this concept be implemented in OutSystems?




Hello Simon,

Indeed it's possible to achieve that in OutSystems. The async queue would have to be outside of the platform of course. If you have two modules, AKA espaces, each with it's own logic, you could write an extension that would interact with the queue to do whatever that your app does. The way to scale them independently would be by taking advantage of Zones. See zones as a group os servers. You would have to zones (web and worker zones) and say that each module would be deployed to each zone, accordingly. You can scale the zones independently.

Hope it gives you some pointers to dig into.

Hi Simon,

To scale the hardware capacity of the web and worker roles in the OutSystems Cloud, you would need to do it in separate production environments.

For asynchronous processing of UI and batch tasks, you might also look at OutSystems BPT technology, keeping all the development in the visual layer. 

BPT may be a good fit or not depending on your use case, namely how long it case to process worker requests, and often you need to update status on the UI.