Skip to content
SP StackPractices
intermediate Por StackPractices

Planificación de Capacidad — Pronóstico, Escalado y Optimización de Infraestructura

Guía práctica para la planificación de capacidad en infraestructura cloud y on-premise: pronóstico de demanda, pruebas de carga, estrategias de auto-escalado y evitando el sobreaprovisionamiento.

Nota para desarrolladores hispanohablantes: Esta guía incluye ejemplos y convenciones de nomenclatura adaptadas a equipos que trabajan en español. Cuando existen diferencias significativas en terminología técnica entre el inglés y el español, se indican explícitamente para facilitar la comunicación en equipos multiculturales.

Overview

La planificación de capacidad asegura que tu infraestructura pueda manejar la demanda actual y futura sin desperdiciar recursos. Cierra la brecha entre la extinción de incendios reactiva y el escalado proactivo, ayudando a los equipos a entregar servicios confiables mientras controlan costos.

Esta guía cubre el pronóstico de demanda, pruebas de carga, estrategias de escalado y decisiones de capacidad conscientes de costos para entornos cloud y on-premise.

When to Use

  • Estás preparando un lanzamiento de producto, campaña de marketing o pico de tráfico estacional
  • Tu servicio experimenta degradación de rendimiento recurrente durante horas pico
  • Quieres reducir costos de infraestructura cloud sin impactar la confiabilidad
  • Necesitas justificar presupuestos de infraestructura con proyecciones basadas en datos
  • Estás migrando de on-premise a cloud y necesitas dimensionar correctamente los recursos

Core Concepts

ConceptoDescripción
Capacidad ActualRendimiento máximo que tu sistema puede manejar con recursos existentes
MargenBuffer sobre el pico de uso para absorber picos inesperados (típicamente 20-30%)
Punto de SaturaciónNivel de utilización de recursos donde el rendimiento se degrada (usualmente >70% CPU, >80% memoria)
Tiempo de EscaladoTiempo requerido para aprovisionar y desplegar capacidad adicional
Pronóstico de DemandaCarga futura proyectada basada en tendencias históricas y eventos de negocio

Step-by-Step Capacity Planning Process

1. Medir la Línea Base Actual

Antes de planificar el crecimiento, entiende tu estado actual:

# Recopilar métricas durante un período representativo (2-4 semanas)
# Métricas clave: CPU, memoria, disco I/O, red, latencia de requests, tasa de errores

# Ejemplo: Consulta Prometheus para utilización de CPU
avg by (instance) (rate(node_cpu_seconds_total{mode!="idle"}[5m])) * 100

Métricas a rastrear:

  • Métricas de recursos: CPU, memoria, disco, red
  • Métricas de aplicación: Requests por segundo, percentiles de latencia (p50, p95, p99), tasas de error
  • Métricas de negocio: Usuarios activos, transacciones por minuto, crecimiento de volumen de datos

2. Identificar Cuellos de Botella

Encuentra el primer recurso que se saturará bajo carga:

# Ejemplo: Analizar qué recurso alcanza límites primero
from dataclasses import dataclass

@dataclass
class ResourceLimit:
    name: str
    current_usage: float
    max_capacity: float
    saturation_threshold: float

    def headroom(self) -> float:
        return (self.saturation_threshold - self.current_usage) / self.saturation_threshold * 100

# Evaluar margen para cada recurso
resources = [
    ResourceLimit("CPU", 45, 100, 70),
    ResourceLimit("Memory", 60, 100, 80),
    ResourceLimit("Disk IOPS", 75, 100, 85),
    ResourceLimit("Network", 30, 100, 70),
]

bottleneck = min(resources, key=lambda r: r.headroom())
print(f"Cuello de botella: {bottleneck.name} con {bottleneck.headroom():.1f}% de margen")

3. Pronosticar Demanda

Usa datos históricos más contexto de negocio para proyectar carga futura:

Técnicas:

  • Extrapolación de tendencias: Extender curvas de crecimiento históricas
  • Ajuste estacional: Considerar patrones semanales, mensuales o anuales
  • Pronóstico basado en eventos: Factorizar eventos de tráfico conocidos (lanzamientos, campañas)
  • Correlación de negocio: Vincular capacidad a métricas de negocio (nuevos clientes, ingresos)
# Ejemplo: Pronóstico de demanda con margen
peak_qps_current: 5000
weekly_growth_rate: 0.05  # 5% por semana
headroom_percent: 0.30    # 30% de buffer

# Pronóstico para 3 meses (13 semanas)
peak_qps_forecast: 5000 * (1.05 ** 13) ≈ 9440
required_capacity: 9440 * 1.30 ≈ 12272 QPS

4. Pruebas de Carga para Validar

Verifica tus suposiciones con pruebas de carga controladas:

# Ejemplo: Script de prueba de carga k6
# capacity-test.js
import http from 'k6/http';
import { check, sleep } from 'k6';

export let options = {
  stages: [
    { duration: '5m', target: 100 },   # Aumento gradual
    { duration: '10m', target: 100 },  # Estado estable
    { duration: '5m', target: 200 },   # Prueba de estrés
    { duration: '5m', target: 0 },    # Reducción gradual
  ],
  thresholds: {
    http_req_duration: ['p(95)<200'],
    http_req_failed: ['rate<0.01'],
  },
};

export default function() {
  let res = http.get('https://api.example.com/health');
  check(res, {
    'status is 200': (r) => r.status === 200,
    'response time < 200ms': (r) => r.timings.duration < 200,
  });
  sleep(1);
}

5. Elegir Estrategia de Escalado

EstrategiaCuándo UsarProsContras
Escalado verticalCrecimiento predecible y estable; cargas de trabajo de base de datosSimple, sin cambios de códigoLímite duro, riesgo de downtime, caro
Escalado horizontalTráfico variable y con picos; servicios sin estadoElástico, tolerante a fallosComplejidad agregada, consistencia de datos
Auto-escaladoDemanda impredecible o cíclicaEficiente en costos, sin intervenciónLatencia de inicio en frío, complejidad de configuración
Capacidad reservadaCarga base predecibleAhorros significativosMenos flexible, compromiso anticipado

6. Planificar el Margen

Mantén siempre capacidad de buffer para eventos inesperados:

  • Margen mínimo: 20% sobre el pico esperado
  • Servicios críticos: 30-40% de margen
  • Entornos con restricciones de costos: 15% con triggers de escalado más rápidos
  • Negocios estacionales: Planificar margen alrededor de picos estacionales conocidos

7. Documentar y Revisar

Crea un documento de plan de capacidad que incluya:

  • Métricas de línea base y cuellos de botella actuales
  • Pronóstico de demanda con suposiciones
  • Estrategia de escalado y triggers
  • Proyecciones de costos
  • Calendario de revisión (mensual o trimestral)

Best Practices

  • Empieza con datos, no con suposiciones. Recopila al menos 2 semanas de métricas de producción antes de pronosticar.
  • Prueba a escala. Prueba de carga a 2-3x el pico esperado para entender modos de falla.
  • Dimensiona continuamente. Revisa tipos de instancia y capacidad reservada trimestralmente.
  • Correlaciona con eventos de negocio. Vincula capacidad a lanzamientos de producto, marketing y estacionalidad.
  • Automatiza el monitoreo. Configura alertas cuando la utilización cruza umbrales de revisión (ej. 60% sostenido).
  • Planifica para degradación. Define estrategias de degradación elegante cuando se excede la capacidad.

Common Mistakes

  • Planificar para promedios en lugar de picos. La carga promedio oculta comportamiento de ráfagas.
  • Ignorar el tiempo de escalado. Si toma 10 minutos escalar, planifica para el tráfico 10 minutos antes.
  • Sobreaprovisionar “por si acaso.” El exceso de capacidad es dinero desperdiciado; usa auto-escalado para cargas variables.
  • Olvidar dependencias posteriores. Escalar frontend sin escalar la base de datos crea nuevos cuellos de botella.
  • No volver a probar después de cambios. Los cambios de arquitectura invalidan suposiciones de capacidad previas.

Variants

  • Planificación de capacidad cloud-native: Usar auto-escalado administrado, instancias spot y serverless para cargas de trabajo elásticas.
  • Planificación de capacidad on-premise: Enfocarse en ciclos de adquisición de hardware, densidad de virtualización y restricciones de energía/refrigeración.
  • Planificación de capacidad de base de datos: Monitorear rendimiento de consultas, límites de conexión, crecimiento de almacenamiento y retraso de replicación.

FAQ

Q: ¿Qué tan lejos debo pronosticar la capacidad? Pronostica 3-6 meses para entornos cloud y 12-18 meses para adquisición de hardware on-premise.

Q: ¿Cuál es la diferencia entre planificación de capacidad y afinación de rendimiento? La planificación de capacidad determina cuántos recursos necesitas. La afinación de rendimiento hace más eficientes los recursos existentes. Haz ambas.

Q: ¿Cómo equilibro costo y confiabilidad? Usa auto-escalado para cargas variables, instancias reservadas para líneas base y mantén 20-30% de margen. Revisa mensualmente.

Q: ¿Debo planificar capacidad por servicio o globalmente? Planifica por servicio, luego agrega. Cada servicio tiene diferentes características y cuellos de botella de escalado.

Conclusion

La planificación de capacidad es una práctica continua, no un ejercicio de una sola vez. Mide, pronostica, prueba y revisa regularmente para mantener tu infraestructura alineada con el crecimiento del negocio mientras controlas costos.