Pular para conteúdo

Componentes

Detalhamento dos componentes principais da plataforma GovHub BR.

Apache Airflow

Papel: Orquestração de pipelines de ingestão (ETL/ELT).

Aspecto Detalhe
Versão Apache Airflow 2.x
Deploy Kubernetes (Helm chart)
DAGs Uma por fonte de dados
Schedule Diário/semanal conforme fonte
UI http://localhost:8080 (local)

Responsabilidades:

  • Extrair dados de APIs governamentais
  • Depositar raw data no MinIO (Bronze)
  • Triggerar dbt runs após ingestão
  • Monitorar e alertar falhas

dbt (Data Build Tool)

Papel: Transformação de dados (Bronze → Silver → Gold).

Aspecto Detalhe
Versão dbt-core
Adapter dbt-postgres
Models bronze/, silver/, gold/
Tests Schema + custom SQL
Docs dbt docs generate

Responsabilidades:

  • Limpar e normalizar dados (Silver)
  • Agregar e criar métricas (Gold)
  • Testar qualidade em cada camada
  • Documentar linhagem de dados

MinIO

Papel: Object storage para camada Bronze (dados brutos).

Aspecto Detalhe
Deploy Kubernetes (Helm chart)
Protocolo S3-compatible
Buckets Um por fonte (transferegov, siape, etc.)
Retenção Indefinida
UI MinIO Console

Responsabilidades:

  • Armazenar dados raw imutáveis
  • Garantir reprodutibilidade do pipeline
  • Servir como source para dbt

PostgreSQL

Papel: Banco analítico (Silver e Gold layers).

Aspecto Detalhe
Deploy Kubernetes (Helm chart)
Schemas silver, gold
Conexão Superset, JupyterHub, dbt
Backups Configurados via K8s

Responsabilidades:

  • Armazenar dados transformados
  • Servir queries analíticas (Superset)
  • Metastore para pipelines

Apache Superset

Papel: BI e visualização de dados.

Aspecto Detalhe
Deploy Kubernetes (Helm chart)
Datasets Conectado ao PostgreSQL (Gold)
Dashboards Por domínio (transferências, pessoal, etc.)
UI http://localhost:8088 (local)

Responsabilidades:

  • Dashboards interativos para gestores
  • Exploração de dados self-service
  • Controle de acesso por role

JupyterHub

Papel: Notebooks para análise interativa e pesquisa.

Aspecto Detalhe
Deploy Kubernetes (Helm chart)
Kernels Python 3.11+
Acesso Multi-user
UI http://localhost:8888 (local)

Responsabilidades:

  • Análises exploratórias
  • Prototipagem de novos pipelines
  • Pesquisa (IA, OCR, parsers)

OpenMetadata

Papel: Governança e catalogação de dados.

Aspecto Detalhe
Config Declarativa (repo dedicado)
Domínios Por órgão/sistema
Linhagem Bronze → Silver → Gold

Responsabilidades:

  • Catálogo de dados (discovery)
  • Linhagem end-to-end
  • Ownership e domínios
  • Integração com testes dbt

Trino + Apache Ranger

Papel: Acesso governado para dados sensíveis (row-level security, column masking).

Aspecto Detalhe
Trino Query engine federada sobre PostgreSQL
Ranger Políticas centralizadas de acesso
Caso de uso Dados sensíveis (Siape/folha de pagamento)
Caminho JupyterHub → Trino → PostgreSQL

Responsabilidades:

  • Row-level security (filtrar linhas por perfil do usuário)
  • Column masking (ocultar colunas sensíveis)
  • Audit log de acessos a dados restritos
  • Centralizar políticas de acesso em um único ponto

Quando usar Trino vs acesso direto

Superset e análises com dados públicos acessam PostgreSQL diretamente. Trino + Ranger é o caminho obrigatório apenas para dados sensíveis (pessoal, folha).

Argo CD

Papel: Deploy GitOps de toda a infraestrutura.

Aspecto Detalhe
Padrão App-of-Apps
Sync Waves Negativa (DB/Storage) → 0 (Airflow) → 1+ (Superset/JupyterHub)
Ambientes preprod, prod (overlays)

Responsabilidades:

  • Sincronizar estado do cluster com Git
  • Deploy automático em push para main
  • Rollback declarativo
  • Detecção de drift