Capacity planning is the process of determining the resource capacity needed to meet anticipated production requirements. In most organizations, capacity planning starts from a foundational baseline capacity. Use cases that include various possible increased production scenarios are considered, and those are most likely accounted for in expansion planning.
A simple manufacturing example is a baseline case of a single machine being able to make 100 items in 1 hour. Still, if demand increases to 300 items per hour, how many new machines (plus the space, workforce, utilities, storage, packaging, and everything else that entails) will there be? In this case, the simple answer is three machines. Workflow automation infrastructure planning similarly requires you to define the following:
- how many processes do you need to run
- how fast you need to run them
- how many processors, how much memory, etc. (# machines)
If you need to process more processes in shorter time periods using the infrastructure that you initially designed for baseline estimates, then more (or better, faster, etc.) infrastructure capacity must be added.
The baseline infrastructure for FlowWright includes two servers: 1) an application server and 2) a database server. Most organizations manage and share databases within a single database server. If you anticipate that your primary database server will be overtaxed due to processing requirements, move the FlowWright database to a server with enough resources.
The baseline application server for FlowWright runs on 8GB memory, a Quad-core CPU, and 100 GB storage. This configuration is the minimal configuration for the FlowWright application server. When it comes to workflow capacity planning, the number of workflow instances being processed and their complexity, as well as throughput requirements, will dictate whether you want to scale up application server capacity and speed.
Sometimes, the amount of work must be processed within a period. Let’s say 10,000 instances need to be processed in 1 hour, and you determine the application server does not have enough resources to process 10,000 workflow instances. You can scale up your processing infrastructure in one of two ways.
1) resources such as # of CPUs and memory can be increased in a virtual or cloud environment. Or 2) if the application server runs on an on-premises or hosted physical server, then FlowWright can be configured with another application server to perform distributed processing to manage your increased load.
Sometimes, capacity planning is tricky to determine because the amount of work and how it is executed may be complex and unpredictable. For example, let’s say you have a process with 87 steps, and after processing the 3rd step, the workflow often goes to sleep - sometimes for weeks or months. In this case, you might launch 1 million instances of a process, but the engine has very little work to do for each workflow instance. Resources required to process 87 complex steps vs. three simple steps differ significantly.
Sometimes, the processing load is primarily based on integration, and other systems do most resource-intensive computing. For example, one FlowWright customer processes millions of prescriptions daily - but most of the work performed on each prescription is done on the client’s application server rather than FlowWright's workflow server. For example, one of the operations performed on each prescription is optical character recognition (OCR), which is CPU- and memory-intensive. OCR operations are handed off to an OCR server to perform using FlowWright asynchronous steps. FlowWright asynchronous steps make REST API calls to other systems to perform the work and then go to sleep, consuming 0 resources from FlowWright infrastructure. Once the OCR server completes the OCR operation, the OCR server calls FlowWright using the FlowWright API to continue processing the workflow instance. FlowWright drives the process and performs orchestration across systems - but consumes little resources directly.
Capacity planning, like data science, can be aided by one of the many software solutions/tools built specifically for this purpose. When capacity planning for workflow processes, the following variables must be included in the computations:
- # of workflow instances processed
- # of steps continuously processed
- How much processing is performed by specific complex steps
- Amount of processes that need to get processed within a period
Sometimes, sizing processing infrastructure is also influenced by the number and complexity of process decisions. Some processes may involve complex calculations that determine a workflow's path. Some simple choices, for example, a process might have a decision that determines whether to OCR the incoming prescription, which also has enormous processing implications. If the process has to OCR, then more processing is required than not having to OCR.
Capacity planning is an art. Some customers who automated their back-end server processes have already gone through this exercise, seen their business soar, and had to increase resources on their physical servers and virtual environments. If you need resource planning help, we are here to help. Our resources can analyze your environment, processes, and steps and recommend proper infrastructure requirements.
If you have questions about determining your capacity for workflow automation, let's talk!