stringtranslate.com

Elasticidad (informática)

En informática , la elasticidad se define como "el grado en el que un sistema es capaz de adaptarse a los cambios de carga de trabajo mediante el aprovisionamiento y desaprovisionamiento de recursos de manera autónoma , de modo que en cada momento los recursos disponibles coincidan lo más posible con la demanda actual". [1] [2] La elasticidad es una característica definitoria que diferencia la computación en la nube de los paradigmas de computación distribuida propuestos anteriormente , como la computación en red . La adaptación dinámica de la capacidad, por ejemplo, alterando el uso de los recursos informáticos , para satisfacer una carga de trabajo variable se denomina "computación elástica". [3] [4]

En el mundo de los sistemas distribuidos existen diversas definiciones según los autores, algunas considerando los conceptos de escalabilidad una subparte de la elasticidad, otras como algo distinto.

Ejemplo

Ilustremos la elasticidad con un ejemplo sencillo de un proveedor de servicios que desea ejecutar un sitio web en una nube IaaS . En un momento dado , el sitio web no es popular y una sola máquina (normalmente una máquina virtual ) es suficiente para atender a todos los usuarios de la web. En otro momento , el sitio web se vuelve popular de repente, por ejemplo, como resultado de una multitud repentina , y una sola máquina ya no es suficiente para atender a todos los usuarios. Según la cantidad de usuarios web que acceden simultáneamente al sitio web y los requisitos de recursos del servidor web , es posible que se necesiten diez máquinas. Un sistema elástico debería detectar esta condición de inmediato y proporcionar nueve máquinas adicionales desde la nube, de modo de atender a todos los usuarios web de manera receptiva.

En ese momento , el sitio web se vuelve impopular nuevamente. Las diez máquinas que están asignadas actualmente al sitio web están en su mayoría inactivas y una sola máquina sería suficiente para atender a los pocos usuarios que acceden al sitio web. Un sistema elástico debería detectar esta condición de inmediato y desaprovisionar nueve máquinas y liberarlas en la nube.

Objetivo

La elasticidad tiene como objetivo hacer coincidir la cantidad de recursos asignados a un servicio con la cantidad de recursos que realmente necesita, evitando el aprovisionamiento excesivo o insuficiente. El aprovisionamiento excesivo , es decir, la asignación de más recursos de los necesarios, debe evitarse ya que el proveedor de servicios a menudo tiene que pagar por los recursos que se asignan al servicio. Por ejemplo, una instancia extragrande Amazon EC2 M4 cuesta 0,239 USD /hora. Si un servicio ha asignado dos máquinas virtuales cuando solo se necesita una, el proveedor de servicios desperdicia 2095 USD cada año. Por lo tanto, los gastos del proveedor de servicios son más altos de lo óptimo y sus ganancias se reducen.

Se debe evitar el aprovisionamiento insuficiente , es decir, la asignación de menos recursos de los necesarios, ya que de lo contrario el servicio no puede prestar un buen servicio a sus usuarios. En el ejemplo anterior, el aprovisionamiento insuficiente del sitio web puede hacer que parezca lento o inaccesible. Los usuarios web acaban desistiendo de acceder a él, por lo que el proveedor del servicio pierde clientes. A largo plazo, los ingresos del proveedor disminuirán, lo que también reducirá sus beneficios.

Problemas

Tiempo de aprovisionamiento de recursos

Un problema potencial es que la elasticidad lleva tiempo. El usuario puede adquirir una máquina virtual (VM) en la nube en cualquier momento; sin embargo, puede llevar varios minutos que la VM adquirida esté lista para usarse. El tiempo de inicio de la VM depende de factores como el tamaño de la imagen, el tipo de VM, la ubicación del centro de datos, la cantidad de VM, etc. [5] Los proveedores de la nube tienen diferentes rendimientos de inicio de VM. Esto implica que cualquier mecanismo de control diseñado para aplicaciones elásticas debe considerar en su proceso de decisión el tiempo necesario para que las acciones de elasticidad surtan efecto, [6] como el aprovisionamiento de otra VM para un componente de aplicación específico.

Monitoreo de aplicaciones elásticas

Las aplicaciones elásticas pueden asignar y desasignar recursos (como máquinas virtuales) a pedido de componentes de aplicaciones específicos. Esto hace que los recursos de la nube sean volátiles, y las herramientas de monitoreo tradicionales que asocian datos de monitoreo con un recurso particular (es decir, máquina virtual), como Ganglia o Nagios , ya no son adecuadas para monitorear el comportamiento de aplicaciones elásticas. Por ejemplo, durante su vida útil, un nivel de almacenamiento de datos de una aplicación elástica puede agregar y eliminar máquinas virtuales de almacenamiento de datos debido a los requisitos de costo y rendimiento, lo que varía la cantidad de máquinas virtuales utilizadas. Por lo tanto, se necesita información adicional para monitorear aplicaciones elásticas, como asociar la estructura lógica de la aplicación sobre la infraestructura virtual subyacente. [7] Esto, a su vez, genera otros problemas, como cómo agregar datos de múltiples máquinas virtuales para extraer el comportamiento del componente de la aplicación que se ejecuta sobre esas máquinas virtuales, ya que es posible que sea necesario agregar diferentes métricas de manera diferente (por ejemplo, se podría promediar el uso de la CPU, se podría sumar la transferencia de red).

Requisitos de elasticidad

Al implementar aplicaciones en infraestructuras en la nube (IaaS/PaaS), se deben tener en cuenta los requisitos de las partes interesadas para garantizar un comportamiento adecuado de la elasticidad. Si bien tradicionalmente se intentaría encontrar el equilibrio óptimo entre costo y calidad o rendimiento, para los usuarios de la nube del mundo real, los requisitos con respecto al comportamiento son más complejos y apuntan a múltiples dimensiones de elasticidad (por ejemplo, SYBL [8] ).

Múltiples niveles de control

Las aplicaciones en la nube pueden ser de distintos tipos y complejidades, con múltiples niveles de artefactos implementados en capas. El control de dichas estructuras debe tener en cuenta una variedad de cuestiones, un enfoque en este sentido es rSYBL. [9] Para el control de múltiples niveles, los sistemas de control deben considerar el impacto que tiene el control de nivel inferior sobre los de nivel superior y viceversa (por ejemplo, controlar máquinas virtuales, contenedores web o servicios web al mismo tiempo), así como los conflictos que pueden aparecer entre varias estrategias de control de varios niveles. [10] Las estrategias elásticas en las nubes pueden aprovechar los métodos de teoría de control (por ejemplo, el control predictivo se ha experimentado en escenarios de la nube y ha demostrado ventajas considerables con respecto a los métodos reactivos). [11]

Véase también

Referencias

  1. ^ Herbst, Nikolas; Samuel Kounev; Ralf Reussner (2013). "Elasticidad en la computación en la nube: qué es y qué no es" (PDF) . Actas de la 10.ª Conferencia internacional sobre computación autónoma (ICAC 2013), San José, California, 24-28 de junio .
  2. ^ Nikolas Herbst, Rouven Krebs, Giorgos Oikonomou, George Kousiouris, Athanasia Evangelinou, Alexandru Iosup y Samuel Kounev. ¿Listo para la lluvia? Una visión de SPEC Research sobre el futuro de las métricas de la nube. Informe técnico SPEC-RG-2016-01, SPEC Research Group - Cloud Working Group, Standard Performance Evaluation Corporation (SPEC), 2016. [1]
  3. ^ Principios y paradigmas de la computación en la nube , John Wiley and Sons, 2011, ISBN 978-0-470-88799-8
  4. ^ Pérez; et al. (15 de junio de 2009), Computación elástica responsiva , Association for Computing Machinery, ISBN 978-1-60558-578-9
  5. ^ Mao, Ming; M. Humphrey (2012). "Un estudio de rendimiento sobre el tiempo de inicio de la máquina virtual en la nube". Quinta Conferencia Internacional sobre Computación en la Nube del IEEE de 2012. pág. 423. doi :10.1109/CLOUD.2012.103. ISBN 978-1-4673-2892-0.S2CID 1285357  .
  6. ^ Gambi, Alessio; Daniel Moldovan; Georgiana Copil; Hong-Linh Truong; Schahram Dustdar (2013). "Sobre la estimación de los retrasos de actuación en sistemas de computación elástica". 2013 8º Simposio Internacional sobre Ingeniería de Software para Sistemas Adaptativos y Autogestionados (SEAMS) . pp. 33–42. CiteSeerX 10.1.1.353.691 . doi :10.1109/SEAMS.2013.6595490. ISBN .  978-1-4673-4401-2. Número de identificación del sujeto  13269185.{{cite book}}: Mantenimiento CS1: fecha y año ( enlace )
  7. ^ Moldovan, Daniel; Georgiana Copil; Hong-Linh Truong; Schahram Dustdar (2013). "MELA: Monitoreo y análisis de la elasticidad de los servicios en la nube". 2013 IEEE 5th International Conference on Cloud Computing Technology and Science . Vol. 1. págs. 80–87. doi :10.1109/CloudCom.2013.18. ISBN 978-0-7695-5095-4.S2CID8362285  .​
  8. ^ Georgiana Copil, Daniel Moldovan, Hong-Linh Truong, Schahram Dustdar, "SYBL: un lenguaje extensible para controlar la elasticidad en aplicaciones en la nube", Actas del 13.º Simposio internacional IEEE/ACM sobre computación en clúster, en la nube y en red (CCGrid) , 14 al 16 de mayo de 2013, Delft, Países Bajos
  9. ^ Georgiana Copil, Daniel Moldovan, Hong-Linh Truong, Schahram Dustdar, "Especificación, supervisión y control de la elasticidad de los servicios en la nube", Actas de la 11.ª Conferencia internacional sobre informática orientada a servicios . Berlín, Alemania, 2-5 de diciembre de 2013. doi=10.1007/978-3-642-45005-1_31
  10. ^ Kranas, Pavlos (2012). "ElaaS: Un marco innovador de elasticidad como servicio para la gestión dinámica en las capas de la pila de nube". Sexta conferencia internacional de 2012 sobre sistemas complejos, inteligentes y con uso intensivo de software . págs. 1042–1049. doi :10.1109/CISIS.2012.117. ISBN 978-1-4673-1233-2. Número de identificación del sujeto  18233634.
  11. ^ Mencagli, Gabriele; Vanneschi, Marco (6 de febrero de 2014). "Hacia un enfoque sistemático para la adaptación dinámica de cálculos paralelos estructurados utilizando control predictivo de modelos". Computación en clúster . 17 (4): 1443–1463. doi :10.1007/s10586-014-0346-3. S2CID  254374635.

Enlaces externos