Workers are autonomous processes that run one script at a time using the entire cpu and memory available to them. They are at the basis of getOperate’s architecture as run the jobs. The number of workers can be horizontally scaled up or down depending on needs without any overhead. Each worker on getOperate can run up to 26 million jobs a month, where each job lasts approximately 100ms.
WORKER_TAGS
) and scripts or flows, so that the workers listen to specific jobs queues.
WORKER_GROUP=<name_of_worker_group>
for it to automatically join its corresponding worker group.
getOperate’s responsibility is not to spawn the worker itself but to play well with existing service orchestrator such as Kubernetes, ECS, Nomad or Docker Compose, and any IaC. In those, you define the number of replicas (which can be auto-scaled up or down), the resource to allocate to those workers and the WORKER_GROUP
passed as env.
Upon start, those workers will automatically join their worker group and fetch their configurations (including init scripts). They will also listen for changes on the worker group configuration for hot reloading.
Here is an example of a worker group specification in docker-compose:
deno
: The default worker group for deno scripts.python3
: The default worker group for python scripts.go
: The default worker group for go scripts.bash
: The default worker group for bash scripts.powershell
: The default worker group for powershell scripts.dependency
: Where dependency jobs are run.flow
: The default worker group for executing flows modules outside of the script steps.hub
: The default worker group for executing hub scripts.bun
: The default worker group for bun scripts.other
: Everything else.Reset to all tags minus native ones
will reset the tags of default worker group to a given worker group.
The tags of native worker group are:
nativets
: The default worker group for rest scripts.postgresql
: The default worker group for postgresql scripts.mysql
: The default worker group for mysql scripts.mssql
: The default worker group for mssql scripts.graphql
: The default worker group for graphql scripts.snowflake
: The default worker group for snowflake scripts.bigquery
: The default worker group for bigquery scripts.mssql
: The default worker group for mssql scripts.Reset to native tags
will reset the tags of native worker group to a given worker group.
Button Reset to all tags
will reset the tags of default and native worker group to a given worker group.
To make custom tags available from the UI, go to the dedicated “Workers” tab on the workspace and click on the “Assignable Tags” button:
It is possible to restrict some tags to specific workspace using the following syntax:
gpu
tags.
WORKER_TAGS
:
$workspace
, it will be replaced by the workspace id corresponding to the job. This is especially useful to have the same script deployed to different workspace and have them run on different workers.
With the following assignable tag:
dev
, staging
, prod
and the worker groups: normal-dev
, normal-staging
, normal-prod
. The same script wih the tag normal-$workspace
will run on the corresponding worker group depending on the workspace it is deployed to. This enable to share the same control plane but use workers with different network restrictions for tighter security.
Last, if the tags contain $args[argName]
(e.g: foo-$args[foobar]
) then the tag will be replaced by the string value at the arg key argName
and thus can be fully dynamic.