Um serviço robusto de CDN (Content Delivery Network) desenvolvido em Go para gerenciamento e distribuição de arquivos de mídia.
O RB CDN é um serviço especializado para upload e distribuição de arquivos de mídia, utilizando o MinIO como backend de armazenamento. O projeto foi desenvolvido com foco em performance, segurança e escalabilidade.
- Upload de arquivos de mídia
- Distribuição de conteúdo via CDN
- Integração com MinIO para armazenamento
- Monitoramento com New Relic
- Logging com Sentry
- Documentação Swagger
- Métricas Prometheus
- Integração com RabbitMQ
- Go 1.20
- Gin Web Framework
- MinIO
- New Relic
- Sentry
- Prometheus
- RabbitMQ
- Swagger
- Docker
- Go 1.20 ou superior
- Docker e Docker Compose
- MinIO (configurado via Docker)
- New Relic Account (para monitoramento)
- Sentry Account (para logging)
- Clone o repositório:
git clone https://github.com/RodolfoBonis/rb-cdn.git
cd rb-cdn- Configure as variáveis de ambiente:
cp .env.example .env
# Edite o arquivo .env com suas configurações- Execute com Docker Compose:
docker-compose up -dgo mod download
go run main.godocker build -t rb-cdn .
docker run -p 8080:8080 rb-cdnA documentação da API está disponível via Swagger em:
https://rb-cdn.rodolfodebonis.com.br/swagger/index.html
Execute os testes com:
go test ./....
├── core/ # Núcleo da aplicação
├── routes/ # Definição de rotas
├── docs/ # Documentação
├── features/ # Funcionalidades
├── main.go # Ponto de entrada
└── dockerfile # Configuração Docker
- CORS configurado
- Autenticação via API Key
- Headers de segurança
- Timeouts configurados
- Proxies confiáveis
- New Relic para APM
- Sentry para logging de erros
- Prometheus para métricas
- Logs estruturados com Zap
- Fork o projeto
- Crie sua Feature Branch (
git checkout -b feature/AmazingFeature) - Commit suas mudanças (
git commit -m 'Add some AmazingFeature') - Push para a Branch (
git push origin feature/AmazingFeature) - Abra um Pull Request
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.
Rodolfo Bonis
Para suporte, envie um email para [seu-email@exemplo.com] ou abra uma issue no GitHub.