# Computación en malla

La computación en malla (en inglés grid computing) es una tecnología que permite utilizar de forma coordinada recursos heterogéneos (entre ellos procesadores, almacenamiento y aplicaciones específicas) que no están sujetos a un control centralizado. Es una forma de computación distribuida, en la cual los nodos participantes pueden ser de iguales o distintas arquitecturas y cubrir toda la gama de potencia de cómputo, desde embebidos hasta supercomputadoras.
Los sistemas que forman parte de una topología en malla están interconectados mediante redes de área extensa (por ejemplo internet). Desarrollado en ámbitos científicos a principios de los años 1990, su entrada al mercado comercial siguió la idea de la llamada computación bajo demanda.
El término malla se refiere a una infraestructura que permite la integración y el uso colectivo de ordenadores de alto rendimiento, redes y bases de datos que son propiedad y están administrados por diferentes instituciones. Puesto que la colaboración entre instituciones envuelve un intercambio de datos, o de tiempo de computación, el propósito de la red en malla es facilitar la integración de recursos computacionales. Universidades, laboratorios de investigación o empresas se asocian para formar mallas para lo cual utilizan algún tipo de software que implemente este concepto.
En la computación en malla, las redes pueden ser vistas como una forma de computación distribuida donde un “supercomputador virtual” está compuesto por una serie de computadores agrupados para realizar grandes tareas.

## Visión general

Llamamos malla al sistema de computación distribuido que permite compartir recursos no centrados geográficamente para resolver problemas de gran escala. Los recursos compartidos pueden ser ordenadores (PC, estaciones de trabajo, supercomputadoras, PDA, portátiles, móviles, etc), software, datos e información, instrumentos especiales (radio, telescopios, etc.) o personas/colaboradores.
Grid Computing consiste en conectar un grupo de ordenadores de manera descentralizada con el fin de formar un superordenador virtual.La potencia de cálculo distribuida de manera flexible permite realizar tareas complejas con varios recursos simultáneamente y optimizar el uso de la infraestructura.
La computación en malla ofrece muchas ventajas frente a otras tecnologías alternativas. La potencia que ofrecen multitud de computadores conectados en red usando una malla es prácticamente ilimitada, además de que ofrece una perfecta integración de sistemas y dispositivos heterogéneos, por lo que las conexiones entre diferentes máquinas no generarán ningún problema. Se trata de una solución altamente escalable, potente y flexible, ya que evitarán problemas de falta de recursos (cuellos de botella) y nunca queda obsoleta, debido a la posibilidad de modificar el número y características de sus componentes.
Estos recursos se distribuyen en la red de forma transparente pero guardando unas pautas de seguridad y políticas de gestión de carácter tanto técnico como económico. Así pues, su objetivo será el de compartir una serie de recursos en la red de manera uniforme, segura, transparente, eficiente y fiable, ofreciendo un único punto de acceso a un conjunto de recursos distribuidos geográficamente en diferentes dominios de administración. Esto nos puede llevar a pensar que la computación Grid permite la creación de empresas virtuales. Es importante saber que una malla es un conjunto de máquinas distribuidas que ayudan a mejorar el trabajo sobre software pesados.

## Funcionamiento

El funcionamiento del grid computing requiere de un middleware e interfaces (nodos) para asegurar la comunicación entre los equipos distribuidos. Otro de los elementos es el motor de búsqueda, ya que este no solo servirá para que el usuario encuentre los datos que necesite, también encontrará las herramientas para analizarlos y el poder de cómputo necesario para realizar las operaciones.
Como norma general, el grid computing comienza con la instalación de un software en los equipos cliente, este es el encargado de descargar un trozo de la tarea total del proyecto. Este software hace uso de la computadora cuando esta no se encuentra en uso, o usa los recursos que la computadora no está usando en ese momento para no intervenir en el trabajo normal del usuario. Una vez que el proceso termina, el software enviará los resultados a un servidor central y comenzará la descarga de la siguiente tarea que debe realizar. Entre más usuarios instalen el software en sus equipos, más elementos son añadidos a la red y el proceso de computación se vuelve más rápido.

## Arquitectura

La arquitectura de la computación grid esta descrita por capas, en donde cada una de estas capas tiene funciones específicas. Gracias a esta arquitectura, el grid computing ha sido usada para tareas dentro del ámbito científico y de investigación. Dicha arquitectura está basada en protocolos, esto quiere decir que, entre cada uno de los niveles, los usuarios pueden gestionar condiciones para explotar al máximo el uso compartido de recursos.
* En el nivel de infraestructura, también denominado fábrica, están los recursos computacionales, como los servidores, bases de datos, etc. Asimismo, se incluyen los mecanismos de control y gestión.
* El nivel de conectividad pertenece a los protocolos de comunicación y seguridad, los cuales son usados para permitir que los recursos físicos puedan comunicarse, entre estos protocolos se encuentra, el protocolo SSL, certificados X.509 y la pila del protocolo TCP/IP. La seguridad se vuelve un punto muy importante, ya que se pueden compartir recursos entre varias organizaciones, las cuales pueden tener sus propias políticas de seguridad.
* Dentro del nivel de recurso se lleva a cabo la negociación, control y monitoreo de algún recurso en específico, así como toda su información, también es donde se ejecutan los protocolos de control y monitoreo de dicho recurso.
* En el nivel de recursos es donde están todos los servicios que se pueden gestionar, en estos servicios se pueden encontrar el servicio de directorios, este servicio es el que permite al usuario encontrar recursos de su interés. También se encuentran los planificadores distribuidos, los cuales son los encargados de asignar tareas a cada uno de los recursos.
* Finalmente, en el nivel de aplicación es donde los protocolos de dicha capa permiten a las aplicaciones acceder a la infraestructura del grid computing. Dependiendo del tipo de aplicación puede ser necesario conectarse a las distintas capas o acceder directamente a una de ellas, o incluso acceder directamente a la infraestructura.

## Historia

El término computación en malla tiene su origen en el comienzo de los años noventa como una metáfora para hacer que el acceso a la potencia de los computadores sea tan sencillo como acceder a una red eléctrica. La metáfora de la red eléctrica para el computación accesible en seguida se volvió canónica cuando Ian Foster y Carl Kesselman publicaron su trabajo seminal, The Grid: Blueprint for a new computer infrastructure en 1999.
Las ideas de la computación mallada (incluidas aquellas de la computación distribuida, programación orientada a objetos y servicios Web) fueron reunidas por Ian Foster, Carl Kesselman, y Steve Tuecke, conocidos como los padres de la computación en malla. Lideraron el esfuerzo por la creación del Globus Toolkit incorporando no solo la gestión de la computación, sino también la gestión del almacenamiento, aprovisionamiento de seguridad, traslado de datos, monitorización, y un conjunto de herramientas para el desarrollo de servicios adicionales basados en la misma infraestructura, incluyendo la negociación de los acuerdos, mecanismos de notificación, servicios de activación y agregación de información. Mientras que Globus Toolkit se mantiene como el estándar de facto para soluciones de creación de redes, otras herramientas han sido creadas para responder a una serie de servicios necesarios para crear una red empresarial o global.
En 2007, el término computación en la nube se hizo popular, lo cual es conceptualmente similar a la definición canónica de Foster de la computación en malla (en términos de recursos de computación consumidos tal como la electricidad en una red eléctrica).

## Actualidad

Existen muchos proyectos que han sido desarrollados en esta línea, tales como Edonkey, Emule o Limewire. Se trata de programas para compartir datos a nivel mundial entre diferentes máquinas. Las redes en malla y P2P tienen mucho en común y especialmente la idea básica de compartición de recursos. Entre las características diferentes podemos ver la P2P como más anónima y generalizada en ordenadores de usuarios de Internet, mientras que las mallas nacen de una estructura de nodos más controlada y jerarquizada en centros científicos. Una primera experiencia fue GriPhyN, para unir nodos en el proceso de físicas de altas energías en Estados Unidos.
Otro proyecto también muy importante es SETI@home. Éste cuenta con miles de PC repartidos por Internet que ceden tiempo de sus procesadores, ciclos de proceso desocupados, para analizar señales buscando patrones inteligentes extraterrestres. Sin embargo, su uso destaca también en los centros de investigación desde finales del 1990 en proyectos que van desde Física de Partículas a Astrofísica o incluso Biología. En Europa con el apoyo de proyectos de Centro Europeo Investigación Nuclear y el programa marco europeo se creó el software y red EDG (malla de datos europea). El uso de la computación mallada en estos campos ha supuesto una mejora exponencial en los últimos años.
Las empresas e instituciones que han participado en el desarrollo de estas tecnologías quieren entrar cuanto antes en una etapa de explotación comercial. Empresas como Microsoft y Sun Microsystems se han dado cuenta de la importancia que tendrá a medio plazo ofrecer computación en malla a sus clientes. Destacamos el papel de IBM invirtiendo en mallas como plataforma para ofrecer a sus clientes las ventajas como ahorro de tiempo y recursos económicos.
Existen varias soluciones comerciales en forma de empresas, por ejemplo:
* La Enterprise Grid Alliance (EGA): se crea en California, en abril de 2004, por un grupo de empresas líderes en tecnología para desarrollar soluciones comerciales y empresariales de informática distribuida y para acelerar el despliegue de esta tecnología en las empresas. Es un consorcio abierto enfocado en el desarrollo y promoción de soluciones de mallas empresariales.
* Sun Microsystems: el software Grid Engine de Sun hace más fácil agregar máquinas a la malla y automáticamente toma ventaja de la energía incrementada, por lo que ahorra tiempo y recursos a través de una red en malla rápida, eficiente y confiable para el manejo y despliegue.
* Andago: con el objetivo de acercar la topología de malla a los entornos industriales y de negocio, Andago añadió a su oferta de soluciones su experiencia en proyectos Grid.
* JPPF: el software JPPF habilita las aplicaciones con altos requerimientos de procesamiento para ser ejecutadas en varias computadoras con diferentes características heterógeneas gracias a su arquitectura basada en Java, de manera escalable (agregando o disminuyendo computadoras participantes) de manera dinámica, distribuyendo la aplicación en tareas.
Existen diversos middleware con capacidades y funcionalidades muy variadas que, en función de la complejidad, servicios ofrecidos y dimensión de la red en malla a implantar, se seleccionará la opción idónea. Las soluciones middleware, todas ellas de código abierto, utilizadas (por ejemplo por Andago) son: EGEE para grandes proyectos, Globus Solutions para proyectos medios, Grid Engine para pequeñas implantaciones.

## Características

* Capacidad de balanceo de sistemas: no habría necesidad de calcular la capacidad de los sistemas en función de los picos de trabajo, ya que la capacidad se puede reasignar desde la granja de recursos a donde se necesite;
* Alta disponibilidad. con la nueva funcionalidad, si un servidor falla, se reasignan los servicios en los servidores restantes;
* Reducción de costes: con esta arquitectura los servicios son gestionados por "granjas de recursos". Ya no es necesario disponer de "grandes servidores" y podremos hacer uso de componentes de bajo coste. Cada sistema puede ser configurado siguiendo el mismo patrón;
Se relaciona el concepto de malla con la nueva generación del protocolo de internet. El nuevo protocolo de Internet IPv6 permitirá trabajar con una Internet más rápida y accesible. Una de las ideas clave en la superación de las limitaciones actuales de Internet IPv4 es la aparición de nuevos niveles de servicio que harán uso de la nueva capacidad de la red para intercomunicar los ordenadores.
Este avance en la comunicación permitirá el avance de las ideas de computación en malla al utilizar como soporte la altísima conectividad de Internet. Es por ello que uno de los campos de mayor innovación en el uso de la computación en malla, fuera de los conceptos de supercomputación, es el desarrollo de un estándar para definir los servicios en malla frente a los servicios web.

### Clasificación con base en sus características

* Intragrid: se enfocan a una misma empresa con recursos heterogéneos, haciendo uso de redes LAN, por lo que se cuentan con menores problemas de seguridad y de confiabilidad.
* Intergrid: se enfocan hacia múltiples empresas, por lo que se requieren múltiples dominios administrativos, se hace uso de conexiones WAN, por lo que la seguridad y la confiabilidad se vuelven un punto muy importante.

### Requisitos

Los requisitos que debe cumplir cualquier red en malla son:
* Los datos deben compartirse entre miles de usuarios con intereses distintos.
* Se deben enlazar los centros principales de supercomputación, no solo los PC.
* Se debe asegurar que los datos sean accesibles en cualquier lugar y en cualquier momento.
* Se deben armonizar las distintas políticas de gestión de muchos centros diferentes.
* Se debe proporcionar seguridad.

### Ventajas

La computación en malla presenta las siguientes ventajas:
* Proporciona un mecanismo de colaboración transparente entre grupos dispersos, tanto científicos como comerciales.
* Posibilita el funcionamiento de aplicaciones a gran escala.
* Facilita el acceso a recursos distribuidos desde nuestros PC.
* Coordinación y gestión de procesos y tareas entre dispositivos.
* Escalado económico de los procesos de la empresa mediante potencia de cálculo y capacidades de almacenamiento acopladas.
* Procesamiento simultáneo/paralelo, análisis y presentación de grandes cantidades de datos a través de redes informáticas globales.
* Las tareas complejas pueden resolverse con mayor rapidez y eficacia.
Estos beneficios tendrán repercusión en muchos campos:
* Medicina (imágenes, diagnosis y tratamiento).
* Bioinformática (estudios en genómica y proteómica).
* Nanotecnología (diseño de nuevos materiales a escala molecular).
* Ingeniería (diseño, simulación, análisis de fallos y acceso remoto a instrumentos de control).
* Recursos naturales y medio ambiente (previsión meteorológica, observación del planeta, modelos y predicción de sistemas complejos).
La tecnología derivada de la malla abre un enorme abanico de posibilidades para el desarrollo de aplicaciones en muchos sectores. Por ejemplo: desarrollo científico y tecnológico, educación, sanidad, y administración pública.

### Desventajas

No obstante, la computación en malla presenta algunos inconvenientes que deben solucionarse. Estos problemas son:
* Recursos heterogéneos: la red debe ser capaz de poder manejar cualquier tipo de recurso que maneje el sistema, si no resultará totalmente inútil.
* Descubrimiento, selección, reserva, asignación, gestión y monitorización de recursos son procesos que deben controlarse externamente y que influyen en el funcionamiento de la red.
* Necesidad de desarrollo de aplicaciones para manejar la red, así como desarrollo de modelos eficientes de uso.
* Comunicación lenta y no uniforme.
* Organizativos: dominios de administración, modelo de explotación y costes, política de seguridad...
* Económicos: precio de los recursos, oferta/demanda
* En algunos casos, administración compleja y componentes de sistema incompatibles.
* La potencia de cálculo no aumenta linealmente con el número de ordenadores acoplados.

## Comparación entre las mallas y los supercomputadores convencionales

La computación en malla, en general, es un tipo especial de computación paralela que se basa en computadores completos (con CPU, almacenamiento, fuentes de alimentación, interfaces de red, etc.) conectados a una red (privada, pública o internet) por una interfaz de red convencional aportando un hardware sencillo, en comparación al diseño y construcción de baja eficiencia de un pequeño número de supercomputadores personalizados. La principal desventaja en cuanto a rendimiento es que los diversos procesadores y áreas locales de almacenamiento no tienen conexiones de alta velocidad. Esta composición es apropiada para aplicaciones donde pueden tener lugar múltiples computaciones paralelas independientemente, sin la necesidad de comunicar resultados inmediatos entre procesadores.
Existen también algunas diferencias en la programación y el despliegue. La escritura de programas que se ejecuten en el entorno de un supercomputador puede resultar costosa y compleja, la cual puede tener un sistema operativo personalizado, o requerir de un programa para lidiar con los problemas de concurrencia. Si se puede paralelizar un problema adecuadamente, una capa “delgada” de infraestructura mallada puede permitir que programas convencionales e independientes se ejecuten en múltiples máquinas. Esto hace posible escribir y depurar sobre una sola máquina convencional, y elimina complicaciones debidas a múltiples instancias de un mismo programa ejecutándose en la misma memoria compartida y espacio de almacenamiento simultáneamente.

## Segmentación del mercado en la computación en malla

Para la segmentación del mercado de la computación en malla, hemos de considerar dos perspectivas: la parte del proveedor y la parte del usuario.

### La parte del proveedor

La totalidad del mercado de computación en malla abarca múltiples mercados específicos. Estos son el mercado del middleware, el mercado de aplicaciones habilitadoras, el mercado de computación bajo demanda y el mercado del software como servicio (SaaS). El middleware para mallas es un producto software específico, el cual permite la compartición de recursos heterogéneos y organizaciones virtuales. Se instala e integran en la infraestructura existente de la compañía o las compañías involucradas, y provee de una capa especial situada sobre la infraestructura heterogénea y las aplicaciones específicas de usuario. Los principales middleware son Globus Toolkit, gLite y UNICORE.
La computación bajo demanda se refiere al aprovisionamiento de computación en malla y aplicaciones como servicio tanto como una utilidad de malla abierta o una solución de hospedaje para una organización u organización virtual (VO). Los principales competidores en el marcado de computación bajo demanda son Sun Microsystems, IBM y HP.
Las aplicaciones habilitadoras de mallas son programas específicos que pueden utilizar la infraestructura en malla. Esto es posible mediante el uso del middleware para mallas.
El software como servicio (SaaS) es un «software que se posee, provee y se gestiona remotamente por uno o más proveedores». Adicionalmente, las aplicaciones SaaS se basan en un solo set de código común y definiciones de datos. Son consumidos en un modelo uno a muchos, y utiliza un modelo de suscripción para pago en función del uso. Los proveedores de SaaS no son necesariamente dueños de los suministros de computación, los cuales son requeridos para ejecutar su SaaS. El mercado de la computación bajo demanda provee de suministros de computación para los proveedores de SaaS.

### La parte del usuario

Para compañías que lo demandan o usuarios del mercado de la computación en malla, los diferentes segmentos tienen implicaciones significativas para su estrategia de despliegue de TI. La estrategia de despliegue de TI así como el tipo de inversiones de TI hechas son aspectos relevantes para usuarios de mallas potenciales y juegan un papel importante en la adopción de esta tecnología.

## Campos de aplicación

Hay que definir cinco áreas de trabajo determinadas por las necesidades de cálculo, espacio para el almacenamiento de los datos y tiempo de respuesta. Estas cinco grandes áreas son:
* Supercomputación distribuida: Se encuentran las aplicaciones que es imposible satisfacer en un único nodo, ya que las necesidades de estas aplicaciones se producen en instantes de tiempo determinados, consumiendo muchos recursos. Algunos ejemplos de estas aplicaciones son las simulaciones, herramientas de cálculo numérico, procesos de análisis de datos, extracción de conocimiento de almacenes de datos, entre otras. Teniendo esto en cuenta, se puede afirmar que con ayuda del grid computing es posible crear una máquina potente capaz de resolver problemas que solo una supercomputadora podría resolver, lo que a su vez reduce costos, brindando mayor velocidad, mejorando tiempos de producción y de servicio.
* Sistemas distribuidos en tiempo real: hay aplicaciones que generan datos a altas velocidades en tiempo real, por lo que es necesario que esos datos sean procesados en tiempo real, tal como los experimentos de física de alta energía, control remoto de equipos médicos de alta precisión, etc. Procesar estos datos en tiempo real es posible porque con ayuda del grid computing se cuentan con los recursos físicos necesarios para cumplir con las necesidades de este tipo de aplicaciones, facilitando los procesos mediante la flexibilidad y la colaboración de usuarios proporcionando recursos tecnológicos, datos, procesamiento y almacenamiento.
* Proceso intensivo de datos: Sistemas de bases de datos distribuidas requieren de un gran espacio de almacenamiento y en muchos casos no se tiene la capacidad suficiente en una sola computadora, es ahí donde el grid computing ayuda con el incremento de la capacidad de almacenamiento, sin aumentar costos, de esta manera los datos se distribuyen alrededor de todo el grid, pudiendo acceder a estos datos desde cualquier punto geográfico, ya que estos datos se encuentran distribuidos por todo el grid.
* Entornos virtuales de colaboración: esta es un área asociada a la teleinmersión, donde se aprovechan los grandes recursos que ofrece el grid computing para generar entornos 3D distribuidos. Es difícil contar con las características necesarias tanto de software como de hardware para realizar este tipo de tareas debido a que no se cuenta con la infraestructura necesaria o los costos son muy elevados, es por ello que el grid computing se vuelve una herramienta de gran utilidad para sacar el máximo provecho de las distintas máquinas conectadas al gris y así satisfacer las necesidades de estas aplicaciones.
* Servicios puntuales: en esta área se ofrecen recursos que una organización puede considerar como no necesarios, por lo que el grid computing puede ofrecer esos recursos sin que la organización deba desarrollarlos por sí misma. Algunos de los ejemplos son las aplicaciones que permiten acceder a un hardware muy específico. Cuando una empresa no cuenta con el hardware necesario pueden recurrir a otras alternativas que no impliquen la compra directa del recurso en cuestión, lo que puede ayudar a reducir costos al tener al alcance los equipos necesarios para realizar esa tarea específica.