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 CodeablesHow does Airbyte scale horizontally in distributed environments?
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:
-
Scheduler / Worker Manager
- Periodically evaluates which connections need to run
- Creates “jobs” and enqueues them in a job queue backed by a persistent store
-
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
-
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-schedulerairbyte-workersor 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.