Escalamiento de Despliegues Multiusuario
Avanzado⏱60 min📖2 min de lecturaLecció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.

Patrones de Arquitectura

Patrón
Usuarios
Caso de Uso
Single-user
1
Desarrollo personal
Team
2-10
Equipos pequeños
Department
10-50
Equipos de ingeniería
Enterprise
50+
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

docker
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áctica
Razón
Configuración centralizada
Comportamiento consistente
Agrupación de API keys
Optimización de costos
Limitación de tasa
Uso justo
Monitoreo
Visibilidad
Verificaciones de salud
Fiabilidad
Auto-escalado
Rendimiento

Preguntas de Práctica (Practice Questions)

Pregunta de Práctica
Cómo responder

Pregunta de opción múltiple con 4 opciones. Selecciona una opción y elige Comprobar respuesta.

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

Pregunta de Práctica
Cómo responder

Pregunta de opción múltiple con 4 opciones. Selecciona una opción y elige Comprobar respuesta.

¿Qué previene la limitación de tasa?

Pregunta de Práctica
Cómo responder

Pregunta de opción múltiple con 4 opciones. Selecciona una opción y elige Comprobar respuesta.

¿Por qué usar un balanceador de carga?

Pregunta de Práctica
Cómo responder

Pregunta de opción múltiple con 4 opciones. Selecciona una opción y elige Comprobar respuesta.

¿Qué debes monitorear en un despliegue multiusuario?

Pregunta de Práctica
Cómo responder

Pregunta de opción múltiple con 4 opciones. Selecciona una opción y elige Comprobar respuesta.

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


✅Éxito

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%