advanced⏱60 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ó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
bash
# 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
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-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 |
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%