Logo

Requisitos do Sistema

Especificações técnicas e dependências necessárias para executar o Sinapse

Este documento detalha todos os requisitos necessários para instalação e execução do Sinapse em diferentes ambientes.

Requisitos de Hardware

Desenvolvimento

ComponenteEspecificação
CPU2 cores (x86_64)
RAM4 GB
Disco10 GB SSD
RedeBanda larga básica
OSLinux/macOS/Windows 10+
ComponenteEspecificação
CPU4 cores (x86_64)
RAM8 GB
Disco20 GB SSD
Rede10 Mbps+
OSUbuntu 22.04 / macOS 12+
ComponenteEspecificação
CPU8+ cores (x86_64/ARM64)
RAM16+ GB
Disco50+ GB NVMe SSD
Rede100 Mbps+
OSUbuntu 22.04 Server

Produção

Até 1.000 usuários simultâneos

ComponenteEspecificação
Servidores2 nós
CPU/nó4 cores
RAM/nó8 GB
Disco/nó100 GB SSD (3000 IOPS)
Rede100 Mbps dedicado
Load Balancer1 instância

Até 10.000 usuários simultâneos

ComponenteEspecificação
Servidores4-6 nós
CPU/nó8 cores
RAM/nó16 GB
Disco/nó200 GB SSD (5000 IOPS)
Rede1 Gbps dedicado
Load Balancer2 instâncias (HA)

10.000+ usuários simultâneos

ComponenteEspecificação
Servidores10+ nós
CPU/nó16+ cores
RAM/nó32+ GB
Disco/nó500+ GB NVMe (10000+ IOPS)
Rede10 Gbps dedicado
Load Balancer3+ instâncias (Multi-AZ)

Requisitos de Software

Sistema Operacional

Linux (Recomendado)

  • Ubuntu 22.04 LTS
  • Debian 11+
  • RHEL 8+
  • Amazon Linux 2023

macOS

  • macOS 12 Monterey+
  • Homebrew instalado
  • Xcode Command Line Tools

Windows

  • Windows 10/11 Pro
  • WSL2 com Ubuntu 22.04
  • Docker Desktop

Runtime e Linguagens

# Python
Python 3.11.0+ (obrigatório)
pip 23.0+
virtualenv ou venv

# Node.js (para ferramentas de build)
Node.js 18+ (opcional)
npm 9+ ou yarn 1.22+

# Verificar versões
python --version
pip --version
node --version
npm --version

Banco de Dados

PostgreSQL

# Versão mínima: 15.0
# Extensões necessárias:
- uuid-ossp
- pg_trgm (para busca full-text)
- pgcrypto (para criptografia)

# Configurações recomendadas (postgresql.conf):
max_connections = 200
shared_buffers = 256MB
effective_cache_size = 1GB
work_mem = 4MB
maintenance_work_mem = 64MB

Redis

# Versão mínima: 7.0
# Módulos opcionais:
- RedisJSON (para dados estruturados)
- RediSearch (para busca avançada)

# Configurações recomendadas:
maxmemory 512mb
maxmemory-policy allkeys-lru

Dependências Python

requirements.txt principal:

# Framework
fastapi==0.104.1
uvicorn[standard]==0.24.0
pydantic==2.5.0
pydantic-settings==2.1.0

# Banco de Dados
sqlalchemy==2.0.23
asyncpg==0.29.0
alembic==1.12.1

# Autenticação
python-jose[cryptography]==3.3.0
passlib[bcrypt]==1.7.4
python-multipart==0.0.6

# Utilitários
python-dotenv==1.0.0
httpx==0.25.2
redis==5.0.1
celery==5.3.4

# Observabilidade
prometheus-client==0.19.0
opentelemetry-api==1.21.0
opentelemetry-sdk==1.21.0
structlog==23.2.0

# Testes
pytest==7.4.3
pytest-asyncio==0.21.1
pytest-cov==4.1.0
factory-boy==3.3.0

Ferramentas de Desenvolvimento

Git 2.25+ Docker 24.0+ Docker Compose 2.20+ Make (opcional, para automação) curl ou httpie (para testes) PostgreSQL Client (psql) Redis Client (redis-cli)

Requisitos de Rede

Portas Necessárias

PortaServiçoProtocoloDireção
80HTTP (redirect)TCPEntrada
443HTTPSTCPEntrada
8000API (dev)TCPEntrada
5432PostgreSQLTCPInterno
6379RedisTCPInterno
9090PrometheusTCPInterno
3000GrafanaTCPInterno

Configuração de Firewall

# UFW (Ubuntu)
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 8000/tcp  # Apenas desenvolvimento

# iptables
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT

Requisitos de DNS

  • Domínio válido para produção
  • Certificado SSL/TLS (Let's Encrypt ou similar)
  • Configuração de subdomínios:
    • api.sinapse.exemplo.com - API principal
    • docs.sinapse.exemplo.com - Documentação
    • metrics.sinapse.exemplo.com - Monitoramento

Requisitos de Segurança

Certificados e Chaves

Nunca use certificados auto-assinados em produção!

# Gerar certificado para desenvolvimento
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes

# Para produção, use Let's Encrypt
sudo certbot certonly --standalone -d api.sinapse.exemplo.com

Permissões de Sistema

# Usuário dedicado para a aplicação
sudo useradd -m -s /bin/bash sinapse
sudo usermod -aG docker sinapse  # Se usar Docker

# Permissões de diretórios
sudo mkdir -p /var/log/sinapse /var/lib/sinapse
sudo chown -R sinapse:sinapse /var/log/sinapse /var/lib/sinapse
sudo chmod 750 /var/log/sinapse /var/lib/sinapse

Requisitos de Monitoramento

Espaço para Logs e Métricas

TipoRetençãoEspaço Estimado
Logs de Aplicação30 dias10-50 GB
Logs de Acesso90 dias20-100 GB
Métricas Prometheus15 dias5-20 GB
Backups de Banco7 dias50-200 GB

Ferramentas de Monitoramento

  • Prometheus 2.40+ para métricas
  • Grafana 9.0+ para dashboards
  • Loki 2.9+ para agregação de logs (opcional)
  • Jaeger 1.50+ para distributed tracing (opcional)

Requisitos Docker

Docker Engine

# Versão mínima: 24.0
# Storage driver: overlay2
# Logging driver: json-file ou journald

# Configuração daemon.json
{
  "storage-driver": "overlay2",
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  },
  "default-ulimits": {
    "nofile": {
      "Name": "nofile",
      "Hard": 64000,
      "Soft": 64000
    }
  }
}

Docker Compose

# Versão mínima do arquivo: 3.9
# Funcionalidades necessárias:
- healthchecks
- depends_on com conditions
- secrets (produção)
- configs (produção)

Requisitos Kubernetes

Cluster

  • Versão: 1.28+
  • Nós: Mínimo 3 (1 master, 2 workers)
  • CNI: Calico ou Cilium
  • Ingress: NGINX ou Traefik
  • Storage: PVC com StorageClass SSD

Recursos por Pod

# API Pod
resources:
  requests:
    memory: "512Mi"
    cpu: "500m"
  limits:
    memory: "1Gi"
    cpu: "1000m"

# Database Pod
resources:
  requests:
    memory: "1Gi"
    cpu: "1000m"
  limits:
    memory: "2Gi"
    cpu: "2000m"

Verificação de Requisitos

Script de Verificação

#!/bin/bash
# check-requirements.sh

echo "Verificando requisitos do Sinapse..."
echo ""

# Verificar Python
if command -v python3 &> /dev/null; then
    PYTHON_VERSION=$(python3 --version | cut -d' ' -f2)
    echo "Python: $PYTHON_VERSION"
else
    echo "Python 3.11+ não encontrado"
fi

# Verificar Docker
if command -v docker &> /dev/null; then
    DOCKER_VERSION=$(docker --version | cut -d' ' -f3 | cut -d',' -f1)
    echo "Docker: $DOCKER_VERSION"
else
    echo "Docker não encontrado"
fi

# Verificar Docker Compose
if command -v docker-compose &> /dev/null; then
    COMPOSE_VERSION=$(docker-compose --version | cut -d' ' -f4)
    echo "Docker Compose: $COMPOSE_VERSION"
elif docker compose version &> /dev/null; then
    COMPOSE_VERSION=$(docker compose version | cut -d' ' -f4)
    echo "Docker Compose: $COMPOSE_VERSION"
else
    echo "Docker Compose não encontrado"
fi

# Verificar memória
TOTAL_MEM=$(free -g | awk '/^Mem:/{print $2}')
echo "Memória Total: ${TOTAL_MEM}GB"

# Verificar espaço em disco
DISK_SPACE=$(df -h / | awk 'NR==2 {print $4}')
echo "Espaço Disponível: $DISK_SPACE"

# Verificar portas
for PORT in 8000 5432 6379; do
    if lsof -i:$PORT &> /dev/null; then
        echo "Porta $PORT já está em uso"
    else
        echo "Porta $PORT disponível"
    fi
done

Próximos Passos


Dica: Para desenvolvimento rápido, use Docker. Para produção, recomendamos Kubernetes com os requisitos de hardware adequados ao seu volume de usuários.

On this page