Mariano Italiano
Escalamiento vertical: Aumentar la potencia de servidor Escalamiento horizontal: Aumenta el numero de servidores
Alexis Dorado Muñoz
Gracias por tu aporte
¿Qué es la escalabilidad en aplicaciones y microservicios?
Entrar en el mundo de la escalabilidad en aplicaciones y microservicios es esencial para garantizar que estos sistemas sean eficientes y económicos. La escalabilidad es la capacidad de un sistema para manejar una cantidad creciente de trabajo añadiendo recursos. Existen dos tipos principales de escalamiento: vertical y horizontal. ¿Quieres saber cuál es el más adecuado para tu aplicación? Sigue leyendo.
¿En qué consiste el escalamiento vertical?
El escalamiento vertical se refiere a incrementar el tamaño de una instancia de servidor. Imagina que tienes un servidor con 4 GB de RAM y 2 CPUs que no puede manejar todo el tráfico entrante. Podrías ampliar este servidor a 16, 32 o incluso 64 GB de RAM y añadir más CPUs. Este tipo de escalamiento es útil cuando necesitas procesar tareas intensivas en CPU, como el procesamiento de vídeos, donde un único servidor debe gestionar la tarea completa.
Sin embargo, el escalamiento vertical tiene sus limitaciones. Solo puedes aumentar el tamaño del servidor hasta cierto punto antes de que sea económicamente inviable. Además, si el servidor falla, toda la aplicación puede verse afectada.
¿Qué implica el escalamiento horizontal?
A diferencia del escalamiento vertical, el escalamiento horizontal significa agregar más instancias de servidor para distribuir la carga. Esto es ideal cuando tienes muchas peticiones pequeñas y quieres que diferentes partes de tu aplicación puedan crecer de manera independiente, optimizando recursos y costos.
Por ejemplo, en un sistema de autenticación o cuando se sirven archivos pequeños, puedes optar por añadir más servidores en lugar de hacerlos más grandes, lo que permite recibir más peticiones simultáneamente.
El escalamiento horizontal ofrece flexibilidad para gestionar la carga de tráfico, ya que puedes especializar cada servidor para tareas específicas: GPU para tareas gráficas intensivas, más CPU para procesamiento de datos, o servidores con más RAM para caché.
¿Cuándo elegir entre escalamiento vertical u horizontal?
La elección entre escalamiento vertical y horizontal depende del caso de uso y los requisitos específicos de la aplicación:
Procesamiento intensivo de tareas: Opta por el escalamiento vertical cuando necesitas que un solo servidor gestione tareas pesadas, como procesamiento de vídeos.
Alta concurrencia de peticiones pequeñas: Es recomendable el escalamiento horizontal para poder distribuir la carga eficientemente entre múltiples servidores.
Atrévete a explorar y experimentar con diferentes enfoques de escalamiento para encontrar la mejor solución para tu aplicación. Y como siempre, la práctica hace al maestro: te invito a que pienses en ejemplos adicionales de cuándo usar cada tipo de escalamiento y los compartas, lo que enriquecerá tu comprensión y experiencia en este campo apasionante. ¡Sigue aprendiendo y motivándote en este camino del desarrollo escalable!
Mariano Italiano
Escalamiento vertical: Aumentar la potencia de servidor Escalamiento horizontal: Aumenta el numero de servidores
Alexis Dorado Muñoz
Gracias por tu aporte
José Sánchez
Un ejemplo de DB:
Jairo Andres Grajales Salinas
No entiendo tu comentario
Angel Afonso
Las bases de datos relacionales naturalemte es un tanto complicado escalarlas horizontalmente, no es imposible pero si es complicado, por eso es preferible escalarlas verticalmente. En cambio las bases de datos no relacionales son mucho mas sencillas de escalar horizontalmente
Sebastián Ospino
Tipos de escalamiento: vertical y horizontal
Gonzalo Amador Hernández
Escala verticalmente cuando las tareas que se realizaran sean pesdas y horizontalmente cuando las tereas sean muy concurrentes. ahora si la tarea es pesda y muy concurrente, reviza tu app y sino se puede hacer mas, escala de ambas formas, pero para no gastar demaciodos recursos, escala solamente en las hroas pico cuando tu app este mas saturada.
Juan David Cajamarca Acuña
¿Cómo se sabe que una aplicación o microservicio necesita escalamiento vertical u horizontal?
Un tipo de escalamiento no es mejor que otro, se debe implementar uno u otro dependiendo de las necesidades.
¿Existe algún caso de uso donde se prefiera un escalamiento vertical a horizontal al momento de atender problemas de alta concurrencia? En el caso de que tengamos muchas peticiones cortas, no necesitamos un escalamiento vertical, sino uno horizontal. Esto nos permitirá recibir más peticiones y escalar independientemente; las diferentes partes de nuestra aplicación pueden crecer sin necesidad de estar involucradas en otras.
Continuando con el ejemplo de la clase anterior, podríamos escalar verticalmente los recursos encargados del procesamiento de videos y escalar horizontalmente los recursos encargados de la autenticación de usuarios (se pueden implementar los dos tipos de escalamientos en una misma infraestructura a diferentes recursos). De esta forma seremos más eficientes a la hora de usar recursos. Y esto no solamente nos permitirá ahorrar dinero, sino que podemos elegir recursos que sean mejores en unas cosas que en otras; por ejemplo, en algunos proveedores de nube hay algunas instancias de servidores que especiales para GPU (tienen un procesador de gráficas mucho mejor que el de los servidores comunes), otras especiales en CPU (tienen más procesamiento) u otras con más memoria RAM (pueden ser usadas por ejemplo para caché).
Debemos siempre tener en cuenta que tenemos diferentes tipos de recursos y diferentes formas de escalar que pueden ser aplicadas de diferentes maneras dependiendo del uso de nuestra aplicación.
HECTOR FABIO JIMENEZ SALDARRIAGA
Excelente aporte, solo corregiría la parte que dice que se debe implementar uno u otro, adicionaría que la escalabilidad también puede ser una combinación de ambas opciones y también debemos recordar que el cloud computing t una de sus características es la elasticidad
Rodmy Suarez
Algo que manejamos en el equipo al que pertenezco:
En base a la información debemos definir una metrica con respecto al performance (por lo general entiendo es tipo de respuesta del servicio, para casos sincronos), definiendo el margen aceptable para el redimiento de nuestros servicios por ejemplo que el tiempo de respuesta sea de (.5 a 1 segundo).
Con este Margen:
Joziel Canda
En un sistema que gestiona documentos escaneados, los cuales son subidos a un repositorio central agregando meta data asociada al archivo. ¿Cuál sería la mejor practica para escalar los repositorios de archivos?
Pablo Fredrikson
ProfesorEn esos casos siempre te conviene usar un storage ilimitado (object storage) como S3 en amazon.
Armando Suarez
Yo una vez discuti con mi lider de área porque tengo un ambiente Web balanceado mediante un BIGIPF5 y solicité un par de servidores más de los que ya tenía para resolver solicitudes, y él me comentaba que porque no esclarlo de forma Vertical, para mi fue difícil decirle que lo que sufríamos no era de procesamiento si no de disponiblidad con los servicios que se saturaban con tareas y requeriamos de dejar servidores libres por lo tanto sugería escalar de forma horizontal, fue un kaos después de varias sesiones, diagramas y explicar el flujos de las apps por fin cedió en fin, es un tema difícil escoger una u otra porque los escenarios pueden ser muy diferentes.
Ederson García Acevedo
amigo, osea la escalabilidad vertical se tiene en cuenta cuando estamos bajos de recursos para que el servidor ejecute tareas?
Ivan Ramos Sánchez
Un ejemplo de escalamiento Horizontal: Tenemos un microservicio que procesa transacciones a nivel nacional, un día dejó de operar por un problema de red en domingo al medio día, nadie se dio cuenta hasta el domingo a media noche, cuando entramos a revisar para echarlo a andar de nuevo, ya tenía 120k transacciones atoradas y más llegando, afortunadamente estaba en docker y k8s, se modificó el deploy para que las replicas fueran 3, y se escaló también el número de mensajes que podían consumir, como el número de instancias hacía match con sus indices cada instancia procesó sus propios mensajes sin afectar a los demás. La velocidad de procesamiento se incrementó x10 +- un proceso que podría haber durado unas 6 horas en atender transacciones atoradas terminó en 40 minutos. Un ejemplo de escalamiento Vertical: Una aplicación web de reportería tardaba como 20 mi en generar 1 sólo reporte, que aunque la conexión y consultas a BD eran optimas, internamente la aplicación hacia muchos cálculos, transformaciones y complementos de datos, La opción fue darle más poder de procesamiento al server y el tiempo bajó a 2 minutos.
Kevin Costa
Escalamiento horizontal en caso de ataques ddos o campañas de marketing
Eleana Magdalena Hurtado Babilonia
Tipos de escalamiento -Vertical: Agrandar el tamaño de la instancia -Horizontal: Creamos más servidores
Peter Cerpa López
Un Caso de Escalamiento es vertical puede ser para servidores de monitoreo, por lo cual se enfocan siempre en el procesamiento para realizar sus operaciones.
Luis Enrique Álvarez Hernández
en que casos de la vida de una empresa real se usan el escalamiento vertical y horizontal
El escalamiento vertical entra en juego cuando una empresa procesa tareas pesadas e indivisibles en un solo servidor, como renderizar un video o mantener una caché gigantesca en memoria RAM.
En cambio, el horizontal se usa cuando explota la concurrencia de peticiones cortas —como logins masivos o consultas a una API—, donde duplicar servidores livianos reparte la carga con gracia. ¿En qué tipo de sistema o app te imaginas aplicando cada uno?
Daniel Eduardo Rojas Pulido
La gran pregunta que siempre me hago
Alexis Dorado Muñoz
El reto: Implementar un escalado horizontal "anidado" en una aplicación Kubernetes que experimentaba fallos por el aumento en la demanda.
Primer intento: Ajustar el número de pods y sus disparadores basándonos en las horas pico y el consumo de recursos.
Nuevo problema: Saturación del worker node. Aumentar sus recursos era una solución temporal y poco eficiente.
Solución final:
Conclusión: Conseguimos un sistema mucho más robusto y escalable, capaz de manejar picos de demanda sin problemas.
JUAN PABLO BOLIVAR MARTINEZ
Si al momento de procesar los mensaje de una cola, dichos mensajes se están acumulando quiere decir que la tasa de procesamiento es inferior a la tasa de recepción, en ese caso lo idea seria un escalamiento horizontal para brindar la capacidad de procesar mas mensajes a la vez, lo que mejoraría la tasa la procesamiento.
Irving Juárez
Ojo, porque suena muy bonito decir: Escalamos de manera horizontal o vertical dependiendo del caso de uso.
Pero aqui la verdadera pregunta seria, como se cuando hay que escalar un servicio? Bueno, con el monitorio de nuestros recursos nosotros podemos registrar ciertos thresholds o limites para que una vez esos limites se hayan superado, empecemos a escalar nuestros servers, containers, etc
Martin Oscar Martinez Gutierrez
Un escalamiento vertical en un cluster de servidores (ej Hypervisores) sería ampliar la capacidad de mis nodos en RAM y Procesador de cada uno de ellos y el vertical claramente agregar mas nodos a mi cluster. Con una SAN vertical sería crecer en discos en mi cajon o mejorar los discos a All Flash, y horizontal sería agregar otra SAN a mi red.
Edwin Castelblanco Sánchez
El escalado vertical (o "escalamiento hacia arriba") es un enfoque utilizado para aumentar el rendimiento de un sistema al agregar más recursos a una sola máquina o servidor. Esto se logra mediante la adición de más CPU, RAM, almacenamiento u otros recursos al servidor existente.