# Xgrid

Xgrid es un programa y protocolo propietario de computación en malla desarrollado por la subdivisión Advanced Computation Group de Apple Inc.
Proporciona a los administradores de red un método para crear un clúster informático, lo que les permite explotar una potencia de cálculo hasta ahora desaprovechada para cálculos que pueden dividirse fácilmente en operaciones más pequeñas, como los mapas de Mandelbrot. La configuración de un clúster Xgrid puede realizarse sin apenas coste, ya que el cliente Xgrid está preinstalado en todos los ordenadores que ejecutan Mac OS X 10.4 a Mac OS X 10.7. El cliente Xgrid no se incluyó en Mac OS X 10.8. El controlador Xgrid, el programador de trabajos de la operación Xgrid, también se incluye en Mac OS X Server y como descarga gratuita de Apple. Apple ha mantenido minimalista el mecanismo de control de trabajos de la línea de comandos, al tiempo que proporciona una API para desarrollar herramientas más sofisticadas construidas a su alrededor.
El programa emplea su propio protocolo de comunicación sobre un esquema para comunicarse con otros nodos. Este protocolo de comunicación interactúa con la infraestructura BEEP, un marco de protocolos de aplicación de red. Las computadoras descubiertas por el sistema Xgrid, es decir, las computadoras con el servicio Xgrid de Mac OS X activado, se añaden automáticamente a la lista de computadoras disponibles para realizar tareas de procesamiento.
Cuando la computadora iniciadora envía las instrucciones completas, o trabajo, para su procesamiento al controlador, éste divide la tarea en estos pequeños paquetes de instrucciones, conocidos como tareas. El diseño del sistema Xgrid consiste en que estos pequeños paquetes se transfieren a todas las computadoras de la red habilitados para Xgrid. Estas computadoras, o nodos, ejecutan las instrucciones proporcionadas por el controlador y devuelven los resultados. El controlador ensambla los resultados de las tareas individuales en los resultados del trabajo completo y los devuelve al ordenador iniciador.
Apple modeló el diseño de Xgrid a partir del programa Zilla, distribuido con la interfaz de programación de aplicaciones (API) del sistema operativo OpenStep de NeXT, cuyos derechos poseía. La empresa también optó por dotar a la versión cliente de Mac OS X únicamente de funciones de línea de comandos y poca flexibilidad, mientras que dotó a la versión Mac OS X Server de Xgrid de un panel de control GUI y un conjunto completo de funciones.

## Historia

Los orígenes de Xgrid se remontan a la aplicación Zilla de NeXT, creada por el científico Richard Crandall a finales de los años ochenta. Zilla fue el primer programa de computación distribuida lanzado en un sistema operativo de usuario final y que utilizaba el motivo del salvapantallas inactivo, una característica de diseño que desde entonces se encuentra en proyectos ampliamente utilizados como Seti@Home. Zilla ganó el premio nacional Computerworld Smithsonian Award (categoría Ciencia) en 1991 por su facilidad de uso y buen diseño. Apple adquirió Zilla junto con el resto de NeXT en 1997, y utilizó Zilla como inspiración para Xgrid. Xgrid Technology Preview 1 se publicó en enero de 2004, seguido de Technology Preview 2 en noviembre de 2004. Xgrid 1.0 se lanzó como parte de Mac OS X 10.4 Tiger en abril de 2005.
Varias organizaciones han adoptado Xgrid en grandes redes informáticas internacionales. Un ejemplo de clúster Xgrid es el OpenMacGrid de MacResearch, donde los científicos pueden solicitar acceso a grandes cantidades de potencia de procesamiento para ejecutar tareas relacionadas con su investigación. Otro fue el ya desaparecido proyecto Xgrid@Stanford, que utilizaba una serie de computadoras del campus de la Universidad de Stanford y de todo el mundo para realizar investigaciones bioquímicas.
En un informe que cubría el anuncio, Macworld citaba Xgrid entre las características Unix en «10 Things to Know about Tiger», calificándolo de «práctico si trabajas con enormes cantidades de datos experimentales o renderizas animaciones complejas». Tras la presentación de Xgrid en 2004, InfoWorld señaló que se trataba de una «tecnología de grado “preview”» que se beneficiaría directamente del lanzamiento del Xserve G5 a finales de ese año. El comentarista de InfoWorld Ephraim Schwartz también predijo que Xgrid era un movimiento de apertura en la entrada de Apple en el mercado de la informática empresarial.
Apple interrumpió Xgrid con OS X 10.8 Mountain Lion, junto con servicios dependientes como Podcast Producer.

## Protocolo

El protocolo Xgrid utiliza el marco de red BEEP para comunicarse con los nodos de la red. La infraestructura del sistema incluye tres tipos de ordenadores que se comunican a través del protocolo:
* El cliente, que envía trabajos de cálculo al controlador
* El controlador, que divide los trabajos en tareas y las asigna a los agentes.
* Los agentes, que procesan la parte del cálculo que les ha sido asignada y devuelven los resultados al controlador, que a su vez los devuelve al cliente.
Una computadora puede actuar como uno o los tres componentes al mismo tiempo. El protocolo Xgrid proporciona la infraestructura básica para que las computadoras se comuniquen, pero no interviene en el procesamiento del cálculo especificado. Xgrid está orientado a cálculos que consumen mucho tiempo y que pueden segregarse fácilmente en tareas más pequeñas, a veces denominadas tareas embarazosamente paralelas. Esto incluye cálculos Montecarlo, renderizado 3D y mapas de Mandelbrot.
Dentro del protocolo Xgrid, se pueden transmitir tres tipos de mensajes a otras computadoras del mismo clúster: solicitudes, notificaciones y respuestas. Las solicitudes deben ser respondidas por el destinatario con una respuesta, las notificaciones no requieren respuesta y las respuestas son respuestas a mensajes enviados. Se identifican por su nombre, tipo (solicitud/notificación/respuesta) y contenido. Cada mensaje se encapsula en un mensaje BEEP (BEEP MSG) y se acusa recibo mediante una respuesta vacía (RPY). Xgrid no aprovecha la infraestructura de mensajes/respuestas BEEP. Cualquier mensaje recibido que requiera una respuesta simplemente genera un mensaje BEEP independiente que contiene la respuesta. Los mensajes Xgrid se codifican como diccionarios de pares clave/valor que se convierten a XML antes de ser enviados a través de la red BEEP.

## Arquitectura

La arquitectura del sistema Xgrid está diseñada en torno a un sistema basado en tareas: el controlador envía tareas a los agentes y éstos devuelven las respuestas. El cálculo real que el controlador ejecuta en un sistema Xgrid se conoce como trabajo (task). El trabajo contiene todos los archivos necesarios para completar la tarea con éxito, como los parámetros de entrada, archivos de datos, directorios, ejecutables y/o shell scripts, los archivos incluidos en un trabajo Xgrid debe ser capaz de ejecutarse simultáneamente o de forma asíncrona, o cualquier beneficio de la ejecución de un trabajo de este tipo en un Xgrid se pierde. Una vez finalizado el trabajo, el controlador puede configurarse para notificar al cliente la finalización o el fallo de la tarea, por ejemplo por correo electrónico. El cliente puede abandonar la red mientras se ejecutan las tareas. También puede monitorizar el estado del trabajo bajo demanda consultando al controlador, aunque no puede seguir el progreso de tareas individuales.
El controlador es fundamental para el correcto funcionamiento de un Xgrid, ya que este nodo es responsable de la distribución, supervisión y coordinación de tareas en los agentes. El programa que se ejecuta en el controlador puede asignar y reasignar tareas para hacer frente a fallos individuales de los agentes bajo demanda. El número de tareas asignadas a un agente depende de dos factores: el número de agentes en un Xgrid y el número de procesadores en cada nodo. El número de agentes en un Xgrid determina cómo asignará las tareas el controlador. Las tareas pueden asignarse simultáneamente para un gran número de agentes, o en cola para un pequeño número de agentes. Cuando se detecta un nodo con más de un procesador en un Xgrid, el controlador puede asignar una tarea por procesador; esto sólo ocurre si el número de agentes en la red es inferior al número de tareas que el controlador tiene que completar.
Xgrid se basa en el Protocolo de Intercambio Extensible de Bloques (BEEP, por sus siglas en inglés), un estándar del IETF comparable a HTTP, pero centrado en la comunicación bidireccional multiplexada, como la que se da en las redes peer-to-peer. BEEP, a su vez, utiliza XML para definir perfiles de comunicación entre múltiples agentes a través de una única red o conexión a Internet.
El software del agente Xgrid estaba disponible para sistemas Unix y Linux.

## Interfaz

Aunque es posible acceder a Xgrid desde la línea de comandos, la interfaz gráfica de usuario Xgrid, un programa incluido con Mac OS X Server y, desde marzo de 2009, disponible en línea, es una forma mucho más eficiente de administrar un sistema Xgrid. Originalmente, el agente Xgrid se incluía en todas las instalaciones de Mac OS X 10.4 Tiger, pero la interfaz gráfica de usuario se reservaba a los usuarios de Mac OS X Server. Esta decisión limitó los esfuerzos de la comunidad informática por adoptar la plataforma. Finalmente, Apple puso a disposición del público las herramientas de administración de Mac OS X Server, que incluían la aplicación de administración de Xgrid incluida con Mac OS X Server.
A pesar de la falta de una interfaz gráfica de controlador en la distribución estándar (no servidor) de Mac OS X, es posible configurar un controlador Xgrid a través de las herramientas de línea de comandos xgridctl y xgrid. Una vez que el demonio controlador de Xgrid se está ejecutando, es posible la administración de la red con la herramienta Xgrid Admin de Apple. Algunas aplicaciones, como VisualHub, proporcionan la capacidad de controlador Xgrid a través de sus interfaces de usuario.