1. Introducción
La computación en la nube ha surgido como una alternativa al uso de recursos centralizados y se ha convertido en una solución viable para empresas y centros de investigación debido a su aspecto económico (Rashid y Chaturvedi, 2019; Gong et al., 2010). Los proveedores de servicios en la nube ofrecen servicios de renta de recursos, como capacidad de almacenamiento y ciclos de almacenamiento (George y Pramila, 2021; Zhou et al., 2010), y una amplia variedad de servicios, tales como infraestructura como servicio (IaaS), software como servicio (SaaS), plataformas como servicios (PaaS), almacenamiento, copias de seguridad, bases de datos, análisis de datos, Internet de las cosas (IoT), Inteligencia artificial (IA) y aprendizaje automático (machine learning) (Bokhari et al., 2018; Meade et al., 2013; Mell y Grance, 2011).
Existen cuatro principales modelos de implementación de servicios en la nube: privados, públicos, comunitarios e híbridos (Bokhari et al., 2018; Dillon et al., 2010). En el contexto de la computación en la nube, existen diferentes paradigmas, siendo el más conocido el de Infraestructura como servicio (IaaS) (Chhabra et al., 2021), que está relacionado con la noción de cómputo en la nube (Malla y Christensen, 2020; Sotomayor et al., 2009). Existe una cantidad considerable de servicios de cómputo en la nube (Hoefer y Karagiannis, 2010), y casi todas las implementaciones se pueden plantear en términos de un servicio SaaS (Rimal et al., 2009).
Dado que cada tipo de aplicación requiere una cantidad diferente de recursos para desempeñarse de forma efectiva, resulta esencial revisar los estudios más relevantes relacionados con la computación de alto rendimiento (HPC) en la nube e identificar las principales tendencias y desafíos en su adopción. La revisión permitirá generar una categorización de los trabajos revisados según las principales tendencias detectadas y así identificar los tipos de implementaciones más relevantes según su ámbito de aplicación.
Con el fin de orientar el estudio, se plantearon las siguientes preguntas de investigación:
¿Qué tendencias pueden ser identificadas en la adopción de HPC en la nube?
¿Cuáles son los principales desafíos en la adopción de HPC en la nube?
¿Cómo se pueden categorizar las principales aportaciones científicas en el área de la HPC en la nube?
La revisión de la literatura se llevó a cabo mediante una metodología narrativa, que permitió responder de manera puntual a las preguntas de investigación (Wiles, 2011). Para ello, se utilizaron bases de datos como Web of Science, Scopus y Google Scholar, utilizando términos clave relacionados con la computación en la nube y la HPC, tales como "high performance computing", "cloud computing", "IaaS", entre otros. Posteriormente, se realizó una selección de los estudios relevantes y se procedió a su análisis crítico. Una vez identificadas las principales tendencias y desafíos en la adopción de HPC en la nube, se presenta una propuesta de categorización de los trabajos revisados según las principales tendencias detectadas y se expondrán las conclusiones obtenidas a partir de la revisión.
1.1. Aplicaciones de HPC
Aquellas aplicaciones que requieren una gran cantidad de recursos computacionales son conocidas como Computación de Alto Rendimiento (HPC). HPC es una disciplina de las tecnologías de la información con una gran cantidad de aplicaciones, con grandes requerimientos de recursos, en diferentes campos como la ciencia, economía, ingeniería aeroespacial, etc. (Netto et al., 2019 ; Mauch et al., 2012); sin embargo, los sistemas HPC tradicionales son costosos y requieren una gran cantidad de recursos (Lynn et al., 2020), lo que limita su accesibilidad para muchos usuarios. En diversas aplicaciones, se requiere de modelos matemáticos para obtener un resultado satisfactorio, dichos modelos frecuentemente requieren grandes cantidades de recursos computacionales para llevar a cabo experimentos a gran escala o reducir la complejidad computacional en un momento dado (Vecchiola et al., 2009). Tradicionalmente, las aplicaciones de desempeño alto están basadas en sistemas de tipo redes o grupos (Duran-Limon et al., 2011). Ya que el cómputo en la nube ha experimentado un gran crecimiento en el modelo de tipo “paga sobre la marcha”, la comunidad científica ha mostrado considerable interés en su uso, dada la capacidad de sólo gastar el dinero correspondiente a los recursos computacionales requeridos en una aplicación dada (Jackson et al., 2010).
1.2. HPC en la nube
El uso de recursos computacionales bajo demanda proporciona una mejora al obtener resultados a problemas grandes en un tiempo aceptable (Wang et al., 2017). El interés en el uso de servicios de HPC en la nube crece conforme a su disponibilidad, poder de cómputo y desempeño incrementan (Expósito et al., 2012). Algunas de las compañías que ofrecen estos servicios lo hacen con tecnología patentada, aunque en algunos casos también se hace a través de código abierto (Dukaric y Juric, 2012; Wind, 2011; Cordeiro et al., 2010). Una parte fundamental del cómputo en la nube es el proporcionar infraestructura como un servicio, esto es logrado típicamente proporcionando máquinas virtuales a los usuarios para completar sus tareas (von Laszewski et al., 2012; Vila et al., 2019).
A pesar de que existen un gran número de iniciativas para el despliegue de HPC en la nube, hay un número de problemas asociados a las aplicaciones de gran desempeño (Benedict, 2013), siendo las principales; virtualización, desempeño, manejo de memoria, seguridad, dominio de aplicación e impactos económicos.
2. Tendencias
La revisión de trabajos realizada permitió de manera general identificar las siguientes tendencias en estudios referentes al HPC en la nube que de manera general se clasificaron en: aportaciones relacionadas a la virtualización, desempeño de los sistemas, aportaciones relacionadas al dominio de la aplicación, gestión de recursos y finalmente los relacionados a los aspectos económicos.
Virtualización: Es una técnica que permite la creación de múltiples instancias de sistemas operativos y aplicaciones en una misma infraestructura de hardware, lo que permite el uso eficiente de recursos y la mejora del desempeño de los sistemas. En el ámbito de la HPC en la nube, la virtualización ha sido objeto de un gran interés en la investigación, con un enfoque particular en el desarrollo de sistemas de peso ligero (Ren et al., 2017; Duran-Limon et al., 2011; Xavier et al., 2013; Lee et al., 2013; Dai et al., 2013; Chaudhary et al., 2008), peso pesado (Regola y Ducom, 2010; Youseff et al., 2006), hipervisores (Younge et al., 2011; Regola y Ducom, 2010; Perera et al., 2011; Aladyshev et al., 2018) y enfoques híbridos (Zhang y Panda, 2017; Stewart et al., 2012; Lee et al., 2013).
La virtualización de peso ligero y los contenedores son enfoques importantes para reducir los costos generales del uso de HPC en la nube (Ren et al., 2017; Colonnelli et al., 2020). Xavier et al. (2013) evaluaron el desempeño de la virtualización basada en contenedores para HPC, mientras que Lee et al. (2013) investigaron técnicas de optimización como la virtualización ligera y la afinidad de CPU. Guidi et al. (2021) demostraron que dar acceso directo a las I/O a las máquinas virtuales puede reducir la brecha en el desempeño entre implementaciones en la nube y nativas.
El hipervisor es un factor crítico en el desempeño experimentado por el sistema operativo invitado y las aplicaciones en máquinas de alto desempeño. Younge et al. (2011) evaluaron la factibilidad de entornos de virtualización HPC y determinaron que los hipervisores deben cumplir ciertas condiciones, siendo la máquina virtual basada en el núcleo (KVM) la mejor opción para implementaciones en la nube. Perera et al. (2011) identificaron características importantes para los clientes al seleccionar un hipervisor.
La virtualización híbrida puede minimizar los problemas causados por un solo enfoque de virtualización. Zhang y Panda (2017) propusieron una virtualización híbrida que utiliza procesos MPI almacenados en diferentes contenedores y máquinas virtuales, mientras que Stewart et al. (2012) presentaron un enfoque híbrido que ofrece un desempeño superior al de la virtualización completa, aunque no tan bueno como el de la para-virtualización o la virtualización del sistema operativo, con la capacidad adicional de virtualizar sistemas operativos invitados arbitrariamente.
Desempeño: En la investigación del HPC en la nube, se ha detectado una tendencia general hacia la mejora del rendimiento de los sistemas. Uno de los mayores desafíos en esta área es la necesidad de mejorar la eficiencia del almacenamiento, la entrada/salida (I/O), la resolución de problemas relacionados con la comunicación, como el ancho de banda, la tolerancia a fallos y las latencias.
Para mejorar la eficiencia del almacenamiento, se están investigando nuevos enfoques para reducir los tiempos de acceso a los datos (Kundu et al., 2010; Agarwal y Prasad, 2012; Chen et al., 2011). Ekanayake y Fox (2010) presentan experimentos en los que se comparan diversas aplicaciones con altos requerimientos de almacenamiento, indicando que muchas de ellas utilizan tareas paralelas para acceder a los datos almacenados en discos locales, aunque no está claro cómo funcionaría este enfoque usando máquinas virtuales.
Los costos de virtualización son especialmente visibles en la virtualización de I/O, donde el host o el monitor de la máquina virtual (VMM) debe revisar cada operación I/O. Esto no es favorable para aplicaciones HPC donde el desempeño de la comunicación es crítico (Maliszewski et al., 2019).
Ren et al. (2017) proponen una infraestructura de nube para aplicaciones HPC basada en la máquina virtual liviana "nOSV" que ejecuta aplicaciones HPC básicas y preserva la flexibilidad de la nube al permitir la virtualización anidada. Zhang y Panda (2017) proponen enfoques de virtualización para evitar cuellos de botella en cargas intensivas de E/S y sugieren una solución compuesta por una localidad de dos capas de alto rendimiento y una biblioteca MPI compatible con NUMA. Además, Expósito et al. (2013) muestran que el uso de discos efímeros proporciona un mejor rendimiento que los volúmenes EBS y que el rendimiento general puede verse limitado por un bajo rendimiento en la red. Para mejorar el desempeño de I/O en aplicaciones HPC, Shan et al. (2008) proponen caracterizar y predecir el desempeño de I/O seleccionando requerimientos de I/O que correspondan a los patrones de aplicaciones específicas, mientras que Liu et al. (2011) sugieren que la configurabilidad de los servicios de nube pública puede proporcionar oportunidades para mejorar el rendimiento y/o reducir los costos de las aplicaciones de HPC. En particular, los clusters basados en la nube pueden permitir al usuario construir soluciones de I/O paralelas que satisfagan todas las necesidades de la aplicación, según lo analizado por Yu y Vetter (2008).
La variación en los retardos y el rendimiento inestable de la red tienen un fuerte impacto negativo en las aplicaciones científicas (Llopis et al., 2019). Incluso una granularidad de tiempo de decenas de milisegundos puede causar fluctuaciones en el rendimiento de una aplicación rápida de 1 Gb/s a cero (Wang et al., 2010). La configuración de parámetros, la pérdida de paquetes y la virtualización de la máquina son factores que afectan el rendimiento TPC.
El ancho de banda es una condición determinante para los entornos de computación en la nube, y la disponibilidad de interconexiones Infiniband en máquinas virtuales mejora el rendimiento para aplicaciones científicas (Brunetta y Borin, 2019; Ramakrishnan et al., 2012).
La escalabilidad de las aplicaciones HPC depende del soporte de las redes de comunicación en entornos virtualizados. Las latencias de arranque altas y los anchos de banda limitados limitan severamente la escalabilidad de programas intensivos en comunicación (Expósito et al., 2012).
La tolerancia a fallos permite a sistemas HPC con múltiples nodos en la nube completar la ejecución de aplicaciones intensivas, como el enfoque de redundancia en el nivel de proceso (PLR) presentado por Egwutuoha et al. (2012, 2012b, 2013).
Dominio de aplicación: Otra forma de clasificar las aportaciones científicas en HPC en la nube agrupando es según el dominio de aplicación.
En el ámbito científico, la HPC en la nube se ha utilizado para acelerar la investigación en diversos campos, como la física, la química, la biología y la medicina. De manera general, los científicos han utilizado la HPC en la nube para modelar y simular sistemas complejos (Sharma y Jadhao, 2021; Vecchiola et al., 2009; Changchun et al., 2011; Hoffa et al., 2008; Jackson et al., 2010).
En el dominio de datos intensivos, la HPC en la nube se utiliza para manejar grandes conjuntos de datos y realizar análisis complejos en ellos. La HPC en la nube permite el procesamiento paralelo y distribuido, lo que acelera el tiempo de respuesta y reduce el costo total del procesamiento de datos (Abadi, 2009; Cooper et al., 2010; Shamsi et al., 2013).
En áreas tan particulares cómo la física de altas energías (Sobie et al., 2011), la HPC en la nube se ha utilizado para modelar y simular fenómenos altamente complejos, lo que ayuda a comprender mejor las problemáticas.
En el campo de la bioinformática, la HPC en la nube se enfoca a demostrar que la computación en la nube y la virtualización son tecnologías que pueden ser utilizadas para abordar los desafíos en el análisis de datos biológicos, especialmente en términos de escalabilidad y eficiencia de los recursos de cómputo (Yin et al., 2019). Además, se discuten las posibles soluciones para abordar los desafíos y limitaciones actuales de estas tecnologías emergentes, incluyendo la necesidad de desarrollar algoritmos más eficientes y optimizados para su uso en plataformas de cómputo en la nube (Ekanayake et al., 2011; Youseff et al., 2006b; Arrais y Oliveira, 2010; Benedict, 2013; Calabrese y Cannataro, 2015).
En el ámbito de los videojuegos, la HPC en la nube se utiliza para el procesamiento de gráficos y la simulación en tiempo real. Investigaciones como la propuesta por Chen et al., (2014) realizan una evaluación de la calidad de servicio en los sistemas de juego en la nube y con sus experimentos demuestran que aplicaciones de alto rendimiento como los videojuegos se benefician del uso de la computación en la nube y el HPC. En general los desarrolladores de videojuegos pueden utilizar la HPC en la nube para crear mundos virtuales más realistas y detallados, lo que mejora la experiencia del usuario.
La simulación a gran escala es otro dominio de aplicación que fue detectado, en donde la HPC en la nube se utiliza para simular eventos complejos en una amplia gama de áreas, como la ingeniería, la física y la medicina. La HPC en la nube permite a los científicos y a los ingenieros realizar simulaciones complejas que antes no eran posibles debido a las limitaciones de hardware y software.
Gestión: Como ya se ha establecido en éste documento, la evolución de la HPC en la nube ha generado interés por ofrecer recursos bajo demanda y a escala. Sin embargo, la gestión de estos algunos recursos en la nube presenta una serie de desafíos.
En la revisión realizada se identificaron tres tendencias principales relacionadas a la gestión de HPC en la nube: seguridad, memoria y energía. En lo que respecta a la seguridad, es esencial garantizar la privacidad y la integridad de los datos y la infraestructura. El artículo de Grobauer et al., (2011) reporta detalladamente las vulnerabilidades en sistemas HPC en la nube y realizan un análisis de los riesgos de seguridad en los modelos de servicio (IaaS, PaaS y SaaS), identificando las principales amenazas y debilidades en cada uno de ellos. Vaquero et al., (2010) aborda otros aspectos relacionados a la seguridad como es la confidencialidad de los datos, la integridad de los sistemas y la disponibilidad del servicio. Los trabajos proponen estrategias de seguridad para la nube en diferentes áreas, desde la arquitectura y la gestión de identidad hasta la seguridad de la red y la virtualización.
En cuanto a la memoria, es crucial garantizar una gestión eficiente para maximizar el rendimiento en HPC en la nube. Los sistemas de HPC en la nube deben garantizar un acceso rápido y eficiente a la memoria de alta velocidad y proporcionar herramientas para optimizar el uso de la memoria y minimizar la latencia de acceso (Dong et al., 2013; Kundu et al., 2010; Wu et al., 2011).
Otro aspecto que requiere una gestión adecuada en el HPC en la nube es la energética. Administrar adecuadamente la energía permite reducir los costos y la huella de carbono de los centros de datos. Los sistemas de gestión de energía en la nube de HPC deben optimizar el uso de la energía y garantizar la disponibilidad de recursos para las aplicaciones de HPC de manera eficiente (Rodero et al., 2012; Anton et al., 2012).
Economía: La rentabilidad de las soluciones de HPC en la nube es otra área de interés para los investigadores. El objetivo es estudiar los desafíos relacionados al tema económico, incluyendo la gestión de costos y la garantía de un acuerdo de nivel de servicio (SLA) satisfactorio.
En cuanto a la gestión de costos, el análisis de costo-beneficio es una tendencia clave en la HPC en la nube. El análisis de costo-beneficio es una herramienta importante para determinar la viabilidad económica de una solución de HPC en la nube (Carlyle et al., 2010; Zhai et al., 2011). Además, la garantía de un acuerdo de nivel de servicio (SLA) satisfactorio es una tendencia clave en la HPC en la nube. Un SLA es un contrato entre el proveedor de la nube y el cliente que establece los niveles de servicio que se deben cumplir, como la disponibilidad del servicio, el tiempo de respuesta y la capacidad de procesamiento. Los proveedores deben asegurarse de que sus SLA sean claros, específicos y medibles, para que los clientes puedan confiar en la calidad y la consistencia del servicio de HPC en la nube. Asimismo, deben desarrollar herramientas y procesos para monitorear y medir el rendimiento de la nube y garantizar que se cumplan los SLA acordados (Carlyle et al., 2010; Zhai et al., 2011). Por ejemplo, Nasr et al., (2019) presentan un algoritmo para un algoritmo para la programación de tareas de HPC en la nube de forma rentable-
3. Desafíos
Las capacidades de la HPC en la nube han generado un especial interés en las industrias y organizaciones. Sin embargo, su implementación también plantea desafíos que deben ser abordados para su correcto funcionamiento. En este sentido, se han identificado cinco áreas principales en las que se presentan los desafíos más importantes en la HPC en la nube.
Problemas de seguridad y privacidad: Uno de los mayores desafíos de la computación en la nube es la seguridad y la privacidad. Cuando las empresas trasladan sus datos a la nube, le están confiando a un tercero su información confidencial, y eso puede generar inquietudes sobre violaciones de datos, acceso no autorizado y privacidad de datos (Chakraborti, 2022).
Dependencia de la conectividad a Internet: Los servicios de computación en la nube dependen de Internet para la comunicación entre el proveedor de la nube y el usuario. Esto significa que, si hay una interrupción en la conectividad a Internet, es posible que el usuario no pueda acceder a sus datos o aplicaciones. Esto puede ser un desafío importante para las empresas que requieren un acceso continuo a sus datos. Esto puede ser particularmente desafiante en países subdesarrollados ya que las velocidades de transferencia de datos pueden ser lentos (Razi y Batan, 2023). En esos casos es posible que no se pueda servicios como Platform as a Service (PaaS), Infrastructure as a Service (IaaS), and Software as a Service (SaaS).
Bloqueo del proveedor (Vendor lock-in): Cuando las empresas eligen un proveedor de la nube, están bloqueadas en la pila de tecnología de ese proveedor, lo que puede dificultar el cambio a un proveedor diferente en el futuro. Algunas de las soluciones propuestas es seleccionar el mejor proveedor de servicios de acuerdo con diferentes criterios (Mohamed y Abdelsalam, 2020), o seleccionar al proveedor que logre un equilibrio entre el costo y la disponibilidad (Hari Kumar y Mala, 2022).
Problemas normativos y de cumplimiento: La computación en la nube puede generar problemas normativos y de cumplimiento para las empresas. Estas regulaciones pueden describir los estándares requeridos para tomar medidas de precaución para prevenir ataques (Parast et al. 2022).
Gestión de costos: La computación en la nube puede ser rentable, ya que las organizaciones pueden reducir gastos y aumentar la eficiencia compartiendo recursos y pagando solo por lo que necesitan (Razi y Batan, 2023). Sin embargo, también puede ser costosa si no se administra adecuadamente; por ejemplo, las empresas pueden incurrir en costo de tarifas de transferencia de datos, de almacenamiento u otros cargos.
4. Categorización de trabajos analizados
En la Figura 1 se muestran las categorías más relevantes obtenidas del análisis realizado. Cada categoría agrupa los trabajos revisados según su área de aplicación, lo que permite identificar las principales tendencias en el uso de HPC en la nube en diferentes campos. Las categorías identificadas fueron: virtualización, desempeño, dominio de aplicación, gestión y los trabajos relacionados al tema económico. Las categorías reflejan el amplio espectro de aplicaciones que pueden beneficiarse de la utilización de HPC en la nube.
5. Conclusiones
La computación en la nube se presenta como una solución para el procesamiento de cargas de trabajo de alto rendimiento. Aunque tanto las aplicaciones de HPC como las convencionales tienen problemas similares y diferentes, es tarea de los investigadores identificar los problemas que siguen siendo desafíos en el campo y mejorar el estado del arte. Este estudio propuso identificar las tendencias más importantes sobre la computación en la nube de alto rendimiento y destacar las preocupaciones abiertas y cerradas empleando un sistema de clasificación. Los resultados de esta revisión sugieren que, aunque la HPC basada en la nube ha logrado importantes avances, todavía hay áreas en las que se requiere más investigación. Al abordar estos problemas, se pueden mejorar aún más la eficiencia, la escalabilidad y la robustez de los sistemas de HPC basados en la nube. Además de identificar las áreas de oportunidad en el campo de la HPC basada en la nube, es importante considerar cómo estos vacíos pueden abordarse. Una posible estrategia es mediante el desarrollo de herramientas y recursos para la HPC en la nube. Por ejemplo, se podría crear una plataforma para evaluar el rendimiento y la eficiencia de diferentes proveedores de la nube y plataformas de virtualización para aplicaciones de HPC. También se podrían desarrollar herramientas de monitoreo y análisis para ayudar a los usuarios a comprender y optimizar el rendimiento de sus aplicaciones. En última instancia, el objetivo es mejorar la eficiencia y la accesibilidad de la HPC basada en la nube para una amplia gama de usuarios.