Pipeline de dados que consome o preço à vista de criptomoedas em 3 open APIs gratuitas do mesmo ramo: CoinGecko, CoinCap e Binance, e as leva por uma arquitetura medallion (bronze → silver → gold) usando Apache Spark e Apache Airflow, com destino final na Google Cloud Platform.
O objetivo não é só armazenar o preço: é reconciliar o mesmo ativo entre as 3 fontes, gerando uma camada gold com preço consolidado e o percentual de divergência (spread) entre elas, um sinal útil pra detectar arbitragem ou inconsistência de dado entre exchanges/agregadores.
Airflow (agendamento periódico, ex: */15 * * * *)
│
├── bronze_coingecko ─┐
├── bronze_coincap ─┼─→ GCS (JSON cru por fonte, 1 arquivo por execução)
├── bronze_binance ─┘
│
▼
spark_silver → GCS (Parquet tipado: schema único por ativo/fonte/preço/timestamp)
│
▼
spark_gold → BigQuery (preço consolidado por ativo + spread % entre fontes)
- Orquestração via Airflow (sem Kafka/streaming): um DAG dispara periodicamente, chama as 3 APIs em paralelo e encadeia os jobs Spark de silver e gold.
- Spark roda local (cluster Standalone: 1 master + workers). Decisão de custo: o valor de portfólio está em usar os serviços GCP de free tier generoso como destino do dado (GCS + BigQuery), não em pagar por compute na nuvem.
- Arquitetura Medallion (bronze → silver → gold): bronze e silver ficam em JSON/Parquet no GCS; gold é a tabela final no BigQuery, pronta pra consulta/BI.
- Reconciliação entre fontes: como as 3 APIs reportam o preço do mesmo ativo, a camada gold pivota por fonte e calcula preço médio, mínimo, máximo e spread percentual. Esse é o diferencial analítico do projeto frente a uma ingestão de fonte única.
| Componente | Papel |
|---|---|
bronze_coingecko / bronze_coincap / bronze_binance |
Tasks do Airflow que consultam cada API e gravam o JSON cru no GCS |
apache-spark-master / apache-spark-worker |
Cluster Spark Standalone |
spark_silver |
Normaliza as 3 fontes pro mesmo schema, une e limpa (GCS → GCS) |
spark_gold |
Pivota por fonte, calcula preço consolidado e spread (GCS → BigQuery) |
Ativos rastreados inicialmente: BTC, ETH, SOL (cotados em USD/USDT).
Apache Airflow · Apache Spark · Python · Docker Compose ·
Google Cloud Platform (GCS · BigQuery) · CoinGecko API · CoinCap API · Binance API
.
├── dags/
│ └── crypto_medallion.py # DAG: 3 bronze -> silver -> gold
├── jobs/
│ ├── assets.py # mapeamento de símbolo -> id por fonte
│ ├── bronze.py # extração das 3 APIs -> GCS
│ ├── silver.py # normalização + união das fontes -> GCS
│ └── gold.py # reconciliação + escrita no BigQuery
├── docker/
│ ├── docker-compose.yml
│ ├── Dockerfile.airflow
│ └── Dockerfile.spark
├── jars/ # conectores Spark-BigQuery/GCS (gitignored)
├── credential/ # service account key (gitignored)
└── README.md