---
id: "azure-batch"
type: "component"
kind: "worker"
provider: "azure"
category: "compute"
docs: "https://learn.microsoft.com/en-us/azure/batch/batch-technical-overview"
url: "https://localhost:3000/catalogue/components/azure-batch"
---

# Azure Batch

Managed pools of compute nodes that run large parallel and HPC job workloads.

| | |
|---|---|
| Provider | [azure](https://localhost:3000/catalogue?provider=azure) |
| Kind | [Worker](https://localhost:3000/catalogue/kinds/worker) |
| Category | Compute |
| Official docs | [https://learn.microsoft.com/en-us/azure/batch/batch-technical-overview](https://learn.microsoft.com/en-us/azure/batch/batch-technical-overview) |

## Properties

| property | type | values | required | kind default | this component |
|---|---|---|---|---|---|
| `accelerator` | enum | `none`, `gpu`, `asic` | no | "none" | **"none"** |
| `autoscalePool` | boolean | — | no | false | inherited |
| `concurrency` | integer | — | no | — | inherited |
| `fanoutStrategy` (advanced) | enum | `none`, `push`, `pull`, `hybrid` | no | "none" | inherited |
| `fanoutThreshold` (advanced) | integer | — | no | — | inherited |
| `idempotent` | boolean | — | no | false | inherited |
| `instances` | integer | — | no | — | inherited |
| `managed` | boolean | — | no | false | **true** |
| `rateControl` (advanced) | enum | `none`, `fixed`, `aimd` | no | "none" | inherited |
| `schedule` | string | — | no | — | inherited |
| `spotNodes` | boolean | — | no | false | inherited |
| `tightlyCoupled` | boolean | — | no | false | inherited |
| `trigger` | enum | `queue`, `stream`, `schedule`, `batch`, `manual` | yes | — | **"batch"** |

Bold values are the ones this component pins.

## Rules that apply · 3

### Push fan-out without a celebrity threshold `push-fanout-without-celebrity-path` (warning)

- Page: https://localhost:3000/catalogue/rules/push-fanout-without-celebrity-path.md
- Why: Pure push fan-out over a social graph is brutal at the tail: one post from an account with millions of followers becomes millions of cache writes. A follower threshold above which readers merge at read time bounds that write amplification.
- Applies to: every node of kind worker
- Message: Worker '{{node.id}}' pushes fan-out over a social graph with no fanoutThreshold. Declare a follower threshold above which timelines are merged at read time.

It fires when:

- all of these hold:
  - the node's `fanoutStrategy` is "push"
  - the node's `fanoutThreshold` has no value
  - the design contains a node of kind graph-database

### Shared worker pool across queues `shared-worker-pool-across-queues` (warning)

- Page: https://localhost:3000/catalogue/rules/shared-worker-pool-across-queues.md
- Why: One worker pool consuming several queues lets a slow or poisoned queue starve the others. That is precisely what the design's per-queue isolation requirement forbids.
- Applies to: every node of kind worker
- Message: Worker '{{node.id}}' consumes more than one queue while the design requires per-queue isolation. Give each queue its own worker pool.

It fires when:

- all of these hold:
  - the node has more than 1 incoming edge from a queue
  - the design requirement `isolation.perQueue` is true

### Stateful node without zone redundancy `stateful-node-without-zone-redundancy` (error)

- Page: https://localhost:3000/catalogue/rules/stateful-node-without-zone-redundancy.md
- Why: A stateful compute node pinned to exactly one availability zone disappears with that zone, and its state goes with it. Nodes inside a cell are exempt, because there the cell is deliberately single-zone and redundancy comes from the other cells.
- Applies to: every node in category compute
- Message: Stateful node '{{node.id}}' lives in exactly one availability zone. A zone outage takes its state with it.

It fires when:

- all of these hold:
  - the node's `stateless` is false
  - the node sits inside exactly 1 availability-zone group
  - this does not hold:
    - the node sits inside at least one cell group

## Other products of the same kind · 82

- [SchedulerX](https://localhost:3000/catalogue/components/alibaba-schedulerx.md) `alibaba-schedulerx` — alibabacloud
- [Amazon AppFlow](https://localhost:3000/catalogue/components/aws-appflow.md) `aws-appflow` — aws
- [AWS B2B Data Interchange](https://localhost:3000/catalogue/components/aws-b2b-data-interchange.md) `aws-b2b-data-interchange` — aws
- [AWS Batch](https://localhost:3000/catalogue/components/aws-batch.md) `aws-batch` — aws
- [AWS Glue DataBrew](https://localhost:3000/catalogue/components/aws-databrew.md) `aws-databrew` — aws
- [AWS DataSync](https://localhost:3000/catalogue/components/aws-datasync.md) `aws-datasync` — aws
- [AWS Deadline Cloud](https://localhost:3000/catalogue/components/aws-deadline-cloud.md) `aws-deadline-cloud` — aws
- [AWS Entity Resolution](https://localhost:3000/catalogue/components/aws-entity-resolution.md) `aws-entity-resolution` — aws
- [Amazon EventBridge Scheduler](https://localhost:3000/catalogue/components/aws-eventbridge-scheduler.md) `aws-eventbridge-scheduler` — aws
- [AWS Fault Injection Service](https://localhost:3000/catalogue/components/aws-fis.md) `aws-fis` — aws
- [AWS Glue crawler](https://localhost:3000/catalogue/components/aws-glue-crawler.md) `aws-glue-crawler` — aws
- [AWS Glue for Ray job](https://localhost:3000/catalogue/components/aws-glue-ray-job.md) `aws-glue-ray-job` — aws
- [AWS Application Migration Service](https://localhost:3000/catalogue/components/aws-mgn.md) `aws-mgn` — aws
- [Amazon MSK Connect](https://localhost:3000/catalogue/components/aws-msk-connect.md) `aws-msk-connect` — aws
- [Amazon SageMaker AI Training Job](https://localhost:3000/catalogue/components/aws-sagemaker-training-job.md) `aws-sagemaker-training-job` — aws
- [AWS Systems Manager](https://localhost:3000/catalogue/components/aws-systems-manager.md) `aws-systems-manager` — aws
- [AWS Thinkbox Deadline 10](https://localhost:3000/catalogue/components/aws-thinkbox-deadline.md) `aws-thinkbox-deadline` — aws
- [AWS Glue job](https://localhost:3000/catalogue/components/glue-job.md) `glue-job` — aws
- [Azure Automation](https://localhost:3000/catalogue/components/azure-automation.md) `azure-automation` — azure
- [Azure Chaos Studio](https://localhost:3000/catalogue/components/azure-chaos-studio.md) `azure-chaos-studio` — azure
- [Azure Data Factory](https://localhost:3000/catalogue/components/azure-data-factory.md) `azure-data-factory` — azure
- [Azure Data Share](https://localhost:3000/catalogue/components/azure-data-share.md) `azure-data-share` — azure
- [Azure Database Migration Service](https://localhost:3000/catalogue/components/azure-database-migration-service.md) `azure-database-migration-service` — azure
- [Microsoft Entra Connect Sync](https://localhost:3000/catalogue/components/azure-entra-connect-sync.md) `azure-entra-connect-sync` — azure
- [Microsoft Graph Data Connect](https://localhost:3000/catalogue/components/azure-graph-data-connect.md) `azure-graph-data-connect` — azure
- [Azure Storage Mover](https://localhost:3000/catalogue/components/azure-storage-mover.md) `azure-storage-mover` — azure
- [Azure Update Manager](https://localhost:3000/catalogue/components/azure-update-manager.md) `azure-update-manager` — azure
- [Browser Run](https://localhost:3000/catalogue/components/cloudflare-browser-run.md) `cloudflare-browser-run` — cloudflare
- [Cloudflare Snippets](https://localhost:3000/catalogue/components/cloudflare-snippets.md) `cloudflare-snippets` — cloudflare
- [Cloudflare Zaraz](https://localhost:3000/catalogue/components/cloudflare-zaraz.md) `cloudflare-zaraz` — cloudflare
- [Airbyte](https://localhost:3000/catalogue/components/airbyte.md) `airbyte` — default
- [Airflow DAG](https://localhost:3000/catalogue/components/airflow-dag.md) `airflow-dag` — default
- [Chaos Mesh](https://localhost:3000/catalogue/components/chaos-mesh.md) `chaos-mesh` — default
- [Chunkr](https://localhost:3000/catalogue/components/chunkr.md) `chunkr` — default
- [Container worker](https://localhost:3000/catalogue/components/container-worker.md) `container-worker` — default
- [Cron job](https://localhost:3000/catalogue/components/cron-job.md) `cron-job` — default
- [Daytona](https://localhost:3000/catalogue/components/daytona.md) `daytona` — default
- [E2B](https://localhost:3000/catalogue/components/e2b.md) `e2b` — default
- [Embulk](https://localhost:3000/catalogue/components/embulk.md) `embulk` — default
- [Fan-out daemon](https://localhost:3000/catalogue/components/fanout-daemon.md) `fanout-daemon` — default
- and 42 more: https://localhost:3000/catalogue/kinds/worker.md

## Use it in a design

```yaml
nodes:
  - { id: "azure-batch", component: "azure-batch" }
```

## Source (`component` YAML, verbatim)

```yaml
# yaml-language-server: $schema=../../schema/component.schema.json
# Azure Batch: a managed scheduler that creates pools of compute nodes and runs job tasks on them,
# with no scheduler software to install ("Azure Batch runs large parallel jobs in the cloud").
# Spot nodes, pool autoscale and tightly coupled MPI jobs are all opt-in pool configuration.
schemaVersion: "1"
type: "component"
id: "azure-batch"
kind: "worker"
provider: "azure"
docs: "https://learn.microsoft.com/en-us/azure/batch/batch-technical-overview"
defaults:
  managed: true
  trigger: "batch"
  accelerator: "none"
properties:
  spotNodes:
    type: "boolean"
    default: false
  autoscalePool:
    type: "boolean"
    default: false
  tightlyCoupled:
    type: "boolean"
    default: false
```

Human page: https://localhost:3000/catalogue/components/azure-batch
