La computación en red es el uso de recursos informáticos ampliamente distribuidos para alcanzar un objetivo común. Una red informática puede considerarse como un sistema distribuido con cargas de trabajo no interactivas que involucran muchos archivos. La computación en red se distingue de los sistemas informáticos de alto rendimiento convencionales, como la computación en clúster , en que las computadoras en red tienen cada nodo configurado para realizar una tarea o aplicación diferente. Las computadoras en red también tienden a ser más heterogéneas y geográficamente dispersas (por lo tanto, no están acopladas físicamente) que las computadoras en clúster. [1] Aunque una sola red puede estar dedicada a una aplicación particular, comúnmente se utiliza una red para una variedad de propósitos. Las redes a menudo se construyen con bibliotecas de software de middleware de red de propósito general . Los tamaños de red pueden ser bastante grandes. [2]
Las redes informáticas son una forma de computación distribuida compuesta por muchas computadoras en red acopladas de forma flexible que actúan juntas para realizar tareas de gran tamaño. Para ciertas aplicaciones, la computación distribuida o en red puede considerarse un tipo especial de computación paralela que se basa en computadoras completas (con CPU integradas, almacenamiento, fuentes de alimentación, interfaces de red, etc.) conectadas a una red informática (privada o pública) mediante una interfaz de red convencional , como Ethernet . Esto contrasta con la noción tradicional de una supercomputadora , que tiene muchos procesadores conectados mediante un bus de computadora local de alta velocidad . Esta tecnología se ha aplicado a problemas científicos, matemáticos y académicos de gran intensidad computacional a través de la computación voluntaria , y se utiliza en empresas comerciales para aplicaciones tan diversas como el descubrimiento de fármacos , la previsión económica , el análisis sísmico y el procesamiento de datos de back office en apoyo del comercio electrónico y los servicios web .
La computación en red combina computadoras de múltiples dominios administrativos para alcanzar un objetivo común, [3] para resolver una sola tarea, y luego puede desaparecer con la misma rapidez. El tamaño de una red puede variar desde pequeña (limitada a una red de estaciones de trabajo de computadoras dentro de una corporación, por ejemplo) hasta grandes colaboraciones públicas entre muchas empresas y redes. "La noción de una red confinada también puede conocerse como una cooperación intranodal, mientras que la noción de una red más grande y más amplia puede referirse a una cooperación entre nodos". [4]
La coordinación de aplicaciones en redes puede ser una tarea compleja, especialmente cuando se trata de coordinar el flujo de información entre recursos informáticos distribuidos. Los sistemas de flujo de trabajo en redes se han desarrollado como una forma especializada de un sistema de gestión de flujo de trabajo diseñado específicamente para componer y ejecutar una serie de pasos computacionales o de manipulación de datos, o un flujo de trabajo, en el contexto de la red.
La computación “distribuida” o “en red” en general es un tipo especial de computación paralela que se basa en computadoras completas (con CPU integradas, almacenamiento, fuentes de alimentación, interfaces de red, etc.) conectadas a una red (privada, pública o Internet ) mediante una interfaz de red convencional que produce hardware de consumo, en comparación con la menor eficiencia que implica diseñar y construir una pequeña cantidad de supercomputadoras personalizadas. La principal desventaja en términos de rendimiento es que los diversos procesadores y áreas de almacenamiento local no tienen conexiones de alta velocidad. Por lo tanto, esta disposición es adecuada para aplicaciones en las que se pueden realizar múltiples cálculos paralelos de forma independiente, sin la necesidad de comunicar resultados intermedios entre procesadores. [5] La escalabilidad de alta gama de las redes geográficamente dispersas es generalmente favorable, debido a la baja necesidad de conectividad entre nodos en relación con la capacidad de Internet pública. [6]
También existen algunas diferencias entre programar para una supercomputadora y programar para un sistema de computación en red. Puede resultar costoso y difícil escribir programas que puedan ejecutarse en el entorno de una supercomputadora, que puede tener un sistema operativo personalizado, o requerir que el programa aborde problemas de concurrencia . Si un problema se puede paralelizar adecuadamente, una capa “delgada” de infraestructura de “red” puede permitir que programas convencionales e independientes, dada una parte diferente del mismo problema, se ejecuten en varias máquinas. Esto hace posible escribir y depurar en una sola máquina convencional y elimina las complicaciones debidas a múltiples instancias del mismo programa ejecutándose en la misma memoria compartida y espacio de almacenamiento al mismo tiempo.
Una característica de las redes distribuidas es que pueden formarse a partir de recursos informáticos pertenecientes a uno o varios individuos u organizaciones (conocidos como dominios administrativos múltiples ). Esto puede facilitar las transacciones comerciales, como en la informática de servicios públicos , o hacer más fácil el ensamblaje de redes informáticas voluntarias .
Una desventaja de esta característica es que los ordenadores que están realizando los cálculos pueden no ser totalmente fiables. Por tanto, los diseñadores del sistema deben introducir medidas para evitar que los fallos de funcionamiento o los participantes malintencionados produzcan resultados falsos, engañosos o erróneos y que utilicen el sistema como vector de ataque. Esto suele implicar asignar trabajo de forma aleatoria a diferentes nodos (presumiblemente con diferentes propietarios) y comprobar que al menos dos nodos diferentes informen la misma respuesta para una unidad de trabajo determinada. Las discrepancias identificarían los nodos que funcionan mal y los malintencionados. Sin embargo, debido a la falta de control central sobre el hardware, no hay forma de garantizar que los nodos no se desconecten de la red en momentos aleatorios. Algunos nodos (como los portátiles o los clientes de Internet por acceso telefónico ) también pueden estar disponibles para el cálculo, pero no para las comunicaciones de red, durante períodos impredecibles. Estas variaciones se pueden adaptar asignando grandes unidades de trabajo (lo que reduce la necesidad de una conectividad de red continua) y reasignando las unidades de trabajo cuando un nodo determinado no informa sus resultados en el tiempo previsto.
Otro conjunto de cuestiones que podrían denominarse de compatibilidad social en los primeros días de la computación en red se relacionaban con los objetivos de los desarrolladores de redes de llevar su innovación más allá del campo original de la computación de alto rendimiento y a través de los límites disciplinarios hacia nuevos campos, como el de la física de alta energía. [7]
Los impactos de la confianza y la disponibilidad en el rendimiento y la dificultad del desarrollo pueden influir en la decisión de implementar en un clúster dedicado, en máquinas inactivas internas de la organización en desarrollo o en una red externa abierta de voluntarios o contratistas. En muchos casos, los nodos participantes deben confiar en que el sistema central no abusará del acceso que se les otorga, interfiriendo en el funcionamiento de otros programas, alterando la información almacenada, transmitiendo datos privados o creando nuevos agujeros de seguridad. Otros sistemas emplean medidas para reducir la cantidad de confianza que los nodos “clientes” deben depositar en el sistema central, como colocar aplicaciones en máquinas virtuales.
Los sistemas públicos o aquellos que cruzan dominios administrativos (incluidos diferentes departamentos en la misma organización) a menudo resultan en la necesidad de ejecutarse en sistemas heterogéneos , utilizando diferentes sistemas operativos y arquitecturas de hardware . Con muchos lenguajes, existe una compensación entre la inversión en el desarrollo de software y la cantidad de plataformas que se pueden admitir (y, por lo tanto, el tamaño de la red resultante). Los lenguajes multiplataforma pueden reducir la necesidad de hacer esta compensación, aunque potencialmente a expensas del alto rendimiento en cualquier nodo dado (debido a la interpretación del tiempo de ejecución o la falta de optimización para la plataforma en particular). Varios proyectos de middleware han creado una infraestructura genérica para permitir que diversos proyectos científicos y comerciales aprovechen una red asociada en particular o con el propósito de configurar nuevas redes. BOINC es común para varios proyectos académicos que buscan voluntarios públicos; se enumeran más al final del artículo.
De hecho, el middleware puede considerarse como una capa entre el hardware y el software. Además del middleware, se deben considerar varias áreas técnicas, que pueden ser independientes del middleware o no. Algunos ejemplos son la gestión de los acuerdos de nivel de servicio (SLA) , la confianza y la seguridad, la gestión de organizaciones virtuales , la gestión de licencias, los portales y la gestión de datos. Estas áreas técnicas pueden estar cubiertas en una solución comercial, aunque lo más avanzado de cada área suele encontrarse en proyectos de investigación específicos que examinan el campo.
Para la segmentación del mercado de computación en red, se deben considerar dos perspectivas: el lado del proveedor y el lado del usuario:
El mercado de redes en general comprende varios mercados específicos: el mercado de middleware de redes, el mercado de aplicaciones habilitadas para redes, el mercado de computación de servicios públicos y el mercado de software como servicio (SaaS).
El middleware de red es un producto de software específico que permite compartir recursos heterogéneos y organizaciones virtuales. Se instala e integra en la infraestructura existente de la empresa o empresas involucradas y proporciona una capa especial ubicada entre la infraestructura heterogénea y las aplicaciones de usuario específicas. Los principales middlewares de red son Globus Toolkit, gLite y UNICORE .
La computación de servicios públicos se refiere a la provisión de computación en red y aplicaciones como servicio, ya sea como una utilidad de red abierta o como una solución de alojamiento para una organización o una VO . Los principales actores en el mercado de la computación de servicios públicos son Sun Microsystems , IBM y HP .
Las aplicaciones habilitadas para red son aplicaciones de software específicas que pueden utilizar la infraestructura de red. Esto es posible gracias al uso de middleware de red, como se señaló anteriormente.
El software como servicio (SaaS) es “software que es propiedad de uno o más proveedores, que lo entregan y lo gestionan de forma remota” ( Gartner 2007). Además, las aplicaciones SaaS se basan en un único conjunto de definiciones de datos y códigos comunes. Se consumen en un modelo de uno a muchos, y SaaS utiliza un modelo de pago por uso (PAYG) o un modelo de suscripción que se basa en el uso. Los proveedores de SaaS no necesariamente poseen los recursos informáticos que se requieren para ejecutar su SaaS. Por lo tanto, los proveedores de SaaS pueden recurrir al mercado de la informática de servicios públicos. El mercado de la informática de servicios públicos proporciona recursos informáticos para los proveedores de SaaS.
Para las empresas que se encuentran en el lado de la demanda o del usuario del mercado de computación en red, los diferentes segmentos tienen implicaciones significativas para su estrategia de implementación de TI. La estrategia de implementación de TI, así como el tipo de inversiones en TI realizadas, son aspectos relevantes para los potenciales usuarios de la red y desempeñan un papel importante para la adopción de la red.
La limpieza de la CPU , la limpieza de ciclos o la computación compartida crea una "cuadrícula" a partir de los recursos inactivos en una red de participantes (ya sea mundial o interna a una organización). Por lo general, esta técnica explota los ciclos de instrucción "sobrantes" resultantes de la inactividad intermitente que suele ocurrir por la noche, durante las pausas del almuerzo o incluso durante los momentos (comparativamente minúsculos, aunque numerosos) de espera inactiva que experimentan las CPU de escritorio modernas a lo largo del día ( cuando la computadora está esperando la E/S del usuario, la red o el almacenamiento ). En la práctica, las computadoras participantes también donan una cierta cantidad de espacio de almacenamiento en disco, RAM y ancho de banda de red, además de potencia bruta de CPU. [ cita requerida ]
Muchos proyectos informáticos voluntarios , como BOINC , utilizan el modelo de limpieza de CPU. Dado que es probable que los nodos se desconecten de vez en cuando, ya que sus propietarios utilizan sus recursos para su propósito principal, este modelo debe estar diseñado para manejar tales contingencias.
La creación de un entorno oportunista es otra implementación de la limpieza de CPU en la que un sistema especial de gestión de la carga de trabajo recoge las computadoras de escritorio inactivas para trabajos de uso intensivo de recursos informáticos; también se lo conoce como Enterprise Desktop Grid (EDG). Por ejemplo, HTCondor [8] (el marco de software informático de alto rendimiento de código abierto para la racionalización distribuida de grano grueso de tareas de uso intensivo de recursos informáticos) se puede configurar para que solo utilice máquinas de escritorio en las que el teclado y el ratón estén inactivos para aprovechar de manera efectiva la potencia de CPU desperdiciada de las estaciones de trabajo de escritorio que de otro modo estarían inactivas. Al igual que otros sistemas por lotes con todas las funciones, HTCondor proporciona un mecanismo de cola de trabajos, una política de programación, un esquema de prioridades, un control de recursos y una gestión de recursos. También se puede utilizar para gestionar la carga de trabajo en un clúster dedicado de computadoras o puede integrar sin problemas tanto recursos dedicados (clústeres montados en bastidor) como máquinas de escritorio no dedicadas (limpieza de ciclos) en un entorno informático.
El término computación en red surgió a principios de los años 1990 como metáfora de hacer que la potencia de las computadoras fuera tan accesible como una red eléctrica . La metáfora de la red eléctrica para la computación accesible rápidamente se volvió canónica cuando Ian Foster y Carl Kesselman publicaron su obra seminal, "The Grid: Blueprint for a new computing infrastructure" (1999). Esto fue precedido por décadas por la metáfora de la computación de utilidad (1961): la computación como un servicio público, análogo al sistema telefónico. [9] [10]
El uso intensivo de CPU y la computación voluntaria se popularizaron a principios de 1997 por distributed.net y más tarde en 1999 por SETI@home para aprovechar el poder de las computadoras en red en todo el mundo, con el fin de resolver problemas de investigación que requieren un uso intensivo de CPU. [11] [12]
Las ideas de la red (incluidas las de computación distribuida, programación orientada a objetos y servicios web) fueron reunidas por Ian Foster y Steve Tuecke de la Universidad de Chicago , y Carl Kesselman del Instituto de Ciencias de la Información de la Universidad del Sur de California . [13] El trío, que lideró el esfuerzo para crear el Globus Toolkit, es ampliamente considerado como los "padres de la red". [14] El kit de herramientas incorpora no solo la gestión de la computación sino también la gestión del almacenamiento , el aprovisionamiento de seguridad, el movimiento de datos, la monitorización y un kit de herramientas para desarrollar servicios adicionales basados en la misma infraestructura, incluida la negociación de acuerdos, los mecanismos de notificación, los servicios de activación y la agregación de información. [15] Si bien el Globus Toolkit sigue siendo el estándar de facto para construir soluciones de red, se han creado varias otras herramientas que responden a algún subconjunto de servicios necesarios para crear una red empresarial o global. [ cita requerida ]
En 2007 se hizo popular el término computación en la nube , que es conceptualmente similar a la definición canónica de Foster de computación en red (en términos de recursos computacionales que se consumen como la electricidad de la red eléctrica ) y la computación de servicios públicos anterior.
En noviembre de 2006, Seidel recibió el Premio Sidney Fernbach en la Conferencia de Supercomputación en Tampa, Florida . [16] "Por contribuciones sobresalientes al desarrollo de software para HPC y computación Grid para permitir la investigación numérica colaborativa de problemas complejos en física; en particular, el modelado de colisiones de agujeros negros". [17] Este premio, que es uno de los más altos honores en computación, fue otorgado por sus logros en relatividad numérica.
Además, a marzo de 2019, la red Bitcoin tenía una potencia de cálculo medida equivalente a más de 80.000 exaFLOPS (operaciones de punto flotante por segundo). [25] Esta medida refleja la cantidad de FLOPS necesarias para igualar la salida hash de la red Bitcoin en lugar de su capacidad para operaciones aritméticas generales de punto flotante, ya que los elementos de la red Bitcoin ( ASIC de minería de Bitcoin ) realizan solo el cálculo hash criptográfico específico requerido por el protocolo Bitcoin .
La computación en cuadrícula ofrece una manera de resolver problemas de gran desafío como el plegamiento de proteínas , el modelado financiero , la simulación de terremotos y el modelado climático / meteorológico , y fue fundamental para hacer posible el Gran Colisionador de Hadrones en el CERN. [26] Las cuadrículas ofrecen una manera de utilizar los recursos de tecnología de la información de manera óptima dentro de una organización. También proporcionan un medio para ofrecer tecnología de la información como una utilidad para clientes comerciales y no comerciales, y esos clientes pagan solo por lo que usan, como la electricidad o el agua.
En octubre de 2016, más de 4 millones de máquinas que ejecutan la plataforma de código abierto Berkeley Open Infrastructure for Network Computing (BOINC) son miembros de World Community Grid . [19] Uno de los proyectos que utilizan BOINC es SETI@home , que estaba utilizando más de 400.000 computadoras para lograr 0,828 TFLOPS en octubre de 2016. En octubre de 2016, Folding@home , que no es parte de BOINC, logró más de 101 petaflops equivalentes a x86 en más de 110.000 máquinas. [18]
La Unión Europea ha financiado proyectos a través de los programas marco de la Comisión Europea . BEinGRID (Business Experiments in Grid) fue un proyecto de investigación financiado por la Comisión Europea [27] como un Proyecto Integrado bajo el programa de patrocinio del Sexto Programa Marco (FP6). El proyecto, que comenzó el 1 de junio de 2006, duró 42 meses, hasta noviembre de 2009. El proyecto fue coordinado por Atos Origin . Según la hoja de datos del proyecto, su misión es "establecer rutas efectivas para fomentar la adopción de la computación en red en toda la UE y estimular la investigación en modelos de negocios innovadores que utilicen tecnologías Grid". Para extraer las mejores prácticas y los temas comunes de las implementaciones experimentales, dos grupos de consultores están analizando una serie de pilotos, uno técnico y otro comercial. El proyecto es importante no solo por su larga duración, sino también por su presupuesto, que con 24,8 millones de euros, es el mayor de todos los proyectos integrados del FP6. De este monto, 15,7 millones son proporcionados por la Comisión Europea y el resto por sus 98 empresas asociadas contribuyentes. Desde el final del proyecto, los resultados de BEinGRID han sido retomados y difundidos por IT-Tude.com.
El proyecto Enabling Grids for E-sciencE, con sede en la Unión Europea e incluidos sitios en Asia y Estados Unidos, fue un proyecto de seguimiento del European DataGrid (EDG) y evolucionó hasta convertirse en la European Grid Infrastructure . Este, junto con el Worldwide LHC Computing Grid [28] (WLCG), se desarrolló para apoyar experimentos que utilizan el Gran Colisionador de Hadrones del CERN . Se puede encontrar una lista de los sitios activos que participan en el WLCG en línea [29], así como la monitorización en tiempo real de la infraestructura EGEE. [30] El software y la documentación pertinentes también son de acceso público. [31] Se especula que los enlaces de fibra óptica dedicados, como los instalados por el CERN para abordar las necesidades intensivas de datos del WLCG, algún día puedan estar disponibles para los usuarios domésticos, proporcionando así servicios de Internet a velocidades hasta 10.000 veces más rápidas que una conexión de banda ancha tradicional. [32] La European Grid Infrastructure también se ha utilizado para otras actividades de investigación y experimentos, como la simulación de ensayos clínicos oncológicos. [33]
El proyecto distributed.net se inició en 1997. La instalación de supercomputación avanzada de la NASA (NAS) ejecutó algoritmos genéticos utilizando el recuperador de ciclo Condor que funcionaba en aproximadamente 350 estaciones de trabajo Sun Microsystems y SGI .
En 2001, United Devices puso en marcha el Proyecto de investigación sobre el cáncer de United Devices , basado en su producto Grid MP , que realiza un ciclo de limpieza en computadoras personales de voluntarios conectados a Internet. El proyecto funcionó en aproximadamente 3,1 millones de máquinas antes de su cierre en 2007. [34]
Hoy en día existen muchas definiciones de computación en red :
Lista de proyectos de computación en red