Integration glossary

Worker pool and horizontal scaling

A worker pool is a group of machines that take work from the same queue. Horizontal scaling means adding capacity by adding machines to the pool.

Scaling up and scaling out

Scaling up means moving the work to a bigger server. It is simple until the biggest available server is not big enough, and every move needs downtime.

Scaling out means adding servers that share the work. Each one takes the next item from a shared queue, so capacity grows a machine at a time, and losing one machine slows the work down without stopping it.

What a pool has to get right

Sharing work across machines brings a few problems a single server never has.

  • Work held by a machine that stops must go back to the queue for the others.

  • One busy job must not take every slot while other work waits.

  • Some work must still happen one item at a time and in order, such as changes to the same customer.

  • Callers need a clear answer when every worker is busy, such as a request to retry shortly.

Worker pools in STRAX

STRAX workflows are deployed to a worker pool, and every worker in the pool shares its runs. Workers share their time fairly between workflows, a workflow can be limited to a number of runs at once, and runs for the same customer can be kept one at a time and in order. An autoscaler can add temporary workers when the queue grows, and when a worker stops, its runs go back to the pool.

See it on your own systems.

A demo takes about an hour and shows these ideas working on systems like yours.