Ce diaporama a bien été signalé.
Le téléchargement de votre SlideShare est en cours. ×

JavaScript aussi sur le serveur et jusque dans le cloud?

Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Chargement dans…3
×

Consultez-les par la suite

1 sur 40 Publicité

JavaScript aussi sur le serveur et jusque dans le cloud?

Télécharger pour lire hors ligne


JavaScript prend de plus en plus d'importance et Microsoft rend son exécution très efficace. Nous verrons dans cette session les cas d'utilisation de ce langage sur la plateforme Microsoft au niveau du serveur que ce soit par exemple avec Node.js ou Map/Reduce sur Windows Server et Windows Azure.

La vidéo est disponible à http://www.microsoft.com/france/mstechdays/programmes/parcours.aspx#SessionID=965a01d5-bd2f-4b60-847f-6d28900fe1e5


JavaScript prend de plus en plus d'importance et Microsoft rend son exécution très efficace. Nous verrons dans cette session les cas d'utilisation de ce langage sur la plateforme Microsoft au niveau du serveur que ce soit par exemple avec Node.js ou Map/Reduce sur Windows Server et Windows Azure.

La vidéo est disponible à http://www.microsoft.com/france/mstechdays/programmes/parcours.aspx#SessionID=965a01d5-bd2f-4b60-847f-6d28900fe1e5

Publicité
Publicité

Plus De Contenu Connexe

Diaporamas pour vous (20)

Les utilisateurs ont également aimé (16)

Publicité

Similaire à JavaScript aussi sur le serveur et jusque dans le cloud? (20)

Plus par benjguin (20)

Publicité

Plus récents (20)

JavaScript aussi sur le serveur et jusque dans le cloud?

  1. 1. palais des congrès Paris 7, 8 et 9 février 2012
  2. 2. JavaScript aussi sur le serveur et jusque dans le cloud ? 7 février 2012 Benjamin Guinebertière Stéphane Rios www.benjguin.com @stefounet relation technique CEO / CTO Founder architectes Fasterize (fasterize.com) Microsoft France
  3. 3. Fasterize Startup créée mi-2011, en phase de beta privée Accélérateur de site Web en mode SaaS  Optimise les pages HTML à la volée  Réduit le temps de chargement des pages HTML  Améliore le trafic, taux de transfo, SEO, etc …  Ultra-simple à intégrer Node.js  Utilisateurs depuis mi-2010  Au cœur de notre architecture Cloud  Rackspace / Openstack  DevOps / Chef
  4. 4. Plan Contexte JavaScript côté serveur Comment Microsoft met cela en œuvre  Node.JS sur Windows Azure  Installation de serveurs open source sur Windows Azure  Hadoop On Azure et Hadoop sur Windows Server Conclusion
  5. 5. 15 ans de JavaScript Historique rapide JavaScript  Création en 1995 par Brendan Eich  Standardisé ensuite via ECMAScript  Rien à voir avec Java JavaScript s’impose partout  De plus en plus de code client  HTML statique  HTML généré côté serveur  HTML généré côté serveur et côté client (Ajax)  HTML généré uniquement côté client (SPA)  HTML5 / Web Services REST  Browser, RIA, Database, Application Server JSON gagne du terrain sur XML  Stockage côté serveur (ex: bases NoSQL orientées documents)  Exécuter du JavaScript côté serveur
  6. 6. Les moteurs JS Différents moteurs  Chakra (IE)  {Spider|Jaeger|Trace}.Monkey (Mozilla)  V8 (Chrome)  Rhino (JVM)  Nitro (Apple)  Carakan (Opera) Evolution des moteurs  Course à la performance lancée par Chrome  JIT, dernières versions de JS (1.8.5)
  7. 7. Le langage JavaScript Quelques spécificités de ce langage orienté objets  Dynamique (runtime vs compilation)  Pas de typage fort  Quelques pièges dûs aux transtypage automatique  Types primitifs restreints : Number, String, Boolean, undefined, null  Types natifs : Array, Date, Objects, Regexp  Prototypes  Pas de classes mais possibilité d’avoir des constructeurs  Fonctions  Objets comme les autres  Peuvent être passées en paramètre, assignées à des variables, des propriétés d’objet, modifiées, etc …  Callback !  Scope, this & closures
  8. 8. Un même langage côté client et serveur? Fondamentaux du langage sont les mêmes …  Syntaxe, portée des variables, opérateurs, non typé  … … Mais  Côté client on manipule principalement le DOM  Côté serveur, plutôt pas (fs, net)  D’où des frameworks différents (ou pas de framework) Début de réutilisation de code (socket.io, commonJS, underscoreJS) Réutilisation des compétences
  9. 9. JavaScript côté serveur Premier essai en 1996 avec Netscape (Livewire) De nombreuses plateformes  Node.js, Rhino, CouchDB, Jaxer, APE Les moteurs JS côté serveur sont-ils adaptés ?  V8  roadmaps Node.JS vs Google  Limite mémoire V8 à 1,5 Go  Mais peu besoin de mémoire  Rhino tourne dans la JVM => adapté  Chakra est orienté client uniquement
  10. 10. Et Microsoft ? Microsoft accompagne ce mouvement important  Sur Windows Azure  Egalement sur Windows Server Exemples dont nous allons parler:  Node.JS  MongoDB  Hadoop
  11. 11. Windows Azure résolument ouvert
  12. 12. Node.JS Node.JS a été créé par Ryan Dahl chez Joyent en 2009 C’est un « framework » permettant de développer des services haute performances sur un modèle asynchrone Modèle asynchrone plus performant et plus efficace que le classique modèle multithread quand on a beaucoup I/O  Pas nouveau ! JavaScript choisi car adapté au développement asynchrone grâce à ses forts aspects fonctionnels Intègre les protocoles réseaux en standard (ex: HTTP) Librairie système entièrement asynchrone Version 0.6.9 stable / 0.7.2 unstable
  13. 13. Hello Node var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/html'}); res.end('Hello Node !'); }).listen(8124, '127.0.0.1'); console.log('Server running at http://127.0.0.1:8124/');
  14. 14. Hello Node++ var http = require('http'),mysql = require('mysql'), client = mysql.createClient({user: 'root'})); client.query('use castle;'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/json'}); client.query('select * from dragons',function (err,data){ if (err) { res.end('ERROR'); } else { res.end(JSON.stringify(data)); } }); }).listen(8124, '127.0.0.1'); console.log('Server running at http://127.0.0.1:8124/');
  15. 15. Windows Azure Training Kit Plusieurs tutoriaux existent et décrivent comment écrire sa première application avec Node.JS et Windows Azure  Windows Azure Training Kit (PowerShell, documentation)  Cloud9  IDE en ligne  Suppport de Node.JS  Support de Windows Azure  Fonctionnalités intégrées : édition, versionning, debug, deploy
  16. 16. Node.JS dans Windows Azure Microsoft aide officiellement Ryan Dahl à porter Node.JS sur Windows depuis juin 2011 Utilise IOCP Node est constitué d’un seul exécutable, node.exe, donc très simple à inclure dans un Worker Role Supporte Windows Azure et Windows Server 2003+
  17. 17. Node.JS sur Windows Azure proxy avec modifications de données
  18. 18. Modèle monothreadé ! Ne jamais bloquer !!! Créer plusieurs process pour monter en charge  Donc clusteriser pour avoir plusieurs instances  Avec des proxys  Entre Internet et Node.JS  IIS (avec module HTTP iisnode)  Entre Node.JS et les données (par exemple)  connection pooling Complémentarité Node.JS et son frontal  Nginx classiquement  IIS dans le cas d’Azure  Certains cas d’utilisation à déléguer au frontal:  Ressources statiques  Authentification
  19. 19. Ecosystème Communauté très active  IRC, mailing list, wiki, github Npm : Node Package Manager (inclus en v0.6) Beaucoup de modules (~6800 sur npm)  Express (Sinatra-like)  Request  Socket.io  Dnode  Optimist Version 0.8 se focalise sur cet écosystème
  20. 20. Les pièges à éviter Asynchrone  Race conditions  Soupe de callbacks, lisibilité du code  Librairies « flow control » : async.js, step.js, flow.js, … Monothreadé => plusieurs process  Clustering natif en 0.6 Encodage  ASCII/UTF-8 only Les API changent TRÈS vite  Les modules aussi  Culture Devops : déployer souvent
  21. 21. Node.JS sur Windows Azure serveur de chat
  22. 22. Mongo DB Une des bases noSql importantes du moment Base orientée documents  Stocke du JSON  Procédures stockées en JavaScript
  23. 23. MongoDB et Windows Azure http://www.mongodb.org/display/DOCS/MongoDB+on+Azur e https://github.com/mongodb/mongo-azure http://www.interoperabilitybridges.com/Azure/Getting_Starte d_Guide_Node_with_MongoDB.asp Comparaison avec les services fournis par Windows Azure  Tables et Blobs Windows Azure  SQL Azure Federations
  24. 24. Node.JS accédant à des tables MongoDB sur Windows Azure
  25. 25. Hadoop: implémentation de Map/Reduce Extrait de « Hadoop Tutorial from Yahoo!" (Yahoo! Inc.) / CC BY 3.0 »
  26. 26. Exemple: comptage de mots Map:  Pour chaque mot trouvé  Émettre <<le mot>>, 1 Shuffle (magiquement géré par le Framework) Reduce  Pour toutes les occurrences reçues clef, valeur (même clef)  Comptage += valeur  Émettre clef, comptage
  27. 27. Map/Reduce - Java
  28. 28. Map/Reduce – C#
  29. 29. Map/Reduce - JavaScript
  30. 30. Hadoop – vue d’ensemble
  31. 31. En JavaScript, c’est plus lent ? En l’occurrence non, car  Le moteur Hadoop est écrit en Java  Le JavaScript tourne dans Rhino (JVM)  Pas de « streaming » Sur un jeu de test de 50 Go de texte  En streaming (communication via stdin / stdout) : 130% de plus que Java  JavaScript : 15% de plus que Java
  32. 32. Maintenant, analysons des logs IIS Scénario Web Role Azure (grosse ferme Web) Accumulation de logs IIS (Windows Azure Blobs) Sélection, formattage, tri, aggrégat s dans un cluster Hadoop
  33. 33. Création d’un cluster à la demande
  34. 34. Création d’un cluster à la demande
  35. 35. Connexion aux Blobs Windows Azure
  36. 36. Analyse de logs IIS HD H D
  37. 37. Hadoop On Azure en JavaScript
  38. 38. Conclusion JavaScript prend de plus en plus d’importance  Y compris sur le serveur Adoption forte par Microsoft  Node.JS sur Windows Azure  Autres moteurs tels que MongoDB  Hadoop sur Windows Azure et Windows
  39. 39. Des ressources Windows Azure gratuites Testez Windows Azure Abonnés MSDN, vous gratuitement pendant bénéficiez de 90 jours Windows Azure  http://aka.ms/  http://aka.ms/ tester-azure-90j activer-azure-msdn
  40. 40. Pour aller plus loin Prochaines sessions des Dev Camps Chaque semaine, les 10 Live Open Data - Développer des applications riches avec le DevCamps février 2012 Meeting protocole Open Data ALM, Azure, Windows Phone, HTML5, OpenData 16 Live Azure series - Développer des applications sociales sur février http://msdn.microsoft.com/fr-fr/devcamp 2012 Meeting la plateforme Windows Azure 17 Live Comprendre le canvas avec Galactic et la librairie février Téléchargement, ressources 2012 Meeting three.js 21 et toolkits : RdV sur MSDN février 2012 Live Meeting La production automatisée de code avec CodeFluent Entities http://msdn.microsoft.com/fr-fr/ 2 mars Live Comprendre et mettre en oeuvre le toolkit Azure pour 2012 Meeting Windows Phone 7, iOS et Android Les offres à connaître 6 mars 2012 Live Meeting Nuget et ALM 90 jours d’essai gratuit de Windows 9 mars 2012 Live Meeting Kinect - Bien gérer la vie de son capteur Azure 13 mars Live Sharepoint series - Automatisation des tests www.windowsazure.fr 2012 Meeting 14 mars Live TFS Health Check - vérifier la bonne santé de votre 2012 Meeting plateforme de développement Jusqu’à 35% de réduction sur Visual Studio Pro, avec l’abonnement MSDN 15 mars Live Azure series - Développer pour les téléphones, les 2012 Meeting tablettes et le cloud avec Visual Studio 2010 www.visualstudio.fr 16 mars Live Applications METRO design - Désossage en règle d'un 2012 Meeting template METRO javascript 20 mars Live Retour d'expérience LightSwitch, Optimisation de 2012 Meeting l'accès aux données, Intégration Silverlight 23 mars Live OAuth - la clé de l'utilisation des réseaux sociaux dans 2012 Meeting votre application

Notes de l'éditeur

  • V120127a
  • http://www.microsoft.com/france/mstechdays/programmes/parcours.aspx#DomID=a1b85459-4eaa-471a-8927-1be7c76fdbb2&amp;SessionID=965a01d5-bd2f-4b60-847f-6d28900fe1e5JavaScript aussi sur le serveur et jusque dans le cloud ?JavaScript prend de plus en plus d&apos;importance et Microsoft rend son exécution très efficace. Nous verrons dans cette session les cas d&apos;utilisation de ce langage sur la plateforme Microsoft au niveau du serveur que ce soit par exemple avec Node.js ou Map/Reduce sur Windows Server et Windows Azure.
  • L&apos;auteur de Node.JS a vu dans le langage une plateforme idéale pour mettre en oeuvre un serveur dédiée aux entrées-sorties hautes performances asynchrones.Quels cas d&apos;usage? Le Web bien sûr, même si l&apos;architecture de Node.JS paraisse un peu extrême par rapport au trafic typiquement servi par un serveur HTTP classique. Mais surtout tous les échanges de messages effectués dans un cadre &quot;temps réel&quot; : serveurs de discussions (&quot;tchat&apos;&quot;), jeux en réseaux, jeux sociaux, traitement de flux de données, diagnostics temps réel, tableaux de bord, etc.generallyanything about DMA, interrupts, mouse/keyboard/joystick drivers programming, gameprogramming, soundprogramming, multiprocessing.For decades, asynchronous and eventdrivenprogramming has been the domain of hardware leveldevelopers &amp; gamedevelopers.Lib entièrement asynchrone : pas comme twisted, eventmachine
  • Node.JS est né dans le monde Linux, mais est activement en cours de portage vers Windows, avec le soutien de Microsoft. Il se trouve que Windows dispose en effet d&apos;un mécanisme d&apos;I/O asynchrone natif nommé XXXXX, bien différent des API POSIX, mais qui permettra un portage natif de qualité.L&apos;un des objectifs est bien entendu de pouvoir faire tourner Node.JS facilement sur Windows Azure, afin de bénéficier des apports de l&apos;approche Platform As A Service, étendus au monde Node.JS.
  • hadoopdistcp asv://logs/iis demoiislogs0#ls iislogs0#dus iislogs0runJs(&quot;bin/iisLogsAnalysis.js&quot;, &quot;iislogs0&quot;, &quot;demoiislogs0HD&quot;)runJs(&quot;bin/iisLogsAnalysisToH.js&quot;, &quot;iislogs0HD&quot;, &quot;demoiislogs0H&quot;)runJs(&quot;bin/iisLogsAnalysisToD.js&quot;, &quot;iislogs0HD&quot;, &quot;demoiislogs0D&quot;)pig.from(&quot;iislogs0H&quot;, &quot;dummy, sessionID, username, startDateTime, endDateTime, nbHits:long&quot;).select(&quot;username, sessionID, nbHits&quot;).orderBy(&quot;nbHits DESC&quot;).take(10).to(&quot;iislogs0Htop10&quot;)#cat iislogs0Htop10/part-r-00000file = fs.read(&quot;iislogs0Htop10&quot;)data = parse(file.data, &quot;username, sessionID, nbHits:long&quot;)graph.pie(data)graph.bar(data, { x: &quot;username&quot;, y: &quot;nbHits&quot;, orientation: &quot;90&quot; })

×