Imagina una red compuesta de navegadores web configurados para trabajar de forma colaborativa para alcanzar una meta particular. ¿Cómo los orquestarías? ¿Cómo distribuirías las obligaciones computacionales de cada uno? ¿Qué tipo de tecnología debería tejer esa red? Las respuestas a estas preguntas definen lo que podríamos considerar como Computación Distribuida Basada en Navegadores (lo acepto, el nombre no es el más afortunado).

A lo largo de este artículo revisaré los aspectos que favorecen al navegador web como plataforma de aplicaciones distribuidas, así como algunos proyectos que ya han experimentado alrededor de esta fascinante idea.

JavaScript, ¿el nuevo CPU?

Lejos están aquellos días en los que el navegador web sólo descargaba HTML y unos pocos elementos extra para componer documentos en nuestra pantalla. En cambio, en la actualidad está transformado en una compleja y completa herramienta de software, en buena medida gracias a la cantidad de aplicaciones de escritorio que han sido trasladadas a él.

Desde el navegador ya podemos disfrutar de sofisticados clientes de correo como Gmail y hasta de videojuegos como Biolab Disaster. Y muchas otras aplicaciones escritas por programadores que están aprovechando las bondades de HTML5.

Sin duda uno de los principales protagonistas de esa evolución es el imprescindible motor JavaScript. Los navegadores web más populares ofrecen el suyo. Piensa por un momento en cada uno como si de un procesador Intel, AMD o SPARC se tratase:

  • Firefox 4 usará JägerMonkey, una gran mejora con respecto al viejo SpiderMonkey.

  • Opera 10.6 ya cuenta con el poderoso y veloz Carakan.

  • Chrome/Chromium nos impresionan en cada nueva versión con su motor V8.

  • Safari 5 emplea Nitro, que es 30% más rápido que su predecesor, según Apple. Por cierto, el generador de código nativo de JägerMonkey está basado en el de Nitro.

  • Internet Explorer 9 beta no se queda atrás con Chakra, que presume ser capaz de usar el CPU de forma paralela al navegador.

Dicho esto, ¿qué puede ofrecer el navegador para servir de plataforma de cómputación distribuida? Por ahora distingo tres puntos fuertes a su favor:

  1. Está integrado naturalmente a la Red. La comunicación entre nodos puede facilitarse.

  2. El motor JavaScript puede hacer las veces de CPU. Las aplicaciones JavaScript se ejecutarán tan rápido como sean interpretadas por su motor.

  3. Es una interfaz de usuario multiplaforma (¿universal?). Una misma aplicación puede ejecutarse en el mismo navegador sin importar sistema operativo ni CPU. El navegador hace las veces de una máquina virtual.

El trabajo realizado

La idea de distribuir tareas de cómputo para ser ejecutadas en navegadores web no es nueva en lo absoluto. En 2007 Boldrin et al. publicaron un artículo (_Distributed Computing Through Web Browser_ en el que propusieron una arquitectura de computación distribuida compuesta por navegadores web que ejecutan tareas en JavaScript y AJAX. El origen del tema puede rastrearse años antes en proyectos como Parasite, basados en applets de Java.

¿Quiénes están experimentando recientemente con el navegador cómo plataforma de computación distribuida?

  • Ilya Grigorik jugó con el asunto en 2009. Creó una pequeña aplicación en Ruby para hacer computación masivamente paralela. Hizo una implementación básica del MapReduce de Google.

  • Ivan Zuzak creó pmrpc una versión de RPC para HTML5. Con esto es posible crear aplicaciones distribuidas con el viejo paradigma RPC de paso de mensajes y llamadas a procedimientos remotos.

  • La gente del equipo Anansi hizo una implementación de MapReduce en JavaScript llamada MapRejuice. Ejecuta tareas en navegadores web y por el momento sólo es una prueba de concepto. Han estado contando palabras de manera colaborativa desde entonces.

¿Supercomputación web?

Yo no sé con exactitud qué direcciones tomará el tema. Me he convencido de que el navegador web está llamado a ser La Plataforma Universal de Cómputo. Puedo sonar exagerado (¿rimbombante?). Mis razones mucho tienen que ver con lo expuesto hasta ahora (quizá merecen otro post entero donde involucre las últimas propuestas para HTML5 y la aceleración gráfica vía GPU).

No veo lejana la fecha en la que, por ejemplo, SETI@Home, y otros proyectos similares, estén migrados completamente a Firefox en forma de un algún complemento. Los navegadores serán nodos con un aceptable desempeño para la computación voluntaria, masiva y colaborativa. Entonces veremos emerger una supercomputación web que integre PC, laptops, netbooks y hasta smartphones. ¿Será?

Imagen: Visual Complexity

Recibe cada mañana nuestra newsletter. Una guía para entender lo que importa en relación con la tecnología, la ciencia y la cultura digital.

Procesando...
¡Listo! Ya estás suscrito

También en Hipertextual: