palais descongrèsParis7, 8 et 9février 2012
JavaScript aussi sur le  serveur et jusque dans le  cloud ?    7 février 2012Benjamin Guinebertière   Stéphane Rioswww.ben...
Fasterize  Startup créée mi-2011, en phase de beta privée  Accélérateur de site Web en mode SaaS    Optimise les pages HT...
Plan  Contexte  JavaScript côté serveur  Comment Microsoft met cela en œuvre   Node.JS sur Windows Azure   Installation ...
15 ans de JavaScript  Historique rapide JavaScript    Création en 1995 par Brendan Eich    Standardisé ensuite via ECMAS...
Les moteurs JS  Différents moteurs    Chakra (IE)    {Spider|Jaeger|Trace}.Monkey (Mozilla)    V8 (Chrome)    Rhino (J...
Le langage JavaScript  Quelques spécificités de ce langage orienté objets    Dynamique (runtime vs compilation)    Pas d...
Un même langage côté client etserveur?  Fondamentaux du langage sont les mêmes …    Syntaxe, portée des variables, opérat...
JavaScript côté serveur  Premier essai en 1996 avec Netscape (Livewire)  De nombreuses plateformes    Node.js, Rhino, Cou...
Et Microsoft ?  Microsoft accompagne ce mouvement important    Sur Windows Azure    Egalement sur Windows Server  Exempl...
Windows Azure résolumentouvert
Node.JS  Node.JS a été créé par Ryan Dahl chez Joyent en 2009  C’est un « framework » permettant de développer des  servic...
Hello Node var http = require(http); http.createServer(function (req, res) {   res.writeHead(200, {Content-Type: text/html...
Hello Node++ var http = require(http),mysql = require(mysql),  client = mysql.createClient({user: root})); client.query(us...
Windows Azure Training Kit  Plusieurs tutoriaux existent et décrivent comment écrire sa  première application avec Node.JS...
Node.JS dans Windows Azure  Microsoft aide officiellement Ryan Dahl à porter Node.JS  sur Windows depuis juin 2011  Utilis...
Node.JS sur Windows Azure   proxy avec modifications de données
Modèle monothreadé !  Ne jamais bloquer !!!  Créer plusieurs process pour monter en charge    Donc clusteriser pour avoir...
Ecosystème  Communauté très active    IRC, mailing list, wiki, github  Npm : Node Package Manager (inclus en v0.6)  Beauc...
Les pièges à éviter  Asynchrone    Race conditions    Soupe de callbacks, lisibilité du code    Librairies « flow contr...
Node.JS sur Windows Azure   serveur de chat
Mongo DB  Une des bases noSql importantes du moment  Base orientée documents    Stocke du JSON    Procédures stockées en...
MongoDB et Windows Azure  http://www.mongodb.org/display/DOCS/MongoDB+on+Azur  e  https://github.com/mongodb/mongo-azure  ...
Node.JS accédant à des tables MongoDBsur Windows Azure
Hadoop:implémentation de Map/Reduce     Extrait de « Hadoop Tutorial from Yahoo!" (Yahoo! Inc.) / CC BY 3.0 »
Exemple: comptage de mots  Map:    Pour chaque mot trouvé       Émettre <<le mot>>, 1  Shuffle (magiquement géré par le ...
Map/Reduce - Java
Map/Reduce – C#
Map/Reduce - JavaScript
Hadoop – vue d’ensemble
En JavaScript, c’est plus lent ?  En l’occurrence non, car    Le moteur Hadoop est écrit en Java    Le JavaScript tourne...
Maintenant, analysons des logsIIS    Scénario          Web Role Azure        (grosse ferme Web)      Accumulation de logs ...
Création d’un cluster à la demande
Création d’un cluster à la demande
Connexion aux Blobs WindowsAzure
Analyse de logs IISHDHD
Hadoop On Azure en JavaScript
Conclusion  JavaScript prend de plus en plus d’importance    Y compris sur le serveur  Adoption forte par Microsoft    N...
Des ressources Windows Azuregratuites  Testez Windows Azure   Abonnés MSDN, vous  gratuitement pendant   bénéficiez de  90...
Pour aller plus loin                                               Prochaines sessions des Dev Camps  Chaque semaine, les ...
Prochain SlideShare
Chargement dans…5
×

JavaScript aussi sur le serveur et jusque dans le cloud?

1 183 vues

Publié le


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

Publié dans : Technologie
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

JavaScript aussi sur le serveur et jusque dans le cloud?

  1. 1. palais descongrèsParis7, 8 et 9février 2012
  2. 2. JavaScript aussi sur le serveur et jusque dans le cloud ? 7 février 2012Benjamin Guinebertière Stéphane Rioswww.benjguin.com @stefounetrelation technique CEO / CTO Founderarchitectes 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 etserveur? 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ésolumentouvert
  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 MongoDBsur 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 logsIIS 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 WindowsAzure
  36. 36. Analyse de logs IISHDHD
  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 Azuregratuites 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 dun 2012 Meeting template METRO javascript 20 mars Live Retour dexpérience LightSwitch, Optimisation de 2012 Meeting laccès aux données, Intégration Silverlight 23 mars Live OAuth - la clé de lutilisation des réseaux sociaux dans 2012 Meeting votre application

×