Batch
Last updated: Oct 30, 2026
Rationale
Fluid Attacks uses Batch to run batch processing jobs in the cloud. These are the primary reasons why Fluid Attacks selected it and not other alternatives:
- It is SaaS (software as a service). Thus, Fluid Attacks does not manage infrastructure directly.
- It is free. Thus, Fluid Attacks pays only for the Elastic Compute Cloud (EC2) machines that process the workloads.
- It complies with many certifications from ISO and CSA. Many of these certifications make sure that the entity uses best practices for secure cloud-based environments and information security.
- Fluid Attacks can monitor job logs with CloudWatch.
- The jobs are very resilient. Thus, it is very unusual for them to stop responding. This feature is very important when jobs continue for several days.
- It supports EC2 spot instances, which decrease EC2 costs much.
- You can write all its settings as code with Terraform.
- Fluid Attacks can use Nix to queue jobs easily.
- It supports priority-based queuing. Thus, Fluid Attacks can give priority to jobs when it puts them in one queue or in a different queue.
- It supports automatic retries of jobs.
- It integrates with Identity and Access Management (IAM). Thus, Fluid Attacks can keep a least privilege approach for authentication and authorization.
- Fluid Attacks can monitor the EC2 workers that run jobs with CloudWatch.
Alternatives
GitLab CI
Fluid Attacks used GitLab CI before it implemented Batch. GitLab CI is not for scheduled jobs that continue for many hours. Frequently, jobs stopped responding before they could end. The primary cause was the disconnection between the worker that ran the job and the GitLab CI Bastion. Also, GitLab CI has a limit on the number of schedules for each project, and thousands of jobs put much pressure on the GitLab coordinator and the GitLab CI Bastion. For these reasons, Fluid Attacks moved to Batch.
Buildkite
Pros:
- Buildkite manages the submission of duplicated jobs.
- It gives logging, monitoring, and stability measurements by default.
- Fluid Attacks can separate costs with different queues (related to different deployments).
- It sends notifications to email and other channels by default.
- It supports pipelines by default.
- It has an API to query information about earlier jobs on a pipeline and start new builds. This API is much more flexible than the Batch API.
Cons: It is much more expensive.
Kubernetes Jobs
Read Jobs in the Kubernetes documentation.
Pros: It separates costs better.
Cons: You must start each build manually, because it does not monitor the queue automatically as Batch does.
Usage
Fluid Attacks uses Batch to run these jobs:
- Production background schedules for all its components
- ARM background tasks, for example, cloning roots and refreshing targets of evaluation