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
| Componente | Especificação |
|---|---|
| CPU | 2 cores (x86_64) |
| RAM | 4 GB |
| Disco | 10 GB SSD |
| Rede | Banda larga básica |
| OS | Linux/macOS/Windows 10+ |
| Componente | Especificação |
|---|---|
| CPU | 4 cores (x86_64) |
| RAM | 8 GB |
| Disco | 20 GB SSD |
| Rede | 10 Mbps+ |
| OS | Ubuntu 22.04 / macOS 12+ |
| Componente | Especificação |
|---|---|
| CPU | 8+ cores (x86_64/ARM64) |
| RAM | 16+ GB |
| Disco | 50+ GB NVMe SSD |
| Rede | 100 Mbps+ |
| OS | Ubuntu 22.04 Server |
Produção
Até 1.000 usuários simultâneos
| Componente | Especificação |
|---|---|
| Servidores | 2 nós |
| CPU/nó | 4 cores |
| RAM/nó | 8 GB |
| Disco/nó | 100 GB SSD (3000 IOPS) |
| Rede | 100 Mbps dedicado |
| Load Balancer | 1 instância |
Até 10.000 usuários simultâneos
| Componente | Especificação |
|---|---|
| Servidores | 4-6 nós |
| CPU/nó | 8 cores |
| RAM/nó | 16 GB |
| Disco/nó | 200 GB SSD (5000 IOPS) |
| Rede | 1 Gbps dedicado |
| Load Balancer | 2 instâncias (HA) |
10.000+ usuários simultâneos
| Componente | Especificação |
|---|---|
| Servidores | 10+ nós |
| CPU/nó | 16+ cores |
| RAM/nó | 32+ GB |
| Disco/nó | 500+ GB NVMe (10000+ IOPS) |
| Rede | 10 Gbps dedicado |
| Load Balancer | 3+ 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 --versionBanco 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 = 64MBRedis
# 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-lruDependê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.0Ferramentas 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
| Porta | Serviço | Protocolo | Direção |
|---|---|---|---|
| 80 | HTTP (redirect) | TCP | Entrada |
| 443 | HTTPS | TCP | Entrada |
| 8000 | API (dev) | TCP | Entrada |
| 5432 | PostgreSQL | TCP | Interno |
| 6379 | Redis | TCP | Interno |
| 9090 | Prometheus | TCP | Interno |
| 3000 | Grafana | TCP | Interno |
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 ACCEPTRequisitos 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 principaldocs.sinapse.exemplo.com- Documentaçãometrics.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.comPermissõ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/sinapseRequisitos de Monitoramento
Espaço para Logs e Métricas
| Tipo | Retenção | Espaço Estimado |
|---|---|---|
| Logs de Aplicação | 30 dias | 10-50 GB |
| Logs de Acesso | 90 dias | 20-100 GB |
| Métricas Prometheus | 15 dias | 5-20 GB |
| Backups de Banco | 7 dias | 50-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
donePróximos Passos
Instalação Docker
Configure com containers
Instalação Manual
Configure sem containers
Configuração
Configure o sistema
Dica: Para desenvolvimento rápido, use Docker. Para produção, recomendamos Kubernetes com os requisitos de hardware adequados ao seu volume de usuários.