advanced60 minLição 4 de 5

Escalonamento de Deploys Multiusuário

Escale o OpenCode para equipes e organizações. Aprenda arquitetura multiusuário, gerenciamento de recursos, otimização de performance e padrões de deploy empresarial.

Escalonamento de Deploys Multiusuário

Padrões de Arquitetura

PadrãoUsuáriosCaso de Uso
Usuário único1Desenvolvimento pessoal
Equipe2-10Pequenas equipes
Departamento10-50Equipes de engenharia
Empresarial50+Organização inteira

Arquitetura Multiusuário

100%

Gerenciamento de Configuração

Configuração Compartilhada

Crie um repositório central de configuração:

config-repo/ ├── opencode.json ├── .opencode/ │ ├── skills/ │ └── hooks/ └── README.md

Distribuição

bash
# Sync configuration rsync -av config-repo/ /opt/opencode/config/ # Or use Git cd /opt/opencode/config git pull origin main

Gerenciamento de Recursos

Pooling de Chaves de API

json
{ "providers": { "openai": { "apiKeyPool": [ "${OPENAI_KEY_1}", "${OPENAI_KEY_2}", "${OPENAI_KEY_3}" ], "strategy": "round-robin" } } }

Limitação de Taxa

json
{ "scaling": { "rateLimit": { "perUser": { "requests": 100, "window": "1h" }, "global": { "requests": 1000, "window": "1h" } } } }

Quotas de Recursos

json
{ "scaling": { "quotas": { "maxConcurrentSessions": 50, "maxTokensPerUser": 1000000, "maxStoragePerUser": "1GB" } } }

Otimização de Performance

Cache

json
{ "scaling": { "cache": { "enabled": true, "type": "redis", "url": "redis://localhost:6379", "ttl": 3600 } } }

Pooling de Conexões

json
{ "scaling": { "connectionPool": { "maxConnections": 100, "idleTimeout": 30000 } } }

Balanceamento de Carga

yaml
# nginx.conf upstream opencode { least_conn; server opencode1:3000; server opencode2:3000; server opencode3:3000; } server { listen 443; location / { proxy_pass http://opencode; } }

Gerenciamento de Usuários

Acesso Baseado em Função

json
{ "users": { "admin": { "role": "admin", "permissions": ["*"] }, "developer": { "role": "developer", "permissions": ["read", "write", "execute"] }, "viewer": { "role": "viewer", "permissions": ["read"] } } }

Gerenciamento de Sessões

json
{ "scaling": { "sessions": { "maxConcurrent": 10, "timeout": 3600, "cleanupInterval": 300 } } }

Monitoramento

Coleta de Métricas

json
{ "monitoring": { "enabled": true, "metrics": { "requests": true, "latency": true, "errors": true, "tokens": true }, "export": { "prometheus": { "enabled": true, "port": 9090 } } } }

Health Checks

bash
# Check instance health curl http://localhost:3000/health # Response { "status": "healthy", "uptime": 86400, "sessions": 45, "memory": "2.5GB" }

Opções de Deploy

Docker

dockerfile
FROM node:18-alpine RUN npm install -g opencode COPY opencode.json /app/ WORKDIR /app CMD ["opencode", "--host", "0.0.0.0"]

Kubernetes

yaml
apiVersion: apps/v1 kind: Deployment metadata: name: opencode spec: replicas: 3 selector: matchLabels: app: opencode template: spec: containers: - name: opencode image: opencode:latest ports: - containerPort: 3000 env: - name: OPENAI_API_KEY valueFrom: secretKeyRef: name: opencode-secrets key: api-key

Melhores Práticas

PráticaMotivo
Configuração centralizadaComportamento consistente
Pooling de chaves de APIOtimização de custos
Limitação de taxaUso justo
MonitoramentoVisibilidade
Health checksConfiabilidade
Auto-escalonamentoPerformance

Practice Questions

Practice Question

Qual é o benefício do pooling de chaves de API?

Practice Question

O que a limitação de taxa previne?

Practice Question

Por que usar um balanceador de carga?

Practice Question

O que você deve monitorar em um deploy multiusuário?

Practice Question

Como você distribui configuração para múltiplas instâncias?


Success

Key Takeaways

  • Use configuração centralizada para comportamento consistente entre instâncias
  • Pooling de chaves de API distribui custos e limites de taxa
  • Limitação de taxa previne abusos e garante uso justo
  • Cache com Redis melhora tempos de resposta
  • Balanceamento de carga distribui requisições para escalabilidade
  • Monitore requisições, latência, tokens e erros
  • Docker e Kubernetes permitem deploys escaláveis
Progresso80%