Skip to content

Infraestrutura

O CSGOFlip é projetado para alta disponibilidade, escalabilidade e segurança, utilizando Docker, Redis e monitoramento com Prometheus/Grafana.

Arquitetura de Produção

Componentes

ComponenteTecnologiaFunção
CDNCloudflareCache, DDoS protection, WAF
Load BalancerNginxDistribuição de carga, SSL
APINestJS + FastifyLógica de negócio
DatabasePostgreSQL 15Dados persistentes
CacheRedis 7Sessions, cache, queues
StorageMinIO/S3Imagens, arquivos
MonitoringPrometheus + GrafanaMétricas e alertas

Seções

Requisitos Mínimos

Produção (Recomendado)

RecursoEspecificação
CPU8 vCPUs
RAM16 GB
SSD200 GB NVMe
Rede1 Gbps
SOUbuntu 22.04 LTS

Desenvolvimento

RecursoEspecificação
CPU4 vCPUs
RAM8 GB
SSD50 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.com

Scripts de Deploy

Build

bash
# Build da API
npm run build

# Build do frontend
cd client && npm run build

Start

bash
# Produção com PM2
pm2 start ecosystem.config.js

# Docker Compose
docker-compose -f docker-compose.prod.yml up -d

Rollback

bash
# PM2
pm2 deploy production revert

# Docker
docker-compose down
docker-compose -f docker-compose.prod.yml up -d --build

Health Checks

API

bash
curl https://api.csgoflip.com/health
json
{
  "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 5432

Redis

bash
redis-cli ping

Backup Strategy

PostgreSQL

bash
# Backup diário
pg_dump -Fc csgoflip > backup_$(date +%Y%m%d).dump

# Restore
pg_restore -d csgoflip backup_20240115.dump

Redis

bash
# Backup RDB
redis-cli BGSAVE

# Copiar arquivo
cp /var/lib/redis/dump.rdb /backup/redis_$(date +%Y%m%d).rdb

Retenção

TipoFrequênciaRetenção
Full PostgreSQLDiário30 dias
IncrementalHorário7 dias
Redis RDB6 em 6h7 dias
LogsContínuo90 dias

Documentação Técnica CSGOFlip