Este projeto implementa uma solução completa de Engenharia de Dados voltada para a detecção de fraudes em transações de cartão de crédito, utilizando uma Arquitetura Lambda composta por:
- Speed Layer (Kafka + processamento streaming)
- Batch Layer (Spark + Airflow)
- Serving Layer (MySQL + API FastAPI + Streamlit Dashboard)
- Data Lake (MinIO) com camadas Bronze, Silver e Gold
- Feature Store e Model Store
A solução foi construída com foco acadêmico, mas seguindo boas práticas reais usadas na indústria.
A arquitetura Lambda implementada combina:
-
Processamento em lote (Batch)
Agregações históricas, validações e padronizações usando Airflow + Spark. -
Processamento em tempo real (Streaming)
Consumidores Kafka aplicam transformações e realizam inferência imediata com Random Forest. -
Serving Layer
Os resultados são disponibilizados por uma API e consumidos por dashboards no Streamlit.
| Componente | Descrição |
|---|---|
| Kafka + Zookeeper | Ingestão contínua de transações de cartão (Speed Layer) |
| MinIO | Data Lake estruturado em Bronze / Silver / Gold |
| MySQL | Base de consulta rápida para servir visões agregadas |
| Airflow | Orquestração dos jobs batch |
| Streamlit | Dashboard para consumo dos dados |
| API (FastAPI) | Endpoint para servir inferências de fraude |
| Gerador de Transações | Microserviço que simula transações de cartão |
| Modelo Random Forest | Motor da inteligência de fraude |
lambda-fraud-detection/
|
├── apps/
│ ├── generator/
│ ├── api/
│ └── dashboard/
|
├── data/
│ ├── minio/
│ └── mysql/
|
├── infra/
│ ├── airflow/
│ ├── kafka/
│ └── minio/
|
├── .env-example
├── .gitignore
├── docker-compose.yml
└── README.md
- Docker & Docker Compose
- Kafka, Zookeeper
- MinIO (S3 compatível)
- MySQL
- Apache Airflow
- Python
- Apache Spark
- Kafka Consumers / Producers
- Scikit-learn
- Random Forest
- XGBoost
- Feature Store simples (arquivos versionados)
- Model Store (metadados +
.pkl)
- FastAPI
- Streamlit
- XGBoost API
git clone https://github.com/alexfructo/lambda-arch-fraud-detection.git
cd lambda-fraud-detection
git checkout develop
git pull origin developgit checkout -b seu-nome/descricao-curta
# Exemplos:
# git checkout -b maria/novo-modelo-fraude
# git checkout -b joao/melhoria-dashboard
# git checkout -b pedro/correcao-kafkacp .env.example .env
docker-compose up -d- Modifique o código conforme necessário
- Teste com:
docker-compose restart <servico> - Verifique se tudo funciona com os containers
git add .
git commit -m "feat: descrição clara do que foi feito"
# Exemplos:
# git commit -m "feat: adiciona novo modelo de detecção"
# git commit -m "fix: corrige conexão com MySQL"
git push origin sua-branch- Vá até o repositório no GitHub
- Clique em "Pull Requests" → "New Pull Request"
- Configure:
- base: develop ← compare: sua-branch
- Descreva o que foi feito e porquê
- Aguarde revisão
- Testei localmente com docker-compose up
- Meu código segue os padrões existentes
- Adicionei/atualizei documentação se necessário
- Não quebrei funcionalidades existentes
- Commits com mensagens descritivas
- Sempre trabalhe a partir da branch develop
- Crie PRs apenas para develop (não para main)
- Aguarde aprovação antes do merge
- Mantenha commits pequenos e descritivos
- Use português nas mensagens de commit (projeto acadêmico BR)
- Teste sempre com Docker antes de commitar
# Padrão recomendado:
git commit -m "feat: adiciona nova lambda de processamento"
git commit -m "fix: corrige bug no docker-compose"
git commit -m "docs: atualiza README com setup"
git commit -m "test: adiciona testes para ETL"
git commit -m "chore: atualiza versões do docker"
# Tipos úteis para seu projeto:
- feat: Nova funcionalidade
- fix: Correção de bug
- refactor: Refatoração sem mudança funcional
- perf: Melhorias de performance
- infra: Alterações na infraestrutura Docker
- data: Modificações em datasets/scripts de dadosgit clone https://github.com/seuusuario/lambda-fraud-detection.git
cd lambda-fraud-detectioncp .env.example .envdocker-compose up -dIsso iniciará:
- Kafka + Zookeeper
- MinIO (com buckets automáticos)
- MySQL
- Airflow
- API FastAPI
- Streamlit Dashboard
- Gerador de transações
- XGBoost API
| Serviço | URL |
|---|---|
| Streamlit Dashboard | http://localhost:8501 |
| API FastAPI | http://localhost:8000/docs |
| Airflow | http://localhost:8080 |
| Kafka-ui | http://localhost:8081 |
| MinIO Console | http://localhost:9001 |
| XGBoost API Health Check | http://localhost:5000/health |
| MySQL | localhost:3306 |
- Gerador envia transações → Kafka
- Consumer lê mensagem
- Processamento + aplicação do modelo ML
- Escrita no Data Lake (Silver / Gold)
- Atualização da camada Serving (MySQL)
- Airflow agenda o job
- Spark processa dados históricos
- Gera agregações → Silver / Gold
- Atualiza Feature Store
- API serve predições para sistemas externos
- Dashboard consome dados consolidados
Retorna a probabilidade de fraude com base nos campos da transação.
Valida se o serviço está operacional.
Especificações completas em docs/api_spec.yaml
A pasta docs/ contém:
- architecture.md – explicação detalhada da arquitetura
- diagrams/ – diagramas da solução
- data_dictionary.md – dicionário de dados
- api_spec.yaml – documentação OpenAPI
Projeto desenvolvido por Alex, Luiz, Marcos, Priscila e Yuri como parte do Capstone de Engenharia de Dados.