lo2k


Weblog

24/02

2011

9 Comments

Faire un cluster de calcul avec JavaScript.

Je vais vous proposez une idée simple, “faire un cluster avec l’idle CPU des gens qui trainent sur des sites webs”. Comment ? En JavaScript bien sûr !

Vous vous souvenez tous de Folding@Home (ou Seti@Home même si le coté UFO me botte beaucoup moins), pourquoi ne pas reprendre l’idée en AJAX ?

Rapide coup d’oeil des technos existantes

Les navigateurs Web récents on fait un énorme bon en terme de performance sur l’interprétation du JavaScript. Vous trouverez facilement sur google de nombreux articles qui traitent du sujet.

Si vous suivez ce blog vous avez dû tester un petit portage que j’avais fais de JBox2D avec GWT et les Canvas. Je vous laisse retenter l’expérience et vous verrez que le moteur physique est beaucoup plus rapide qu’il y a un an.

Pour rappel, GWT (Google Web Toolkit) permet de traduire du code Java en JavaScript. Bon ce n’est pas magique et il y a des limites mais ce compilateur permet assez facilement de porter des choses assez complexes.

Un langage de plus en plus rapide, un bon compilateur passons donc a l’étape suivante !

Mise en oeuvre

Le JavaScript est un langage de script fournit par le serveur et exécuté par le client. Il n’y a donc aucune installation et aucune restrictions (sauf en terme de sécurité, et ça se comprend) mais il n’y a aucune limitation en terme d’usage CPU.

Il est donc facile de faire un script qui récupère des données a traiter et l’algo de traitement (tant qu’a faire) effectue un certain nombre de calculs complexes puis transmet la réponse (en json par exemple) a un serveur.

Votre navigateur web permet donc (en terme pompeux), l’injection en javascript des données, le traitement et la transmission des résultats a un serveur.

Ici la seule difficulté, c’est le développement d’un serveur qui envoie les données a traiter et récupère les résultats et il faut le dire… c’est vraiment pas compliqué.

Vous avez donc grâce au couple HTML/JS un outil de déploiement facile de cluster. Et ben ça alors ! J’irais même plus loin en disant qu’il est UNIVERSEL puisqu’ici même votre téléphone (Android ou IPhone) pourra aussi contribuer au cluster. Tout ce qui peut aller sur le net (et qui a un navigateur JS) pourra contribuer aux calculs.

Mais, il y a forcément un bémol. L’utilisateur doit consciemment ou inconsciemment laisser son navigateur sur une page ou le script de calcul est présent. Je dis bien “inconsciemment” car l’utilisateur ne sais pas que du javascript tourne en arrière plan d’une page web. Un utilisateur mal intentionné pourrait donc recycler son site web en une énorme ferme de calcul (Je ne parlerais même pas ici d’attaque de cross site scripting) . Il faut bien comprendre qu’une simple balise SCRIPT dans une page web transforme un simple ordi en une partie du cluster.

Applications possibles dès à présent

Je vais ici proposer 3 idées d’utilisation d’un tel système de cluster.

Google labs dans le domaine médical

Vous l’aurez compris il faut que l’utilisateur soit présent sur la page pour que le calcul se fasse.

Imaginons que Google demande a ses utilisateurs de GMail et Google Docs de participer a un projet de calcul pour le domaine médical (type folding@Home). Il suffirait que l’utilisateur accepte (en connaissance de cause) et le script JS pourrait être lancer en arrière plan.

Des centaines de milliers de navigateur utiliseraient donc leur temps idle CPU pour le domaine médicale. Merveilleux :) .

Crack de clé WPA

Ici on est dans un domaine moins glamour. Un étudiant a prouver qu’il était possible de cracker des clé WPA avec le cloud d’Amazon, ici il suffirait de transposer ce principe sur un site web. Tout utilisateurs se connectant ce site web pourrait donc contribuer (sans le savoir) au hack de cette clé WPA.

L’utilisateur mal intentionné pourrait rajouter volontairement un script sur son site web ou alors l’injecter sur un site très connu par une attaque de type “cross site scripting” injectant ainsi son code de clustering.

J’insiste lourdement là dessus mais ce genre de pratique ne pourra JAMAIS être détecté car vous n’avez aucun contrôle sur les intentions du code JavaScript d’un site web.

Open Cloud

Ici l’idée est de faire un système de peer2peer mais en terme de temps CPU.

Toutes personnes restant sur la page de “l’open cloud” obtiendrait un crédit temps CPU. Si il souhaite utiliser le cloud il pourra exécuter grâce a une API JS ou même GWT du code qui sera exécuté plus ou moins rapidement en fonction de son crédit temps.

Imaginez le super calculateur qui pourrait émerger d’une telle structure !

Conclusion

L’évolution d’application en AJAX nous réserve a mon avis bien des surprises. Ce sujet me passionne particulièrement en ce moment et j’espère assez rapidement mettre en place une sorte de “Proof Of Concept” avec un challenge de clé Sha1.

J’espère que cet article vous aura intéressé et n’hésitez pas a laisser un commentaire :) .

  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • TwitThis
  • StumbleUpon
  • Technorati

  1. 9 reponses sur “Faire un cluster de calcul avec JavaScript.”

  2. Est-ce que le fait d’être sur cette page actuellement me fait participer à l’insu de mon plein gré à un programme de décryptage quelconque ?
    Parce que je trouve que FF4 rame pas mal là, à moins qu’il ait juste besoin d’un redémarrage ?

    C’est très intéressant en tout cas ! Vivement la suite :)


  3. Je te rassure, il n’y a aucun script de ce genre sur ce blog ;)


  4. Par ggx le 03/03/2011

    Mouais, encore une bonne raison de désactiver le javascript sur son navigateur.

    Franchement: pas envie d’offir les cycles de mon maigres CPU à un hacker ou (pire ?) à Google qui non seulement analyse mes documents, mes recherches, etc. au mérpis de ma vie privée mais pourra, si je te comprends bien, le faire avec ma puissance CPU (c’est à dire avec mon matériel, ma consommation électrique…). Tout ça pour m’offrir un service dont le prix s’élève en fait à quelques dollars par mois. C’est bien cher payé à mon sens…

    Je suis peut-être à côté de la plaque, mais il me semblait que HTML5 c’était, entre autres, pour limiter l’appel à des langages de script et autres plugins, et revenir à un web plus “propre” : HTML (le fond, y compris le mutlimédia + CSS (la forme).

    A contre-courant, certainement. L’important c’est de ne pas couler.


  5. HTML5 ne dégage clairement pas JavaScript. Le fond HTML, la forme CSS et l’interaction JS.

    Je ne vois pas comment accéder au Storage coté client en autre chose que du JavaScript.

    Accessoirement je ne pense que l’équipe de Chromium, Mozilla et Microsoft dépensent autant d’énergie dans l’optimisation de moteur JS si c’est pour tout mettre a la poubelle a terme.

    L’avenir sera clairement full JS (je pense a ChromeOS par exemple).
    Tu risques d’être un peu limité avec ton navigateur sans JS d’ici 5 a 10 ans ;) .

    Maintenant il y a clairement un problème de gestion du JS dans les futurs navigateurs mais ça c’est aussi un des objectifs de cet article. Le problème est soulevé et il serait intéressant d’avoir une réponse de Mozilla par exemple sur ce sujet.


  6. Par ggx le 03/03/2011

    > L’avenir sera clairement full JS (je pense a
    > ChromeOS par exemple).

    C’est bien un truc que tu ne verras jamais chez moi. Je ne vois pas pourquoi je me passerai d’utiliser mon disque dur pour stocker mes données (sachant que le prix du Go est en diminution constante) tout ça pour que mes documents, mes souvenirs (ma vie quoi…) soient stockés on ne sait où dans on ne sait quel format à la merci de tiers qui, malgré des licenses plus ou moins restrictives, n’offrent que peu de garanties (notamment en terme de pérennité des données si les services sont interrompus ou bien si je souhaite les quitter). Je ne parle pas non-plus du point de vue légal et respect de la vie privée (un tiers étant naturellement plus enclin à divulguer les données “privées” d’autrui pour sauvegarder ses intérêts que le possesseur de ces données).

    > Tu risques d’être un peu limité avec ton
    > navigateur sans JS d’ici 5 a 10 ans ;) .

    Si en plus de me supprimer les pop-ups, les pubs, les animations débiles et de me masquer le fait que “N personnes aiment cette page” ça laisse mon processeur en paix, je ne rate pas grand chose…

    Allez, une fois passées les bornes, il n’y a plus de limite. Alors autant se demander à quoi sert vraiment le code exécuté côté client dans les sites web. A part dans quelques cas (la gestion/validation de formulaires, le chargement à la volée de données -comme des fonds de carte-), j’ai du mal à voir les applications “vraiment” utiles. Surtout quand on est rétif aux “web applications” et à tout ce qui ressemble à du cloud…

    J’ai l’impression, mais c’est encore une fois personnel, qu’il y a beaucoup plus de “eye-candy” que de fonctionnalités nécessaires. Problème : faute d’implémentations alternatives (par exemple pour les mal/non-voyants ou ceux qui aiment links…), ces fioritures deviennent incontournables…

    Je suis certainement un vieux con, mais je regrette le temps où charger une page web ne saturait ni le processeur ni la mémoire vive et où on naviguait dans une certaine frugalité salutaire.


  7. Bah écoute, je suis bien content quand je rajoute un contact dans GMail qu’il soit auto répliqué dans mon téléphone et vice versa.

    Je suis content lorsque je recherche quelque chose dans google maps sur mon tel, qu’ils me retrouvent les adresses que j’ai rajouté en favoris sur Google Maps.

    Mon agenda Google Calendar est synchronisé avec mon téléphone.

    Bref chez moi rien n’est matérialisé et lorsque j’installe un google chrome qqpart ma config est automatiquement répliqué sur mon nouveau poste.

    Maintenant trouve moi une seule chose que Google a déjà donné a qq1 de tiers pour en exploiter les résultats ? Donne moi un exemple ou Google a clairement violé la vie privée de qq1. Toutes les données sont en générales réutilisé dans le seul et unique but de te simplifier la vie. Si le seul truc qu’ils font c’est mieux ciblé la pub… perso je m’en fout un peu :) .

    Faut vivre avec son temps.
    Et honnêtement ça me fait bien rire comme remarque venant de qq1 qui s’est acheter un iPhone. Le summum de “l’eye candy” avec un iOS qui fait un max de chose dans le dos de l’utilisateur (genre envoyer TES coord GPS) mais bon… :)


  8. Par ggx le 03/03/2011

    Je suis d’accord sur le fait que Google (mais pas seulement car c’est le lot de beaucoup d’entreprises qui font du “cloud”, du “web 2.0″, du “social network” et autres hyperies pleines de buzzwords et à la mode) proposent des services qui peuvent s’avérer pratiques, et le plus souvent gratuitement.

    Gratuitement, vraiment ? En fait, ces services tout le monde les paie dans une monnaie qui est celle du 21ème siècle: l’information personnelle. Si c’est ça vivre avec son temps, assez peu pour moi.

    Même si c’est loin d’être une solution idéale, je préfère un iPhone où je synchronise mes données avec un bon vieux câble usb et où la puce GPS est désactivée (sauf quand j’en ai vraiment besoin). Un iPhone jailbreaké, c’est vivable. Evidemment, je préfèrerai un smartphone libre (matériel + logiciel, mais ça n’existe pas : le projet OpenMoko est mort -merci Android- et la plate-forme Maemo de Nokia a été plus ou moins abandonnée -en fait fusionée avec autre chose, à voir dans le courant de cette année).

    Si tu veux le fin mot de l’histoire: oui je me suis fait avoir. On m’a fourgué un MacBook Pro et j’ai tout naturellement acheté un iPod (passe encore, car il y a peu de lecteurs MP3 avec un DD de plus de 100Go) et un iPhone. Cet appareil, je n’en avais pas vraiment besoin. A quelques sacrifices prêts, même mon bon vieux 3210 pourrait encore me suffire. Mea culpa.

    Bon revenons à Google. Sous couvert de développements open source, de beaux services “offerts” (attention au prix caché, donc) il collecte et monnaie les informations que nous sommes suffisemment stupides pour lui laisser.

    Mais ces informations sont collectées “dans le seul et unique but de te simplifier la vie”. Vraiment ? Ne pourrait-on pas avoir des recherches d’une qualité au moins équivalente sans que Google ne collecte des informations sur nos requêtes, nos visites ? Quel intérêt à ce que mon service de mail étudie (sans intervention humaine, certes) les messages que j’échange avec mes proches ? Quel intérêt à avoir de la publicité ciblée quand on est un consommateur suiffisemment élairé pour ne pas succomber aveuglement aux messages promotionnels ?

    Le seul intérêt est pour Google qui monnaie bien cher ses profils utilisateurs gentiment complétés au fil du temps et des services que nous utilisons, principalement via sa régie publicitaire. Ce n’est tout simplement qu’un business model, pas de la philantropie.

    La question est donc : le jeux en vaut-il la chandelle ? Les services proposés en valent-ils le prix ? A l’heure où la question de la vie privée en ligne prend son importance, où l’on ne sait toujours pas si le “droit à l’oubli numérique” existe, il me semble important de limiter au minimum les informations personnelles que l’on diffuse sur la toile. Mais je conçois bien qu’on peut ne pas partager cet avis et ces priorités.

    Pour finir (enfin…), juste quelques liens vers les risques de dérives possibles. Il y a le fait que Google donne des informations aux autorités de certains pays, alors que ce sont censées être des infos personnelles (http://www.readwriteweb.com/archives/googles_second_transparency_report_us_info_request.php) ou bien que certaines companies d’assurance commencent à utiliser nos profils en ligne pour estimer les risques de mortalité de leur clients (http://online.wsj.com/article/SB10001424052748704648604575620750998072986.html). Plus grave, ces données sont vulnérables à la malveillance d’employés (http://gawker.com/#!5637234) ou bien aux attaques de crackers (http://www.wired.com/threatlevel/2010/01/operation-aurora/).

    Pour ceux qui voudraient une approche plus “universitaire” sur la question de la vie privée en ligne, je vous recommande les planches d’une récente intervention de Bart Preneel de l’université de Louvain (accessoirement un ponte de la cryptographie) : http://homes.esat.kuleuven.be/~preneel/preneel_privacy_hpv1.pdf


  9. Je vais faire court.

    Le problème de la vie privée est souvent le sujet favoris des fans de la théorie du complot et des gens qui ont qqchose a se reprocher.

    Nous (informaticiens) sommes bien conscient de ce que l’on met ou non sur Internet. La divulgation d’information n’est donc pas a notre insu et est donc volontaire de notre part.

    C’est a mon sens un véritable FAUX problème. Si tu as vraiment peur de ça je te conseille plutôt de te pencher sur la carte de fidélité de ton supermarché qui elle collecte BEAUCOUP d’information a ton sujet, et ça, bien plus que google :)

    Si tu veux continuer le débat, tu as mon MSN/GMail et autre.

    On s’eloigne beaucoup trop du sujet de base qui est “l’utilisation du JS pour autre chose que de l’affichage”.


  10. Par nine le 03/05/2011

    Wenn das mal keine super Nachricht ist…toll!


Post a Comment


Exponential Fault is proudly powered by WordPress
Entries (RSS) and Comments (RSS). Theme by Jérôme Wax
Contact