Tutorial de uso de Dynos en Heroku: escalado automático y manual

·

·

Tutorial de uso de Dynos en Heroku: escalado automático y manual

Heroku es una plataforma como servicio (PaaS) que facilita el despliegue, gestión y escalado de aplicaciones en la nube. El núcleo del modelo de ejecución en Heroku son los dynos, contenedores ligeros que ejecutan procesos de tu aplicación. En este tutorial aprenderás a gestionar dynos, compararemos sus tipos, y veremos cómo escalar de forma manual y automática para satisfacer la demanda de tráfico.

1. ¿Qué es un dyno

Un dyno es un entorno de ejecución aislado que corre tu código. Heroku presenta varias características clave:

  • Aislamiento: cada dyno corre en su propio contenedor con recursos dedicados.
  • Ephemeral: el sistema de archivos vuelve a su estado original tras cada reinicio.
  • Automatización: Heroku reinicia dynos que fallen, garantizando alta disponibilidad.

2. Tipos de dynos

Heroku ofrece varios planes de dynos adaptados a diferentes necesidades:

Tipo CPU / RAM Uso ideal Costo
Free 512 MB RAM Proyectos de prueba 0/mes
Hobby 512 MB RAM Aplicaciones de bajo tráfico 7/mes
Standard 1x CPU, 512 MB RAM Entornos de producción 25/mes
Performance 2.5 Ghz x 1, 2.5 GB RAM Alta concurrencia 250/mes

Para más detalles, consulta la documentación oficial: Tipos de dynos en Heroku.

3. Escalado manual de dynos

El escalado manual te permite ajustar el número de dynos según necesidades puntuales. Se puede realizar mediante la interfaz web o la CLI de Heroku.

3.1. Usando la CLI de Heroku

Abre tu terminal y navega al directorio de tu proyecto. Luego ejecuta:

heroku ps:scale web=3

Con esto ejecutas 3 dynos del tipo web. Puedes escalar otros procesos:

heroku ps:scale worker=2

3.2. Usando el Dashboard de Heroku

  1. Ingresa a tu aplicación en el Dashboard.
  2. Selecciona la pestaña Resources.
  3. Localiza el dyno que quieras escalar y ajusta el control deslizante.
  4. Guarda los cambios y espera a que Heroku aplique la nueva configuración.

4. Monitoreo de rendimiento

Antes de automatizar el escalado, conviene conocer métricas clave:

  • Throughput (RPS): solicitudes por segundo.
  • Latency: tiempo de respuesta.
  • Uso de CPU y memoria: uso de recursos de los dynos.

Heroku ofrece add-ons como New Relic o Papertrail para profundizar en el monitoreo.

5. Escalado automático de dynos

El escalado automático ajusta el número de dynos según reglas predefinidas. Está disponible para dynos Standard y Performance.

5.1. Requisitos

  • Plan Standard 2X o Performance.
  • Heroku Metrics habilitadas.

5.2. Configuración básica

Para activar el escalado automático del proceso web:

heroku ps:auto-scaling:enable web

Por defecto, Heroku mantendrá entre 1 y 10 dynos buscando una latencia de 95% en 500ms. Para ajustar parámetros:

heroku ps:auto-scaling:web --min=2 --max=15 --cpu-threshold=70
  • –min: dynos mínimos.
  • –max: dynos máximos.
  • –cpu-threshold: porcentaje de CPU que dispara el escalado.

5.3. Ver estado del autoescalado

heroku ps:auto-scaling:web

Obtendrás algo similar a:

Min dynos: 2
Max dynos: 15
CPU threshold: 70%

6. Buenas prácticas

  • Pruebas de carga: utiliza herramientas como Locust o JMeter para simular tráfico antes de escalar.
  • Configuración gradual: comienza con min y max moderados para evitar saltos bruscos.
  • Costos controlados: revisa periódicamente tu factura para ajustar el escalado.
  • Métricas personalizadas: emplea Heroku Runtime Metrics para más visibilidad.

7. Conclusión

El uso adecuado de dynos y el escalado (manual y automático) es vital para ofrecer a tus usuarios una experiencia de alta disponibilidad y desempeño. Heroku simplifica muchas tareas, pero requiere comprender los límites de recursos y configurar métricas y reglas de escalado para optimizar costos y rendimiento.

Empieza implementando el escalado manual, monitorea tu aplicación y luego da el salto al autoescalado para lograr una arquitectura verdaderamente adaptable. ¡Éxito desplegando en Heroku!



Leave a Reply

Your email address will not be published. Required fields are marked *