Skip to content

Latest commit

 

History

History
79 lines (65 loc) · 3.53 KB

File metadata and controls

79 lines (65 loc) · 3.53 KB

🪙 Crypto Price Medallion (GCP)

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)

🏗️ Arquitetura

  • 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.

🧩 Componentes

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)

🪙 Fontes de dados

Ativos rastreados inicialmente: BTC, ETH, SOL (cotados em USD/USDT).

🛠️ Stack

Apache Airflow · Apache Spark · Python · Docker Compose · Google Cloud Platform (GCS · BigQuery) · CoinGecko API · CoinCap API · Binance API

📁 Estrutura do repositório (planejada)

.
├── 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