Bandwidth Planning for CI/CD Pipelines
Calculate bandwidth requirements for CI/CD pipelines including artifact downloads, Docker pulls, dependency installation, and artifact uploads.
Detailed Explanation
CI/CD Pipeline Bandwidth Planning
CI/CD pipelines are surprisingly bandwidth-intensive. Each build may download dependencies, pull Docker images, run tests with external services, and upload artifacts. Understanding these flows helps size runner infrastructure.
Typical Pipeline Bandwidth Profile
A Node.js web application build:
| Stage | Data Transfer |
|---|---|
| Git clone | 50-500 MB |
| npm install (cold cache) | 200-800 MB |
| Docker base image pull | 100-400 MB |
| Test fixtures/data | 10-100 MB |
| Build artifact upload | 50-200 MB |
| Docker image push | 100-500 MB |
| Total per build | 500 MB - 2.5 GB |
Calculating Required Bandwidth
For a team running 200 builds/day with average 1 GB per build:
Daily transfer: 200 * 1 GB = 200 GB
In 8-hour work window: 200 GB / (8 * 3600) seconds
= 200 * 8 Gb / 28,800 = ~55.6 Mbps sustained
Peak (10 concurrent builds): ~556 Mbps burst
Caching Strategies to Reduce Bandwidth
| Strategy | Bandwidth Savings |
|---|---|
| npm/pip/Maven cache | 60-90% of dependency downloads |
| Docker layer cache | 70-95% of image pulls |
| Git shallow clone | 80-95% of clone size |
| Artifact cache | 50-80% of rebuild data |
With effective caching, the 1 GB per build drops to ~200-400 MB.
Self-Hosted vs Cloud Runners
- Cloud runners (GitHub Actions, GitLab SaaS): Bandwidth is included but cold caches are common
- Self-hosted runners: Full control over caching, but you pay for bandwidth
- Hybrid: Use cloud for burst, self-hosted for frequent builds
Cost Impact
At AWS rates ($0.09/GB egress):
200 builds/day * 1 GB * 30 days = 6 TB/month
Cost: ~$540/month in bandwidth alone
With caching: ~$108-216/month
Use Case
DevOps teams sizing CI/CD runner infrastructure, engineering managers estimating cloud CI costs, platform engineers designing caching layers for build systems, and network teams provisioning bandwidth for development environments.