Desafio de Engenharia de Dados — Coco Bambu
Este repositório apresenta a solução completa para o Desafio de Engenharia de Dados do Coco Bambu, abordando ingestão, processamento, validação e armazenamento de dados JSON em um Data Lake na AWS, com foco em escalabilidade, qualidade dos dados e boas práticas de arquitetura.
Visão Geral do Projeto
A solução foi projetada para simular um ambiente real de ingestão de dados provenientes de sistemas ERP e APIs transacionais, aplicando um pipeline de ETL robusto, validado e resiliente a mudanças de esquema.
O pipeline utiliza serviços gerenciados da AWS como S3, API Gateway, Lambda e RDS, garantindo automação, rastreabilidade e organização dos dados.
Estrutura do Repositório
desafio-coco-bambu/ ├── scripts/ │ ├── create_folders_s3.py │ ├── create_tables.py │ ├── etl_process.py │ ├── api_fetch.py │ ├── data/ │ └── exemplos/ │ ├── ERP.json │ ├── ERP_ADICIONAL.json │ └── ERP_TAXATION.json │ ├── .env ├── requirements.txt ├── README.md ├── CHALLENGE_DETAILS.md ├── KANBAN.md ├── API_DOCUMENTATION.md
A estrutura foi organizada para facilitar manutenção, versionamento e entendimento do pipeline completo.
Configuração do Ambiente
Pré-requisitos
- Python 3.12
- AWS CLI configurado
- Permissões para S3, API Gateway e RDS
Instalação das Dependências
pip install -r requirements.txt
Arquivo de Variáveis de Ambiente (.env)
BUCKET_NAME=coco-bambu-data-lake2 API_BASE_URL=https://<api-gateway-id>.execute-api.us-east-1.amazonaws.com/default DB_HOST=coco-bambu-rds.chqcsweg0oqw.us-east-1.rds.amazonaws.com DB_NAME=coco_bambu_db DB_USER=postgre DB_PASSWORD=YourSecurePassword DB_PORT=5432
As variáveis permitem desacoplar configuração e código, facilitando deploys e mudanças de ambiente.
Arquitetura do Data Lake
Estrutura do Bucket S3
raw/ ├── erp/ ├── api_responses/ │ ├── getFiscalInvoice/ │ ├── getGuestChecks/ │ ├── getChargeBack/ │ ├── getTransactions/ │ └── getCashManagementDetails/ processed/ logs/
A separação entre raw, processed e logs garante organização, governança e facilidade de auditoria dos dados.
Scripts Implementados
Criação de Tabelas no RDS
O script create_tables.py cria tabelas normalizadas e índices para
otimizar consultas e garantir integridade relacional.
- guest_checks — índice em guest_check_id
- taxes — índice em guest_check_id
- detail_lines — índice em guest_check_id
- menu_items — índice em menu_item_id
python scripts/create_tables.py
Ingestão de APIs
O script api_fetch.py consome APIs simuladas e armazena as respostas
no S3, organizadas por endpoint e data de operação.
python scripts/api_fetch.py
Processo de ETL
O script etl_process.py realiza leitura, validação e carga dos dados
no banco PostgreSQL (RDS).
- Validação por schema JSON
- Suporte a campos dinâmicos (ex:
taxes→taxation) - Logs detalhados de erro no S3
- Mensagens de progresso e sucesso
python scripts/etl_process.py
APIs Simuladas
- /bi/getFiscalInvoice
- /res/getGuestChecks
- /org/getChargeBack
- /trans/getTransactions
- /inv/getCashManagementDetails
Cada endpoint recebe parâmetros como data de operação (busDt) e
identificador da loja (storeId), retornando dados JSON estruturados.
Kanban e Organização
O arquivo KANBAN.md foi utilizado para acompanhar o progresso do projeto,
dividido em:
- A Fazer
- Em Progresso
- Concluído
Essa abordagem facilitou entregas incrementais e ajustes rápidos durante o desenvolvimento.
Considerações Finais
Este projeto demonstra uma solução completa e madura de Engenharia de Dados, com foco em:
- Flexibilidade: adaptação a mudanças de esquema
- Organização: Data Lake estruturado e logs auditáveis
- Automação: ingestão via APIs e processamento ETL
- Escalabilidade: arquitetura pronta para expansão
A solução está preparada para evoluções futuras, como inclusão de novos endpoints, integração com ferramentas analíticas ou migração para arquiteturas distribuídas.