OpenSource_ETL_Project/roadmap_implementacao

169 lines
3.7 KiB
Plaintext

* Você terá um cluster Swarm (mesmo que seja 1 nó no início).
* Airbyte fará o papel de **EL** (Extract + Load).
* dbt entrará como **T** (Transform), orquestrado junto com o Airbyte.
* Metabase conectará no **data warehouse** (ex: PostgreSQL ou BigQuery).
---
# 🗂️ Roadmap: Airbyte + dbt + Metabase em Docker Swarm
## 1. Pré-requisitos
* Servidor Linux com **Docker Engine** e **Docker Swarm** já inicializado:
```bash
docker swarm init
```
* Docker Compose plugin instalado (`docker compose` ou `docker-compose`).
* Acesso a um **data warehouse** (ex: PostgreSQL, BigQuery, Snowflake, etc.).
---
## 2. Estrutura do projeto
Crie uma pasta chamada `etl-stack`:
```
etl-stack/
├── airbyte/ # Configuração do Airbyte
├── dbt/ # Projetos dbt
├── metabase/ # Metabase configs
└── docker-compose.yml
```
---
## 3. Arquivo `docker-compose.yml` para Swarm
```yaml
version: "3.9"
services:
# ========================
# Airbyte (EL)
# ========================
airbyte-server:
image: airbyte/airbyte:latest
deploy:
replicas: 1
restart_policy:
condition: on-failure
ports:
- "8000:8000"
environment:
- DATABASE_USER=airbyte
- DATABASE_PASSWORD=airbyte
volumes:
- airbyte_data:/data
networks:
- etl_net
airbyte-worker:
image: airbyte/airbyte:latest
command: worker
deploy:
replicas: 1
volumes:
- airbyte_data:/data
networks:
- etl_net
# ========================
# dbt (T)
# ========================
dbt:
image: ghcr.io/dbt-labs/dbt-postgres:latest
deploy:
replicas: 1
volumes:
- ./dbt:/usr/app
working_dir: /usr/app
networks:
- etl_net
command: ["bash", "-c", "dbt run"]
# ========================
# Metabase (BI)
# ========================
metabase:
image: metabase/metabase:latest
deploy:
replicas: 1
restart_policy:
condition: on-failure
ports:
- "3000:3000"
environment:
- MB_DB_FILE=/metabase-data/metabase.db
volumes:
- metabase_data:/metabase-data
networks:
- etl_net
volumes:
airbyte_data:
metabase_data:
networks:
etl_net:
driver: overlay
```
---
## 4. Deploy no Swarm
```bash
docker stack deploy -c docker-compose.yml etl
```
* Airbyte → [http://localhost:8000](http://localhost:8000)
* Metabase → [http://localhost:3000](http://localhost:3000)
---
## 5. Fluxo de trabalho
1. **Configurar Airbyte**
* Conecte suas fontes (CSV, APIs, MySQL, etc.).
* Defina o destino (PostgreSQL ou BigQuery).
* Airbyte fará a carga dos dados crus no destino.
2. **Rodar dbt para Transformação**
* Na pasta `dbt/`, inicialize um projeto:
```bash
docker run -it --rm -v $(pwd)/dbt:/usr/app ghcr.io/dbt-labs/dbt-postgres:latest init my_project
```
* Configure `profiles.yml` para apontar para o **mesmo warehouse usado pelo Airbyte**.
* Crie modelos SQL (`.sql` em `models/`) para limpar e juntar tabelas.
* Execute com:
```bash
docker service update --force etl_dbt
```
3. **Explorar no Metabase**
* Conecte Metabase ao mesmo banco onde dbt grava as tabelas transformadas.
* Crie dashboards em cima das tabelas finais do dbt.
---
## 6. Agendamento
* Airbyte já tem scheduler interno.
* Para rodar dbt após cada sync, use o **dbt Cloud** ou um **scheduler externo** (Airflow, Prefect, Dagster).
* Alternativa simples: cronjob chamando `docker service update --force etl_dbt`.
---
## 7. Próximos passos
* Criar **pipelines incrementais** no dbt.
* Usar **tests e docs do dbt** para validar os dados.
* Escalar com mais réplicas de Airbyte workers se o volume de dados crescer.