Answers you can trust, from Codeables

Every page on Codeables is structured and verified — built so people and the AI agents they rely on can trust it. Explore more from the source behind this answer.

Explore Codeables
Verified Source
Data Integration & ELT

How does Airbyte scale horizontally in distributed environments?

Airbyte9 min read

Scaling Airbyte horizontally in distributed environments comes down to one core idea: decoupling control-plane services from data-plane workloads so that each can scale independently. In practice, Airbyte relies on stateless microservices, containerized workers (often orchestrated by Kubernetes), and a job-queue pattern that lets you add capacity simply by adding more worker nodes or pods.

This article walks through how Airbyte scales horizontally, the key architectural components involved, and practical patterns for running Airbyte at scale in modern distributed environments.


Core architecture that enables horizontal scaling

At a high level, Airbyte’s architecture separates into two broad layers:

  • Control plane – API, scheduler, configuration persistence, orchestration logic
  • Data plane – ephemeral workers that actually run sync jobs (connectors)

This separation is what allows Airbyte to handle more workloads by simply provisioning more compute for the data plane, without redesigning the core platform.

Stateless services and horizontal scaling

Most control-plane services in Airbyte are designed to be stateless, meaning:

  • They don’t store user session data or long-lived state in memory
  • All durable state lives in backing services (Postgres, object storage, cache, etc.)
  • Any instance of a service can handle a request

Because of this, you can scale these services horizontally by:

  • Running multiple replicas of each service (e.g., API server, scheduler) behind a load balancer
  • Using Kubernetes Deployments or similar orchestrators to manage replicas and automatic restarts
  • Relying on a shared database and queues to coordinate jobs

As traffic and the number of syncs increase, you scale the control-plane services up and down independently of the data-plane workers.


Job-based execution for distributed workloads

Airbyte models every sync as a job with its own lifecycle. This job-based model is the foundation for horizontal scaling of the data plane.

How jobs enable distributed execution

In a typical distributed deployment:

  1. Scheduler / Worker Manager

    • Periodically evaluates which connections need to run
    • Creates “jobs” and enqueues them in a job queue backed by a persistent store
  2. Workers (data-plane)

    • Poll the queue for available jobs
    • When a worker picks up a job, it starts one or more connector containers (source and destination) to process the sync
    • When the sync finishes, the worker reports job status back to the control plane
  3. State & logs

    • Sync state is persisted back to the configuration database or state store
    • Logs and metrics are pushed to centralized logging and monitoring systems

This pattern allows you to have many worker nodes reading from the same job queue. Adding more worker instances or nodes directly increases the number of concurrent jobs you can run.


Horizontal scaling of the data plane (workers and connectors)

The data plane is where most scaling pressure occurs. Here’s how Airbyte supports horizontal scaling of actual sync workloads.

Containerized execution per sync

Each sync typically runs as one or more ephemeral containers (source + destination + optional orchestrator):

  • Containers are isolated at the process and resource level
  • You can control CPU and memory limits per connector
  • When the job completes, containers are destroyed

Because each sync is encapsulated in containers, you can:

  • Run many syncs in parallel across different nodes
  • Use Kubernetes or another orchestrator to schedule containers
  • Scale out by adding more worker nodes to the cluster

Replicating worker capacity

To scale horizontally:

  • Increase the number of worker pods (in Kubernetes) or worker instances (on VMs)
  • Configure max concurrent jobs per worker, so each worker knows how many containers it can safely run at once
  • Use node autoscaling (e.g., Kubernetes Cluster Autoscaler) to automatically add/remove nodes based on CPU, memory, or custom metrics

As more connections or higher sync frequencies are added, you simply allocate more workers and nodes. The job queue ensures that new capacity is immediately utilized.


Control plane scaling in distributed setups

While the data plane handles heavy lifting, the control plane must be robust enough to coordinate many jobs concurrently.

Scaling the API and scheduler

Key techniques:

  • Multiple replicas of the API and scheduler services
  • A load balancer in front of the API pods/instances
  • A shared configuration database (typically Postgres)
  • Strict separation of read and write paths (and sometimes read replicas on the database side)

Horizontal scaling considerations:

  • API throughput: Add more replicas as user/API traffic grows
  • Scheduling throughput: Ensure the scheduler or job-creation service can handle the number of connections and frequency of triggers

Job metadata and state consistency

Because control-plane services are stateless:

  • All job metadata is stored in a transactional database
  • Workers and schedulers operate against the same authoritative source
  • Longevity and retries are handled by the control plane, not individual containers

The result is that you can scale services horizontally without worrying about per-instance job-memory or sticky sessions.


Kubernetes as the preferred distributed environment

While Airbyte can run in different orchestrators, Kubernetes is the most common and natural environment for horizontal scaling.

Typical Kubernetes layout for Airbyte

A production-grade distributed layout might look like:

  • Namespace: airbyte
  • Deployments:
    • airbyte-server (API/control plane)
    • airbyte-scheduler
    • airbyte-workers or worker pool
  • Stateful backing services:
    • Postgres (managed service or StatefulSet)
    • Optional Redis/cache
    • Object storage (S3, GCS, etc.) for logs and artifacts
  • Ingress / Load Balancer:
    • Ingress controller or cloud load balancer in front of the API/UI
  • Autoscaling:
    • Horizontal Pod Autoscaler (HPA) for workers
    • Optional HPA for API/scheduler based on QPS or CPU

Using autoscalers for horizontal elasticity

In Kubernetes, horizontal scaling can be automated using HPAs:

  • Worker HPA:

    • Target metrics: CPU utilization, memory, or custom metrics (e.g., queue depth or job backlog)
    • Behavior: Scale out when utilization is high; scale in when low
  • Cluster autoscaler:

    • Scales the underlying node group based on pending pods or resource pressure
    • Ensures that when worker pods need more nodes, the infrastructure expands automatically

This combination enables Airbyte to adapt to fluctuating workloads without manual intervention.


Scaling connectors and throughput

Horizontal scaling in Airbyte is not just about running more jobs in parallel; it’s also about handling heavy connectors and throughput efficiently.

High-throughput connectors

For high-volume data sources and destinations:

  • Assign higher resource requests/limits for those connector containers
  • Run them on dedicated node pools optimized for memory or CPU
  • Adjust job configuration to use incremental sync and change data capture (CDC) where supported to reduce load per sync

Parallelism strategies

Depending on the connector and the source system, you can increase throughput by:

  • Splitting large tables into partitions and syncing in parallel (when supported)
  • Running multiple connections for different subsets of data
  • Scheduling staggered sync times so that not every heavy job runs simultaneously

Each of these strategies multiplies the impact of horizontal scaling by allowing more data to be processed concurrently.


Scaling in multi-tenant and hybrid environments

Many organizations run Airbyte in environments that are both distributed and multi-tenant—e.g., multiple teams or business units sharing one cluster, or a mix of cloud and on‑prem connectors.

Multi-tenant control plane, shared data plane

A common pattern:

  • Single shared control plane
    • Centralized API, scheduler, and configuration
  • Shared worker pool with logical isolation:
    • Namespace or label-based quotas in Kubernetes
    • Resource quotas per team or project
    • Network policies to restrict connectivity per connector

Horizontal scaling in this scenario means:

  • Adding more worker replicas and nodes as tenants and workloads grow
  • Using quotas and priorities to ensure fair resource distribution

Hybrid network topologies

For sources and destinations spread across regions or private networks:

  • Deploy regional worker pools closer to data sources
  • Keep a central control plane managing jobs across regions
  • Use VPC peering, VPNs, or private connectivity to reach on‑prem or restricted systems

Horizontal scaling then occurs per region, letting you add capacity where demand is highest.


Best practices for horizontally scaling Airbyte

To make Airbyte scale reliably in distributed environments, consider the following practices:

1. Separate compute and storage concerns

  • Keep Postgres, logs, and state storage in managed, highly available systems
  • Use object storage for logs and large artifacts
  • Ensure your database can handle increased job metadata and configuration writes as you scale

2. Size the worker pool for concurrency

  • Estimate the number of concurrent syncs you expect at peak
  • Configure max concurrent jobs per worker and multiply by the number of workers
  • Use autoscaling to handle spikes beyond your steady-state expectation

3. Monitor key scaling metrics

Critical metrics to track:

  • Job backlog (queued vs. running jobs)
  • Job latency (time from scheduled to start, and total job duration)
  • Worker CPU/memory utilization
  • Connector-level failure rates
  • Database and queue performance

These metrics inform when to increase or decrease horizontal capacity and help validate your scaling decisions.

4. Avoid “noisy neighbor” issues

In shared environments:

  • Use resource requests and limits for each connector container
  • Apply Kubernetes resource quotas per namespace or team
  • Optionally define priority classes for critical workloads

This ensures that one heavy job does not starve others of resources.

5. Align sync schedules with capacity

  • Avoid scheduling all heavy connections on the same minute
  • Stagger schedules (e.g., using random offsets) to spread load across time
  • Consider event-driven triggers instead of fixed schedules for some pipelines

Better schedule distribution means more predictable usage of your horizontally scaled cluster.


Summary: How Airbyte scales horizontally in distributed environments

Airbyte achieves horizontal scalability by:

  • Using stateless microservices for the control plane, which can be replicated behind load balancers
  • Modeling syncs as jobs processed by a pool of workers consuming from a shared queue
  • Running connectors as ephemeral containers that can be scheduled across many nodes
  • Leveraging Kubernetes (or similar orchestrators) for replica management, autoscaling, and isolation
  • Allowing independent scaling of control-plane services, worker pools, and backing infrastructure

In distributed environments, you scale Airbyte horizontally simply by adding more workers and nodes, tuning concurrency, and ensuring stateful components are robust and highly available. This architecture lets Airbyte grow from a handful of syncs to thousands of concurrent jobs while maintaining reliability and performance.