advanced60 minLección 4 de 5

Escalamiento de Despliegues Multiusuario

Escala OpenCode para equipos y organizaciones. Aprende arquitectura multiusuario, gestión de recursos, optimización de rendimiento y patrones de despliegue empresarial.

Escalamiento de Despliegues Multiusuario

Patrones de Arquitectura

PatrónUsuariosCaso de Uso
Single-user1Desarrollo personal
Team2-10Equipos pequeños
Department10-50Equipos de ingeniería
Enterprise50+Organización completa

Arquitectura Multiusuario

100%

Gestión de Configuración

Configuración Compartida

Crear un repositorio central de configuración:

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

Distribución

bash
# Sincronizar configuración rsync -av config-repo/ /opt/opencode/config/ # O usar Git cd /opt/opencode/config git pull origin main

Gestión de Recursos

Agrupación de API Keys

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

Limitación de Tasa

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

Cuotas de Recursos

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

Optimización de Rendimiento

Caché

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

Agrupación de Conexiones

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

Balanceo 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; } }

Gestión de Usuarios

Acceso Basado en Roles

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

Gestión de Sesiones

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

Monitoreo

Recolección de Métricas

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

Verificaciones de Salud

bash
# Verificar salud de la instancia curl http://localhost:3000/health # Respuesta { "status": "healthy", "uptime": 86400, "sessions": 45, "memory": "2.5GB" }

Opciones de Despliegue

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

Mejores Prácticas

PrácticaRazón
Configuración centralizadaComportamiento consistente
Agrupación de API keysOptimización de costos
Limitación de tasaUso justo
MonitoreoVisibilidad
Verificaciones de saludFiabilidad
Auto-escaladoRendimiento

Practice Questions

Practice Question

¿Cuál es el beneficio de la agrupación de API keys?

Practice Question

¿Qué previene la limitación de tasa?

Practice Question

¿Por qué usar un balanceador de carga?

Practice Question

¿Qué debes monitorear en un despliegue multiusuario?

Practice Question

¿Cómo distribuyes la configuración a múltiples instancias?


Success

Key Takeaways

  • Usa configuración centralizada para comportamiento consistente entre instancias
  • La agrupación de API keys distribuye costos y límites de tasa
  • La limitación de tasa previene abusos y asegura uso justo
  • El caché con Redis mejora tiempos de respuesta
  • El balanceo de carga distribuye solicitudes para escalabilidad
  • Monitorea solicitudes, latencia, tokens y errores
  • Docker y Kubernetes permiten despliegues escalables
Progreso80%