• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
JavaScript aussi sur le serveur et jusque dans le cloud?
 

JavaScript aussi sur le serveur et jusque dans le cloud?

on

  • 1,181 views

...


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

Statistics

Views

Total Views
1,181
Views on SlideShare
1,181
Embed Views
0

Actions

Likes
0
Downloads
4
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • V120127a
  • http://www.microsoft.com/france/mstechdays/programmes/parcours.aspx#DomID=a1b85459-4eaa-471a-8927-1be7c76fdbb2&SessionID=965a01d5-bd2f-4b60-847f-6d28900fe1e5JavaScript aussi sur le serveur et jusque dans le cloud ?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.
  • L'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'usage? Le Web bien sûr, même si l'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 "temps réel" : serveurs de discussions ("tchat'"), 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 & 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'un mécanisme d'I/O asynchrone natif nommé XXXXX, bien différent des API POSIX, mais qui permettra un portage natif de qualité.L'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'approche Platform As A Service, étendus au monde Node.JS.
  • hadoopdistcp asv://logs/iis demoiislogs0#ls iislogs0#dus iislogs0runJs("bin/iisLogsAnalysis.js", "iislogs0", "demoiislogs0HD")runJs("bin/iisLogsAnalysisToH.js", "iislogs0HD", "demoiislogs0H")runJs("bin/iisLogsAnalysisToD.js", "iislogs0HD", "demoiislogs0D")pig.from("iislogs0H", "dummy, sessionID, username, startDateTime, endDateTime, nbHits:long").select("username, sessionID, nbHits").orderBy("nbHits DESC").take(10).to("iislogs0Htop10")#cat iislogs0Htop10/part-r-00000file = fs.read("iislogs0Htop10")data = parse(file.data, "username, sessionID, nbHits:long")graph.pie(data)graph.bar(data, { x: "username", y: "nbHits", orientation: "90" })

JavaScript aussi sur le serveur et jusque dans le cloud? JavaScript aussi sur le serveur et jusque dans le cloud? Presentation Transcript

  • 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.benjguin.com @stefounetrelation technique CEO / CTO Founderarchitectes Fasterize (fasterize.com)Microsoft France
  • 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
  • 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
  • 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
  • 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)
  • 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
  • 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
  • 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
  • Et Microsoft ? Microsoft accompagne ce mouvement important  Sur Windows Azure  Egalement sur Windows Server Exemples dont nous allons parler:  Node.JS  MongoDB  Hadoop
  • 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 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
  • 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/);
  • 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/);
  • 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
  • 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+
  • 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 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
  • 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
  • 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
  • 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 JavaScript
  • 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
  • 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 Framework) Reduce  Pour toutes les occurrences reçues clef, valeur (même clef)  Comptage += valeur  Émettre clef, comptage
  • 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 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
  • 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
  • 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  Node.JS sur Windows Azure  Autres moteurs tels que MongoDB  Hadoop sur Windows Azure et Windows
  • 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
  • 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