Infraestrutura
O CSGOFlip é projetado para alta disponibilidade, escalabilidade e segurança, utilizando Docker, Redis e monitoramento com Prometheus/Grafana.
Arquitetura de Produção
Componentes
| Componente | Tecnologia | Função |
|---|---|---|
| CDN | Cloudflare | Cache, DDoS protection, WAF |
| Load Balancer | Nginx | Distribuição de carga, SSL |
| API | NestJS + Fastify | Lógica de negócio |
| Database | PostgreSQL 15 | Dados persistentes |
| Cache | Redis 7 | Sessions, cache, queues |
| Storage | MinIO/S3 | Imagens, arquivos |
| Monitoring | Prometheus + Grafana | Métricas e alertas |
Seções
- Docker - Containerização
- Redis - Cache e filas
- Monitoramento - Prometheus e Grafana
- Segurança - Configurações de segurança
Requisitos Mínimos
Produção (Recomendado)
| Recurso | Especificação |
|---|---|
| CPU | 8 vCPUs |
| RAM | 16 GB |
| SSD | 200 GB NVMe |
| Rede | 1 Gbps |
| SO | Ubuntu 22.04 LTS |
Desenvolvimento
| Recurso | Especificação |
|---|---|
| CPU | 4 vCPUs |
| RAM | 8 GB |
| SSD | 50 GB |
Estrutura de Servidores
Opção 1: Servidor Único (Pequeno)
┌─────────────────────────────────────┐
│ Single Server │
├─────────────────────────────────────┤
│ Nginx + API + PostgreSQL + Redis │
└─────────────────────────────────────┘Opção 2: Dois Servidores (Médio)
┌─────────────────────┐ ┌─────────────────────┐
│ Server 1 (Infra) │ │ Server 2 (API) │
├─────────────────────┤ ├─────────────────────┤
│ PostgreSQL │ │ Nginx │
│ Redis │ │ API x2 │
│ MinIO │ │ Workers │
│ Prometheus │ │ │
│ Grafana │ │ │
└─────────────────────┘ └─────────────────────┘Opção 3: Múltiplos Servidores (Grande)
┌──────────┐ ┌──────────┐ ┌──────────┐
│ LB/CDN │ │ API x3 │ │ Workers │
└────┬─────┘ └────┬─────┘ └────┬─────┘
│ │ │
┌────┴─────────────┴─────────────┴────┐
│ Internal Network │
└────┬─────────────┬─────────────┬────┘
│ │ │
┌────┴────┐ ┌─────┴─────┐ ┌───┴────┐
│ PG │ │ Redis │ │ MinIO │
│ Primary │ │ Cluster │ │ │
│ +Replica│ │ │ │ │
└─────────┘ └───────────┘ └────────┘Variáveis de Ambiente
bash
# Aplicação
NODE_ENV=production
PORT=3000
API_URL=https://api.csgoflip.com
# Database
DATABASE_URL=postgresql://user:pass@localhost:5432/csgoflip
DATABASE_REPLICA_URL=postgresql://user:pass@replica:5432/csgoflip
# Redis
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASSWORD=your-redis-password
# Storage
S3_ENDPOINT=https://s3.csgoflip.com
S3_ACCESS_KEY=your-access-key
S3_SECRET_KEY=your-secret-key
S3_BUCKET=csgoflip
# Steam
STEAM_API_KEY=your-steam-api-key
STEAM_REALM=https://csgoflip.com
STEAM_RETURN_URL=https://api.csgoflip.com/auth/steam/callback
# Security
SESSION_SECRET=your-session-secret
ENCRYPTION_KEY=your-encryption-key
# Cloudflare Turnstile
TURNSTILE_SECRET_KEY=your-turnstile-key
# Frontend
FRONTEND_URL=https://csgoflip.com
ADMIN_URL=https://admin.csgoflip.comScripts de Deploy
Build
bash
# Build da API
npm run build
# Build do frontend
cd client && npm run buildStart
bash
# Produção com PM2
pm2 start ecosystem.config.js
# Docker Compose
docker-compose -f docker-compose.prod.yml up -dRollback
bash
# PM2
pm2 deploy production revert
# Docker
docker-compose down
docker-compose -f docker-compose.prod.yml up -d --buildHealth Checks
API
bash
curl https://api.csgoflip.com/healthjson
{
"status": "ok",
"timestamp": "2024-01-15T10:30:00.000Z",
"version": "1.0.0",
"services": {
"database": "ok",
"redis": "ok",
"storage": "ok"
}
}PostgreSQL
bash
pg_isready -h localhost -p 5432Redis
bash
redis-cli pingBackup Strategy
PostgreSQL
bash
# Backup diário
pg_dump -Fc csgoflip > backup_$(date +%Y%m%d).dump
# Restore
pg_restore -d csgoflip backup_20240115.dumpRedis
bash
# Backup RDB
redis-cli BGSAVE
# Copiar arquivo
cp /var/lib/redis/dump.rdb /backup/redis_$(date +%Y%m%d).rdbRetenção
| Tipo | Frequência | Retenção |
|---|---|---|
| Full PostgreSQL | Diário | 30 dias |
| Incremental | Horário | 7 dias |
| Redis RDB | 6 em 6h | 7 dias |
| Logs | Contínuo | 90 dias |
