airbyte_serverless
极简无服务器ETL工具,复用Airbyte 400+连接器,无需平台数据库一键同步数据到BigQue
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
极简无服务器ETL工具,复用Airbyte 400+连接器,无需平台数据库一键同步数据到BigQue
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象你是一家初创公司的数据工程师,团队只有 3 个人。你们的数据需求很简单:每天把 PostgreSQL 的订单数据、Stripe 的支付记录同步到 BigQuery,用 dbt 做清洗分析。但当你尝试部署 Airbyte 开源版时,发现迎面而来的是一整张技术栈清单:PostgreSQL 数据库(存配置状态)、Kubernetes 集群(或高配虚拟机)、Secret Manager、日志管理系统、Airbyte UI 服务……光是理解这些组件之间的依赖关系,就花了你整整两天。
这就是 AirbyteServerless 想要解决的核心痛点。
AirbyteServerless 是由数据分析公司 Unytics 开源的一个极简 ETL 工具。它的核心思路是"减法":把 Airbyte 连接器生态的接入能力,剥离掉所有平台层(UI、数据库、调度器、Orchestrator),只保留最本质的功能——"从源头提取数据,加载到目的地"。用项目 README 的话说:"Airbyte made simple (no UI, no database, no cluster)"。
Airbyte 是近年来数据工程师社区最活跃的开源项目之一,提供了 400+ 预置连接器,覆盖主流数据库、API 服务、数据仓库。这个连接器生态是 Airbyte 最核心的资产。然而 Airbyte 官方开源平台(Airbyte Open Source Platform)为了运行这些连接器,附带了一整套基础设施:Web UI、PostgreSQL 配置库、调度 Orchestrator、Kubernetes 部署模板、Secret Manager……
这对于大型数据团队是合理的——他们有专职 DevOps 维护这套平台。但对于个人开发者、小团队或只想快速同步几个数据源的用户来说,这套"全家桶"的部署复杂度令人望而却步。
AirbyteServerless 的出现,正是填补这个空白:复用 Airbyte 全部连接器资产,但把平台依赖降到零。
AirbyteServerless 的代码库非常精简(Python 单包,约 10 个核心文件),整体架构可以概括为"三层解耦":
1. Source 层(数据源连接器)
ExecutableAirbyteSource 类是核心抽象。它支持两种数据源:
airbyte/source-* 官方镜像,abs create --source="airbyte/source-faker:0.1.4" 即可创建连接pipx run airbyte-source-faker==0.1.4 运行 Python 版连接器(无需 Docker)底层通过 subprocess 调用 docker run 或直接执行 Python 包,利用 Airbyte 连接器的标准配置协议读取连接参数。
2. Destination 层(数据目的地)
目前支持 Print(调试输出)和 BigQuery 两种 Destination。以 BigQueryDestination 为例,代码仅约 50 行,直接通过 Google BigQuery Python SDK 写入数据。每个记录附加三个元数据列:_airbyte_raw_id(全局唯一 ID)、_airbyte_job_started_at(任务启动时间戳)、_airbyte_slice_started_at(分片起始时间)。这种设计让状态(state)完全由 BigQuery 表本身存储,无需额外数据库——这是 AirbyteServerless 能够去平台化的关键。
3. Runner 层(执行环境)
CloudRunJobRunner 负责将连接器打包为 GCP Cloud Run Job 部署。代码通过 Jinja2 模板渲染生成 YAML 配置文件,配合 gcloud CLI 完成部署。相比 Kubernetes 集群,Cloud Run Job 的操作门槛大幅降低:一条 gcloud runs jobs create 即可完成部署。
CLI 工具 abs 的命令设计 也体现了极简哲学:
| 命令 | 功能 |
|---|---|
abs create | 创建连接配置 |
abs run | 本地执行 ETL 任务 |
abs remote-run | 远程部署到 Cloud Run Job |
abs list-available-streams | 查看可用数据流 |
abs set-streams | 选择性同步特定数据流 |
| 维度 | Airbyte Open Source | AirbyteServerless |
|---|---|---|
| UI 界面 | 有(Web UI) | 无(纯 YAML 配置) |
| 数据库 | 必须(存状态/配置) | 无(状态存 BigQuery) |
| 部署复杂度 | 高(多容器/K8s) | 低(pip + Docker) |
| 增量同步 | 支持(平台管理 state) | 支持(state 由 BigQuery 存) |
| 数据转换 | 支持(normalize/upsert) | 不支持(仅 append raw) |
| 扩展性 | 高(K8s 自动扩缩) | 高(Cloud Run 按需扩缩) |
值得注意的是,AirbyteServerless 不支持数据转换层(normalize/upsert),所有数据以 append-only 方式写入 BigQuery。这既是限制也是设计选择——append-only 模式对 schema 变化更鲁棒,配合 dbt 做 downstream 转换是官方推荐的工作流。
最适场景:
需要注意的局限:
AirbyteServerless 代表了数据工程领域的一个趋势:原子化 ETL。传统 ETL 工具往往以"平台"形态交付(Talend、Airbyte、Kettle),而 AirbyteServerless 的思路是"工具化"——只做 Extract-Load,不做 Transform;把平台层降为依赖,把控制流交给用户熟悉的 YAML + CLI。这种"只做好一件事"的设计哲学,在云原生时代与微服务、无服务器架构高度契合。
图1:AirbyteServerless 工作流程
图中展示了
abs create→abs run→ BigQuery 写入的完整本地执行流程。
分析基于 GitHub 仓库 unytics/airbyte_serverless(v0.37),README 及源码采集于 2026-07-15。