You don't have access to this class

Keep learning! Join and start boosting your career

Aprovecha el precio especial y haz tu profesión a prueba de IA

Antes: $249

Currency
$209
Suscríbete

Termina en:

0 Días
5 Hrs
15 Min
49 Seg
Curso de Introducción a la Nube

Curso de Introducción a la Nube

Carlos Andrés Zambrano Barrera

Carlos Andrés Zambrano Barrera

Escalabilidad Horizontal vs Vertical

22/27
Resources

What is scalability and why is it important?

Scalability is a fundamental concept in the cloud world, enabling applications to handle variations in service demand. Imagine a service like Platts & Wallen launching a promotion on Black Friday, attracting millions of transactions. The key is to properly scale the application to support such a load without crashing, and then reduce resources when demand decreases, keeping costs under control.

Scalability not only ensures that applications respond flexibly to demand, but also optimizes the use of resources efficiently. This is vital for any company looking to get the most out of its cloud services.

What types of scalability are there?

How does vertical scalability work?

Vertical scalability involves adding more resources to a single server or node to handle an increase in demand. In practical terms, if a server needs to handle more users than it can support, capabilities such as CPU, RAM and storage are increased.

  • Process:
    1. Shut down the server.
    2. Increase its resources.
    3. Turn it back on.

The disadvantage here is the downtime, since it is necessary to restart the server every time the resources are adjusted. This type of scalability has its limitations, since eventually the physical limit of what a single server can handle will be reached.

What is horizontal scalability?

On the other hand, horizontal scalability refers to adding more nodes or servers to distribute the workload. This not only supports increased demand, but does so with minimal or no service disruption.

  • Advantages:
    1. No downtime when scaling.
    2. Allows for almost instantaneous resource growth.
    3. Offers redundancy, helping to maintain high availability.

This method is more flexible, allowing adding and removing nodes according to the fluctuation of users, and is the preferred method when seeking to keep the service always available.

Is scalability without high availability enough?

Scalability in itself is not enough without a design that also considers high availability. Even if you handle large volumes of users and transactions, if this growth occurs in a single availability zone, you run the risk of losing access to the service if that zone fails.

To ensure that an application is truly prepared for unexpected traffic and peaks without sacrificing performance, it must:

  • Be designed to operate across multiple availability zones.
  • Scale horizontally to spread the load.
  • Respond dynamically to user demand with comprehensive support at all layers.

Coupling scalability with high availability improves both resiliency and the application's ability to sustain continuous change and demand, giving the service the robustness needed in today's competitive technology environment.

Contributions 16

Questions 2

Sort by:

Want to see more contributions, questions and answers from the community?

ESCALABILIDAD: es la capacidad de incrementar o decrementar los recursos necesarios para complir la demanda cambiante en una aplicación o servicio.
Crecer y decrecer basado en la demanda que recibe nuestra aplicación.
Ejemplo: descuentos por pago en Black Friday. Entonces, los servicios que reciben pago crezcan y soporten al incremento de la cantidad de usuarios por la oferta y luego de pasada la oferta estos mismos servicios decrecen.

  • ESCALABILIDAD VERTICAL: es la escalabilidad de añadir más recursos a un nodo particular dentro de un sistema. Hay una caída del servicio mientras se hace el cambio. Ejemplo: A un determinado servidor lo apago, le aumento los recursos (cpu, ram, disco) y lo vuelvo a prender. Luego tendré que apagarlos para volver a los recursos a sus niveles anteriores.
    No cambia la cantidad de servidores. Hubo caída del servicio cuando lo apago.

  • ESCALABILIDAD HORIZONTAL: es la capacidad de agregar más nodos para soportar una demanda creciente de solicitudes en un sistema. Ejemplo: replicar servidores en el momento de más carga. No tenemos DOWNTIME (caída del servicio).

¿Sirve ESCALABILIDAD sin alta DISPONIBILIDAD?
La ESCALABILIDAD está en más de una ZONA. Porque si solo escalamos en una zona perdemos ALTA DISPONIBILIDAD.

Escalabilidad Horizontal: También conocida como “escalado hacia afuera”, implica agregar más instancias de recursos (como servidores) para manejar el aumento de la carga. En lugar de aumentar la potencia de un solo recurso, se distribuyen las cargas de trabajo en múltiples instancias. Es útil para manejar cargas impredecibles y permite un crecimiento más flexible.

Escalabilidad Vertical: También conocida como “escalado hacia arriba”, consiste en mejorar la potencia de un único recurso, como agregar más CPU, memoria o capacidad de almacenamiento. Es efectiva para mejorar el rendimiento de una sola instancia, pero puede tener limitaciones prácticas debido a las restricciones físicas del hardware.

estoy 99% seguro de que si mezclas escabilidad verticlal con horizontal, no tienes downtime, porque lo que tarda en levantarse el nuevo servidor con mas recursos podrias enviar una señal de que el servidor esta listo y apagar el servidor viejo de menos recursos.

A la hora de diseñar una aplicación resiliente a los cambios, debemos tener en cuenta: * Que sea escalable en todas las capas * Que soporte demanda creciente de usuarios * Que ajuste su capacidad (crecer y decrecer según se requiera) * No perder la alta disponibilidad a la hora de aumentar recursos.

Escalabilidad

💡 Escalabilidad se refiere al hecho de incrementar o decrementar los recursos o servicios basados en la demanda o carga de trabajo en determinado tiempo.

💡 Escalamiento Vertical Es el proceso de agregar más recursos para incrementar el poder de un servidor existente (Memoria, CPU, SSD, etc.).

💡 Escalamiento Horizontal Crear una copia exacta del servidor para que ya no sea solo uno, sino sean dos los que reciben solicitudes (de tráfico de red) o trabajen en ciertos procesos.

Elasticidad

💡 Elasticidad es la capacidad de llevar a cabo un escalamiento automático, ampliar o reducir rápidamente los recursos informáticos (Procesamiento, Memoria y Almacenamiento) para satisfacer la demanda del mercado.

¿Qué ventajas proporciona la elasticidad de la computación en la nube?

  • Puede atender mejor a los usuarios durante los períodos de mayor tráfico agregando automáticamente más capacidad.
  • Puede ahorrar dinero eliminando servidores fuera del horario laboral.

Agilidad

💡 Agilidad Es la flexibilidad o rapidez en la nube de escalar nuestros recursos en cuestión de segundos.

Características:

  • Capacidad de responder al cambio rápidamente basado en los cambios en el mercado o en el entorno
  • Garantia de un tiempo de comercialización rápido
# Comparación: Escalabilidad Vertical vs Horizontal ![](https://static.platzi.com/media/user_upload/image-d4a7bc65-8155-46d4-b347-88277ca26aec.jpg) La elección entre escalabilidad vertical y horizontal depende de los requisitos específicos de la aplicación, el presupuesto, y la infraestructura existente. En general, las aplicaciones modernas tienden a aprovechar la escalabilidad horizontal debido a sus ventajas en términos de disponibilidad y flexibilidad. Sin embargo, la escalabilidad vertical sigue siendo una opción viable y efectiva para ciertas situaciones, especialmente cuando la simplicidad es una prioridad.
La escalabilidad depende de la cantidad de usuarios que esten haciendo solicitudes, si tienes un superservidor pero no hay nadie haciendo solicitudes solo estas gastando recursos. Es como terner una PC gamer de ultiam generacion para jugar pacman.
En una arquitectura de escalabilidad vertical, al aumentar los recursos de un nodo (por ejemplo, un servidor), efectivamente habrá un tiempo de inactividad mientras se realizan los cambios. Durante este tiempo, la otra zona (AZ2) podría seguir procesando peticiones si está configurada para hacerlo. Sin embargo, esto no garantiza que no haya fallas, ya que dependerá de cómo esté diseñada la arquitectura y la distribución de la carga. La mejor práctica es usar escalabilidad horizontal, que permite agregar nodos sin downtime y mantener la disponibilidad del servicio.
## **📈 Escalabilidad Horizontal vs. Escalabilidad Vertical** La **escalabilidad** es la capacidad de un sistema para aumentar su rendimiento a medida que crece la demanda. Existen **dos enfoques principales**: ## **1️⃣ Escalabilidad Vertical (Scale-Up)** 🔹 **¿Qué es?** Aumentar la **capacidad de un solo servidor** (más CPU, RAM, almacenamiento, etc.). 🔹 **Cómo se logra:** ✔️ Mejorar el hardware (procesador más potente, más memoria, discos más rápidos). ✔️ Migrar a una máquina más poderosa (**ejemplo: cambiar de un servidor de 16GB RAM a uno de 64GB**). ✅ **Ventajas:** ✔️ Simplicidad: Menos cambios en la arquitectura. ✔️ Puede ser más eficiente para aplicaciones monolíticas. ❌ **Desventajas:** ❌ **Límite físico:** No se puede escalar indefinidamente. ❌ **Punto único de falla:** Si el servidor falla, todo el sistema cae. ❌ **Costoso:** Máquinas más potentes son más caras. 📌 **Ejemplo en la nube:** * Aumentar el tamaño de una **instancia EC2 en AWS** (pasar de t2.micro a t3.large). * Cambiar una base de datos de **Google Cloud SQL** a un tamaño mayor. ## **2️⃣ Escalabilidad Horizontal (Scale-Out)** 🔹 **¿Qué es?** Añadir **más servidores** para distribuir la carga de trabajo. 🔹 **Cómo se logra:** ✔️ Agregar más instancias y distribuir la carga con un **balanceador de carga**. ✔️ Descomponer una aplicación monolítica en **microservicios** para escalar partes específicas. ✅ **Ventajas:** ✔️ **Alta disponibilidad**: Si un nodo falla, los demás siguen funcionando. ✔️ **Escalabilidad infinita**: Se pueden agregar más servidores según sea necesario. ✔️ **Eficiencia de costos**: Mejor aprovechamiento de recursos. ❌ **Desventajas:** ❌ **Mayor complejidad:** Requiere arquitecturas distribuidas y balanceadores de carga. ❌ **Latencia**: La comunicación entre servidores puede afectar el rendimiento. 📌 **Ejemplo en la nube:** * **AWS Auto Scaling**: Se agregan instancias EC2 cuando aumenta la demanda. * **Google Kubernetes Engine (GKE)**: Escalar contenedores automáticamente. * **Base de datos distribuida** como **Google Spanner o Amazon DynamoDB**. ## **📊 Comparación:** **CaracterísticaEscalabilidad VerticalEscalabilidad HorizontalMétodo**Mejorar el hardware del servidorAgregar más servidores**Límite de crecimiento**Limitado por la máquinaEscalabilidad casi infinita**Costo**Alto (máquinas potentes son caras)Mejor optimización de costos**Disponibilidad**Punto único de fallaMayor disponibilidad**Complejidad**BajaAlta (requiere balanceo de carga y distribución de datos)**Ejemplo**Aumentar RAM de un servidorAgregar más servidores con balanceador de carga ## **🚀 ¿Cuál elegir?** ✔ **Escalabilidad Vertical** → Si el crecimiento es **moderado** y la arquitectura es monolítica. ✔ **Escalabilidad Horizontal** → Si necesitas **alta disponibilidad, distribución de carga y crecimiento continuo**.
La \*\*escalabilidad horizontal\*\* consiste en agregar más nodos o servidores al sistema para manejar un aumento en la carga de trabajo. Por ejemplo, si una aplicación necesita más capacidad de procesamiento, se añaden servidores adicionales para distribuir la carga. Este enfoque es común en arquitecturas distribuidas como las basadas en contenedores o microservicios y permite mejorar el rendimiento sin modificar los servidores existentes. La escalabilidad horizontal es flexible, resiliente y suele ser más adecuada para sistemas modernos que necesitan crecer dinámicamente. Por otro lado, la \*\*escalabilidad vertical\*\* implica aumentar la capacidad de un solo servidor, mejorando su hardware (como CPU, memoria o almacenamiento) o actualizando su configuración. Por ejemplo, si un servidor no puede manejar más solicitudes, se le asigna más potencia de procesamiento o memoria. Aunque este método es más sencillo de implementar inicialmente, tiene limitaciones físicas y económicas, ya que existe un límite en cuánto se puede mejorar un solo servidor. Además, si ese servidor falla, todo el sistema puede quedar inoperativo. En resumen, la \*\*escalabilidad horizontal\*\* crece agregando más servidores, mientras que la \*\*escalabilidad vertical\*\* lo hace mejorando un solo servidor. La primera es más flexible y adecuada para sistemas distribuidos, mientras que la segunda es más directa pero limitada en su capacidad de crecimiento.
Generalmente en producciones se utiliza Kubernetes para escalar ya que es una herramienta muy eficaz para gestionar y automatizar este proceso. Kubernetes permite escalar aplicaciones de manera dinámica según las necesidades del negocio,
El proveedor de la nube gestiona la infraestructura y los recursos, pero el dueño de la aplicación puede elegir cómo escalar su arquitectura. Si comprende bien la escalabilidad, puede optar por escalabilidad horizontal (agregar más instancias) o vertical (aumentar recursos en una sola instancia) según sus necesidades. Después de un evento de alta demanda, en la escalabilidad horizontal, puede simplemente desactivar instancias adicionales sin downtime, lo que optimiza costos y recursos.
La escalabilidad sin alta disponibilidad podría ser suficiente si tu aplicación no requiere estar disponible todo el tiempo y puede tolerar ciertos periodos de inactividad. Sin embargo, para aplicaciones que necesitan estar siempre accesibles, la alta disponibilidad es crucial.
Escalamiento Horizontal: ![](https://static.platzi.com/media/user_upload/image-1bb73e5e-b2a2-485f-a2ec-497aef507bd7.jpg) Escalamiento Vertical: ![](https://static.platzi.com/media/user_upload/image-50f4c70d-85f1-4d20-9f15-1da73b4862af.jpg) <https://www.linkedin.com/pulse/cu%C3%A1l-es-la-diferencia-entre-escalabilidad-vertical-y-c%C3%B3mo-cerrudo-kw5bf/>

Tipos de escalamiento: vertical y horizontal tomado del audiocurso con el PeladoNerd