cloud scalability elasticity

cloud - ¿Cuál es la diferencia entre escalabilidad y elasticidad?



scalability elasticity (7)

He escuchado a muchas personas usando ambos términos indistintamente. Sin embargo, en mi opinión, hay una diferencia entre ellos:

ESCALABILIDAD : capacidad de un sistema para aumentar la carga de trabajo en sus recursos de hardware actuales ( ampliación );

ELASTICIDAD : capacidad de un sistema para aumentar la carga de trabajo en sus recursos de hardware actuales y adicionales (dinámicamente agregados a pedido) ( escalar horizontalmente );

La elasticidad está fuertemente relacionada con las aplicaciones desplegadas en la nube.

¿Tengo la diferencia entre estas dos características de software no funcional, verdad? ¿Puede alguien dar ejemplos específicos, para que podamos dibujar un límite más distintivo entre estos dos términos?


Desde mi comprensión limitada de esos conceptos, un ejemplo:

Digamos que tenemos un sistema de 5 computadoras que hace 5 unidades de trabajo, si necesitamos que se haga una unidad de trabajo más, tendremos que usar una computadora más. Ese es un sistema escalable pero no elástico. Alguien tendrá que ir a buscar esa otra computadora. Además, si se compra una computadora nueva y ya no se necesita la unidad de trabajo adicional, el sistema se quedará atrapado con un recurso redundante.

Ahora, digamos que el mismo sistema usa, en lugar de sus propias computadoras, un servicio en la nube que se adapta a sus necesidades. Idealmente, cuando la carga de trabajo esté en una unidad de trabajo, la nube proporcionará al sistema otra "unidad informática", cuando la carga de trabajo vuelva a bajar, la nube dejará de proporcionar esa unidad informática. Esa es una situación en la que un sistema es a la vez escalable y elástico.


En términos de AWS :

La escalabilidad se refiere a la capacidad de sus recursos para aumentar o disminuir en tamaño o cantidad.

Hay una gran cantidad de infraestructura involucrada para hacer que algo así suceda, por lo que no es una tarea fácil.

Muchos de los servicios de AWS son escalables de manera predeterminada, que es una de las razones por las que AWS tiene tanto éxito.

La escalabilidad es bastante simple de definir, razón por la cual a menudo se le atribuyen algunos aspectos de la elasticidad.

Elasticidad es la capacidad de escalar sus recursos en respuesta a los criterios establecidos, a menudo reglas de CloudWatch .

Esto es lo que sucede cuando un equilibrador de carga agrega instancias cada vez que una aplicación web recibe mucho tráfico.

La escalabilidad es necesaria para la elasticidad, pero no al revés.

No todos los servicios de AWS admiten elasticidad, e incluso aquellos que lo hacen a menudo necesitan configurarse de cierta manera.

Puede parecer redundante, pero los servicios en AWS que comienzan con elástico a menudo admiten elasticidad.

-

En resumen , la escalabilidad le brinda la capacidad de aumentar o disminuir sus recursos, y la elasticidad permite que esas operaciones sucedan automáticamente de acuerdo con las reglas configuradas.


La elasticidad está relacionada con los requisitos a corto plazo de un servicio o una aplicación y su variación, pero la escalabilidad es compatible con las necesidades a largo plazo.


La escalabilidad es la capacidad del sistema para acomodar cargas más grandes con solo agregar recursos, ya sea para hacer que el hardware sea más fuerte (ampliar) o para agregar nodos adicionales (escalamiento).

Elasticidad es la capacidad de adaptarse a los recursos necesarios para hacer frente a las cargas de forma dinámica, generalmente en relación con la escala. De modo que cuando la carga aumenta, escala agregando más recursos y cuando la demanda disminuye, retrocede y elimina los recursos innecesarios. La elasticidad es principalmente importante en entornos de nube donde se paga por uso y no quiere pagar por recursos que actualmente no necesita, por un lado, y desea satisfacer la creciente demanda cuando es necesario, por otro lado.


_

Escalabilidad: "Aumento" de la capacidad para cumplir con la carga de trabajo "creciente".

Elasticidad: "Aumento o reducción" de la capacidad para cumplir con la carga de trabajo "aumentar o reducir".

Escalabilidad: en un entorno de escalado, los recursos disponibles pueden exceder para cumplir con las "demandas futuras".

Elasticidad: en el entorno elástico, los recursos disponibles coinciden con las "demandas actuales" lo más cerca posible.

Escalabilidad: la escalabilidad se adapta solo al "aumento de la carga de trabajo" al "aprovisionar" los recursos de una manera "incremental".

Elasticidad: Elasticidad se adapta tanto al "aumento de la carga de trabajo" como a la "disminución de la carga de trabajo" al "aprovisionar y desaprovisionar" recursos de una manera "autónoma".

Escalabilidad: el aumento de la carga de trabajo se logra al aumentar el poder de un solo recurso informático o al aumentar la potencia de un grupo de recursos informáticos.

Elasticidad: la carga de trabajo variable se sirve con variaciones dinámicas en el uso de los recursos informáticos.

Escalabilidad: la escalabilidad permite que una empresa satisfaga las demandas esperadas de servicios con "necesidades estratégicas a largo plazo".

Elasticidad: Elasticidad permite a una empresa cumplir con cambios inesperados en la demanda de servicios con "necesidades tácticas a corto plazo".

Escalabilidad: está "aumentando" la capacidad de servir a un entorno donde la carga de trabajo está aumentando.

Esta escalabilidad podría ser "Escalar hacia arriba" o "Escalar hacia afuera".

(Ejemplo:

Ampliación de escala: aumentar la capacidad de un servidor individual

Escalar: aumentar la capacidad al agregar varios servidores al servidor individual.)

Elasticidad: es la capacidad de "ampliar o reducir" la capacidad de servir a voluntad.

Escalabilidad: para usar un símil, "escalar" es una persona que aumenta su poder para satisfacer las crecientes demandas, y "escalar" es construir un equipo para satisfacer las crecientes demandas.

Elasticidad: para usar un símil, un actor de cine aumenta o reduce su peso corporal para satisfacer las diferentes necesidades de la industria cinematográfica.

_


Elasticidad es la capacidad de un sistema para aumentar (o disminuir) su capacidad de cálculo, almacenamiento, red, etc. en base a criterios específicos, como la carga total en el sistema.

Por ejemplo, puede implementar un sistema backend que inicialmente tenga 1 servidor en su clúster, pero configúrelo para agregar una instancia adicional al clúster si la utilización de CPU promedio por minuto de todos los servidores del clúster excede un umbral dado (p. Ej., 70% )

De forma similar, puede configurar su sistema para eliminar servidores del clúster back-end si la carga en el sistema disminuye y el uso promedio de CPU por minuto cae por debajo de un umbral definido por usted (por ejemplo, 30%).

Como otro ejemplo, puede configurar su sistema para aumentar el espacio total en disco de su clúster de backend en un orden de 2 si se usa más del 80% del almacenamiento total actualmente disponible para él. Si por alguna razón, en un momento posterior, los datos se eliminan del almacenamiento y, por ejemplo, el almacenamiento total utilizado está por debajo del 20%, puede disminuir el espacio total disponible en el disco a su valor original.

Pero algunos sistemas (por ejemplo, software heredado) no se distribuyen y tal vez solo puedan usar 1 núcleo de CPU. Por lo tanto, aunque puede aumentar la capacidad de cómputo disponible bajo demanda, el sistema no puede usar esta capacidad adicional en ninguna forma o forma. Tales sistemas no son escalables . Pero un sistema escalable puede usar una mayor capacidad de procesamiento y manejar más carga sin afectar el rendimiento general del sistema.

Sin embargo, un sistema escalable no depende de la elasticidad. Tradicionalmente, los departamentos de TI podían reemplazar sus servidores existentes por servidores más nuevos que tenían más CPU, RAM y almacenamiento, y transferían el sistema al nuevo hardware para emplear la capacidad de cómputo adicional disponible.

Los entornos en la nube (AWS, Azure, Google Cloud, etc.) ofrecen elasticidad y algunos de sus servicios principales también son escalables desde el primer momento. Además, si construye un software escalable, puede implementarlo en estos entornos de nube y beneficiarse de la infraestructura elástica que le proporcionan para aumentar / disminuir automáticamente los recursos de cómputo disponibles bajo demanda.


Por lo general, cuando alguien dice una plataforma o escalas arquitectónicas, significa que los costos de hardware aumentan linealmente con la demanda. Por ejemplo, si un servidor puede manejar 50 usuarios, 2 servidores pueden manejar 100 usuarios y 10 servidores pueden manejar 500 usuarios. Si cada 1,000 usuarios que recibe, necesita el doble de la cantidad de servidores, entonces puede decirse que su diseño no escala, ya que se agotaría rápidamente a medida que aumentara el número de usuarios.

Elasticity se usa para describir qué tan bien su arquitectura se puede adaptar a la carga de trabajo en tiempo real. Por ejemplo, si tuviera un inicio de sesión de usuario cada hora en su sitio, entonces realmente solo necesitaría un servidor para manejar esto. Sin embargo, si de repente, 50,000 usuarios iniciaron sesión a la vez, ¿su arquitectura puede aprovisionar rápidamente (y posiblemente automáticamente) nuevos servidores web sobre la marcha para manejar esta carga? Si es así, podría decirse que su diseño es elástico .