In order to have a good user experience, we recommend to deploy Flowster Studio components on a shared environment with system resources close to recommended or higher.
Flowster Studio components are grouped into three clusters:
- Engine: contains the Rest API (Micro services based), Platform Health (Logging component), Compatibility (Utility component for .NET Framework), and Scheduling (Component which handles delayed executions)
- Execution: contains the Execution Agent
- Clients: contains Web (Portal & Administrator), Web Apps services
Flowster Studio components can be deployed as follows:
- 2 Flowster Studio - Engine component on 2 different servers using the same Flowster Studio database (1 main engine and 1 additional engine)
- 2 Flowster Studio - Execution Agent component on 2 different servers using the same Flowster Studio database (for a better performance we recommend to use dedicated servers, different than the Flowster Studio - Engine servers)
- 2 Flowster Studio - Portal component (for a better performance we recommend to use dedicated servers if the traffic caused by the number of users is high)
High Availability & Load Balancing
Load balancing is the process of distributing network traffic across multiple servers. This ensures no single server bears too much demand. By spreading the work evenly, load balancing improves application responsiveness. It also increases availability of applications and websites for users. Another advantage of using a load balancer is to achieve High Availability in the case of one system going down the other additional servers will take the load and the system will still be available for the users.
Any Flowster Studio component with an open endpoint can be load balanced. We recommend to use load balancers for Flowster Studio - Engine servers which usually are under heavy load and for the Web Clients if the traffic caused by the number of users is high.
To summarize, the only components which do not expose an endpoint and cannot be load balanced are the Scheduling, Execution Agent services and the Designer application. All other components can have a load balancer in front to ease the traffic towards those specific components.
NOTE:
The Flowster Studio - Execution Agent component cannot be load balanced directly as it does not have an open port however you can load balance the Logging component to which the Execution Agent connects which assures load balancing for the workflow executions. Another option to obtain both HA and LB is by installing multiple agents to help the execution load and send the executions to an appropriate agent based on the internal Score from the workflow queue mechanism.
Scalability
Scaling is when you increase the number of processing machines (computers, processors, servers, etc.) to increase processing power. To scale horizontally (or scale out) means to add more nodes to a system, such as adding a new computer to a distributed software application.
Flowster Studio clusters can be scaled in order to achieve optimal performance. For example multiple engines can be installed using the same database in order to split the load if there are many queries which need to be executed. Multiple Execution Agents can be installed in order to execute more workflows simultaneously, or in different environments and last but not least multiple clients (Portals) can be installed and connected to a load balancer in order to split the load if a large number of users want to use the client at the same time.
Execution Agent settings
There are two settings configurable for execution agents that impact the workflow execution process in Flowster Studio:
- TerminateHangingWorkflows setting - if set to "true" it will terminate the execution of started workflows in the case of an Execution Agent service failure (e.g. the service stopped, the server was restarted). The Execution Status of the workflows will be updated to Terminated when the Execution Agent service is available again:
- RunningWorkflowsLimit setting - this option limits the number of workflow executions that can be performed in parallel. By default it is set to 10, but is configurable per execution agent (only workflows with Execution Status Started/Running are included in the count):
NOTE: this setting will be added to the existing execution agents during the upgrade. If an execution agent is not upgraded, it will not contain this setting, therefore no limitation for the number of parallel executions will be taken into consideration.
To change the default configurations for these options:
- Navigate to <INSTALL_DIR>:\Program Files\Flowster Solutions\Flowster Studio\NewExecutionAgent
- Open ExecutionAgent.exe file and search the "AppSettings" section
- Change the key value (TerminateHangingWorkflows accepted values are "true" or "false" )
- Save changes
- Restart FlowsterNewExecutionAgentService windows service