Batch

Last updated: Feb 9, 2026


Rationale

We use Batch for running batch processing jobs in the cloud. The main reasons why we chose it over other alternatives are the following:

Alternatives

GitLab CI

We used GitLab CI before implementing Batch. We migrated because GitLab CI is not intended to run scheduled jobs that take many hours, often resulting in jobs becoming unresponsive before they could finish, mainly due to disconnections between the worker running the job and the GitLab CI Bastion. On top of this, GitLab CI has a limit on the number of schedules per project, and running thousands of jobs puts a lot of pressure on the GitLab coordinator and the GitLab CI Bastion.

Buildkite

Pros:

  • Buildkite handles submission of duplicated jobs.
  • Gives us logging, monitoring, and stability measurements out of the box.
  • We can separate costs by having different queues (associated with different deployments).
  • Notifications out-of-the-box to email and others.
  • Support pipelines out-of-the-box.
  • They have an API to query information about past jobs on a pipeline and trigger new builds, which is much more flexible than Batch's API.

Cons: It is much more expensive.

Kubernetes Jobs

See Jobs in Kubernetes documentation.

Pros: It allows better separation of costs.

Cons: It requires manually kick-starting a build, because it doesn't listen automatically to the queue as Batch does.

Usage

We use Batch for running

On this page