En informática , la elasticidad se define como «el grado en que un sistema es capaz de adaptarse a los cambios en la carga de trabajo mediante el aprovisionamiento y desaprovisionamiento de recursos de forma autónoma , de modo que en cada momento los recursos disponibles se ajusten lo mejor posible a 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 malla . La adaptación dinámica de la capacidad, por ejemplo, modificando 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 varias definiciones según los autores; algunos consideran que el concepto de escalabilidad es una subparte de la elasticidad, otros lo consideran distinto.
Objetivo
La elasticidad busca igualar la cantidad de recursos asignados a un servicio con la cantidad de recursos que realmente requiere, evitando el sobredimensionamiento o el subdimensionamiento. El sobredimensionamiento , es decir, asignar más recursos de los necesarios, debe evitarse, ya que puede generar costos adicionales (monetarios, energéticos, operativos, etc.) por recursos no utilizados o subutilizados. Por ejemplo, si un sitio web cuenta con dos recursos de computación en la nube para gestionar una demanda actual que solo requiere uno, los costos de mantenimiento del segundo recurso se desperdiciarían.
Debe evitarse la subutilización de recursos , es decir, la asignación de menos recursos de los necesarios; de lo contrario, el servicio no podrá ofrecer un buen servicio a sus usuarios. Por ejemplo, una subutilización de recursos en un sitio web puede hacer que parezca lento o inaccesible, ya que no se han asignado suficientes recursos para satisfacer la demanda actual.
Ejemplo
La elasticidad se puede ilustrar mediante el ejemplo de un proveedor de servicios que quiere ejecutar un sitio web en la nube. En este momentoEl sitio web no es popular y una sola máquina es suficiente para atender a todos los usuarios. En este momentoDe repente, el sitio web se vuelve muy popular y una sola máquina ya no es suficiente para atender a todos los usuarios. Según la cantidad de usuarios que acceden simultáneamente al sitio web y los requisitos de recursos del servidor web , se necesitan diez máquinas. Un sistema elástico debería detectar esta situación de inmediato y aprovisionar nueve máquinas adicionales desde la nube para atender a todos los usuarios de forma eficiente.
En ese momentoEl sitio web vuelve a perder popularidad. Las diez máquinas asignadas actualmente al sitio web están prácticamente inactivas, y una sola sería suficiente para atender a los pocos usuarios que acceden al sitio. Un sistema elástico debería detectar esta situación de inmediato y desasignar nueve máquinas, liberándolas a la nube.
Problemas
Tiempo de aprovisionamiento de recursos
El aprovisionamiento de recursos requiere tiempo. El usuario puede adquirir una máquina virtual (VM) en la nube en cualquier momento; sin embargo, puede tardar varios minutos en estar lista para su uso. 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 , el número de VM, etc. [ 5 ] Los proveedores de nube presentan diferentes tiempos de inicio de VM. Esto implica que cualquier mecanismo de control diseñado para aplicaciones elásticas debe considerar el tiempo necesario para que las acciones de aprovisionamiento de recursos surtan efecto. [ 6 ]
Monitoreo de aplicaciones elásticas
Las aplicaciones elásticas pueden asignar y desasignar recursos bajo demanda para componentes específicos de la aplicación. Esto hace que los recursos en la nube sean volátiles, y las herramientas de monitoreo tradicionales que asocian datos de monitoreo con un recurso particular, como Ganglia o Nagios , ya no son adecuadas para monitorear el comportamiento de las aplicaciones elásticas. Por ejemplo, durante su ciclo de vida, 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, variando la cantidad de máquinas virtuales utilizadas. Por lo tanto, se necesita información adicional para monitorear las 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 la agregación de 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 diferentes métricas pueden necesitar ser agregadas de manera diferente (por ejemplo, el uso de CPU podría promediarse, la transferencia de red podría sumarse).
Requisitos de las partes interesadas
Al implementar aplicaciones en infraestructuras en la nube ( IaaS / PaaS ), es necesario considerar los requisitos de las partes interesadas para garantizar que el comportamiento elástico satisfaga sus necesidades. Tradicionalmente, se considera el equilibrio óptimo entre costo y calidad o rendimiento; sin embargo, para los usuarios reales de la nube, los requisitos con respecto al comportamiento elástico son más complejos y abarcan múltiples dimensiones de elasticidad (por ejemplo, SYBL [ 8 ] ).
Múltiples niveles de control
Las aplicaciones en la nube varían en tipo y complejidad, con múltiples niveles de artefactos desplegados en capas. El control de tales estructuras debe tener en cuenta una variedad de problemas. Para el control multinivel, los sistemas de control deben considerar el impacto que el control de nivel inferior tiene 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 diferentes niveles. [ 9 ] Las estrategias elásticas en la computación en la nube pueden aprovechar los métodos de la teoría de control (por ejemplo, el control predictivo se ha experimentado en escenarios de computación en la nube mostrando ventajas considerables con respecto a los métodos reactivos). [ 10 ] Un enfoque para el control elástico multinivel en la nube es rSYBL . [ 11 ]
Véase también
Referencias
- ↑ 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é, CA, 24-28 de junio . Archivado del original (PDF) el 7 de enero de 2018. Consultado el 10 de julio de 2013 .
- ↑ Nikolas Herbst, Rouven Krebs, Giorgos Oikonomou, George Kousiouris, Athanasia Evangelinou, Alexandru Iosup y Samuel Kounev. ¿Preparados para la lluvia? Una perspectiva de SPEC Research sobre el futuro de las métricas en la nube. Informe técnico SPEC-RG-2016-01, Grupo de Investigación SPEC - Grupo de Trabajo sobre la Nube, Standard Performance Evaluation Corporation (SPEC), 2016.
- ↑ Principios y paradigmas de la computación en la nube , John Wiley and Sons, 2011, ISBN 978-0-470-88799-8
- ↑ Pérez; et al. (15 de junio de 2009), Responsive Elastic Computing , Association for Computing Machinery, ISBN 978-1-60558-578-9
- ↑ Mao, Ming; M. Humphrey (2012). "Estudio de rendimiento sobre el tiempo de inicio de las máquinas virtuales en la nube". Quinta Conferencia Internacional IEEE de Computación en la Nube de 2012. pág. 423. doi : 10.1109/CLOUD.2012.103 . ISBN 978-1-4673-2892-0. S2CID 1285357 .
- ↑ Gambi, Alessio; Daniel Moldovan; Georgiana Copil; Hong-Linh Truong; Schahram Dustdar (2013). "Sobre la estimación de 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. S2CID 13269185 .
- ↑ 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. pp. 80–87 . doi : 10.1109/CloudCom.2013.18 . ISBN 978-0-7695-5095-4. S2CID 8362285 .
- ↑ Copil, Georgiana; Moldovan, Daniel; Truong, Hong-Linh; Dustdar, Schahram (2013). "SYBL: Un lenguaje extensible para controlar la elasticidad en aplicaciones en la nube" . 2013 13.º Simposio Internacional IEEE/ACM sobre Computación en Clúster, Nube y Grid . pp. 112–119 . doi : 10.1109/CCGrid.2013.42 . ISBN 978-1-4673-6465-2.
- ↑ Kranas, Pavlos (2012). «ElaaS: Un marco innovador de elasticidad como servicio para la gestión dinámica en todas las capas de la pila de la nube». Sexta Conferencia Internacional de 2012 sobre Sistemas Complejos, Inteligentes y con Uso Intensivo de Software . pp. 1042–1049 . doi : 10.1109/CISIS.2012.117 . ISBN 978-1-4673-1233-2. S2CID 18233634 .
- ↑ 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 mediante control predictivo de modelos". Cluster Computing . 17 (4): 1443– 1463. doi : 10.1007/s10586-014-0346-3 . S2CID 254374635 .
- ↑ Copil, Georgiana; Moldovan, Daniel; Truong, Hong-Linh; Dustdar, Schahram (2013). "Control de elasticidad multinivel de servicios en la nube" . Computación orientada a servicios . Notas de clase en ciencias de la computación. Vol. 6470. págs. 429–436 . doi : 10.1007/978-3-642-45005-1_31 . ISBN 978-3-642-17357-8.
Enlaces externos
- Definición de computación en la nube según el NIST . Peter Mell y Timothy Grance, Publicación especial 800-145 del NIST (septiembre de 2011). Instituto Nacional de Estándares y Tecnología, Departamento de Comercio de los Estados Unidos.
- computación distribuida
- computación en la nube