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
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
# Sincronizar configuración
rsync -av config-repo/ /opt/opencode/config/
# O usar Git
cd /opt/opencode/config
git pull origin mainGestión de Recursos
Agrupación de API Keys
{
"providers": {
"openai": {
"apiKeyPool": [
"${OPENAI_KEY_1}",
"${OPENAI_KEY_2}",
"${OPENAI_KEY_3}"
],
"strategy": "round-robin"
}
}
}Limitación de Tasa
{
"scaling": {
"rateLimit": {
"perUser": {
"requests": 100,
"window": "1h"
},
"global": {
"requests": 1000,
"window": "1h"
}
}
}
}Cuotas de Recursos
{
"scaling": {
"quotas": {
"maxConcurrentSessions": 50,
"maxTokensPerUser": 1000000,
"maxStoragePerUser": "1GB"
}
}
}Optimización de Rendimiento
Caché
{
"scaling": {
"cache": {
"enabled": true,
"type": "redis",
"url": "redis://localhost:6379",
"ttl": 3600
}
}
}Agrupación de Conexiones
{
"scaling": {
"connectionPool": {
"maxConnections": 100,
"idleTimeout": 30000
}
}
}Balanceo de Carga
# 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
{
"users": {
"admin": {
"role": "admin",
"permissions": ["*"]
},
"developer": {
"role": "developer",
"permissions": ["read", "write", "execute"]
},
"viewer": {
"role": "viewer",
"permissions": ["read"]
}
}
}Gestión de Sesiones
{
"scaling": {
"sessions": {
"maxConcurrent": 10,
"timeout": 3600,
"cleanupInterval": 300
}
}
}Monitoreo
Recolección de Métricas
{
"monitoring": {
"enabled": true,
"metrics": {
"requests": true,
"latency": true,
"errors": true,
"tokens": true
},
"export": {
"prometheus": {
"enabled": true,
"port": 9090
}
}
}
}Verificaciones de Salud
# Verificar salud de la instancia
curl http://localhost:3000/health
# Respuesta
{
"status": "healthy",
"uptime": 86400,
"sessions": 45,
"memory": "2.5GB"
}Opciones de Despliegue
Docker
FROM node:18-alpine
RUN npm install -g opencode
COPY opencode.json /app/
WORKDIR /app
CMD ["opencode", "--host", "0.0.0.0"]Kubernetes
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-keyMejores 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)
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?
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?
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?
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?
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?
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