SlideShare ist ein Scribd-Unternehmen logo
1 von 40
palais des
congrès
Paris




7, 8 et 9
février 2012
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
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 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
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ésolument
ouvert
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 MongoDB
sur 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 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
Création d’un cluster à la demande
Création d’un cluster à la demande
Connexion aux Blobs Windows
Azure
Analyse de logs IIS



HD




H




D
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 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
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

Weitere ähnliche Inhalte

Andere mochten auch

Hadoop & devOps : better together
Hadoop & devOps : better togetherHadoop & devOps : better together
Hadoop & devOps : better togetherMaxime Lanciaux
 
Getting Started With Sketchnoting
Getting Started With SketchnotingGetting Started With Sketchnoting
Getting Started With SketchnotingMichele Ide-Smith
 
[devops REX 2016] DevOps at Scale : ce qu’on fait, ce que l’on a appris chez ...
[devops REX 2016] DevOps at Scale : ce qu’on fait, ce que l’on a appris chez ...[devops REX 2016] DevOps at Scale : ce qu’on fait, ce que l’on a appris chez ...
[devops REX 2016] DevOps at Scale : ce qu’on fait, ce que l’on a appris chez ...devops REX
 
Visual Note Taking / Sketchnotes
Visual Note Taking / SketchnotesVisual Note Taking / Sketchnotes
Visual Note Taking / SketchnotesEva-Lotta Lamm
 
Practical Sketchnoting
Practical SketchnotingPractical Sketchnoting
Practical SketchnotingJason Alderman
 
Sketchnote Mini-Workshop: DSGNDAY 2014
Sketchnote Mini-Workshop: DSGNDAY 2014Sketchnote Mini-Workshop: DSGNDAY 2014
Sketchnote Mini-Workshop: DSGNDAY 2014Mike Rohde
 
Visual Note-Taking 101: Sketchnoting Techniques
Visual Note-Taking 101: Sketchnoting TechniquesVisual Note-Taking 101: Sketchnoting Techniques
Visual Note-Taking 101: Sketchnoting TechniquesMike Rohde
 
Vers une nouvelle période de l'accès public
Vers une nouvelle période de l'accès publicVers une nouvelle période de l'accès public
Vers une nouvelle période de l'accès publicJezabel Roullee
 
Fósiles
FósilesFósiles
Fósilesantoal
 
Vêtements géant H & M Défend ‘Perfect’ Modèles virtuels
Vêtements géant H & M Défend ‘Perfect’ Modèles virtuelsVêtements géant H & M Défend ‘Perfect’ Modèles virtuels
Vêtements géant H & M Défend ‘Perfect’ Modèles virtuelsangelcaicai
 
Marbella
MarbellaMarbella
MarbellaASPM
 
Truffaut et la nouvelle vague
Truffaut et la nouvelle vagueTruffaut et la nouvelle vague
Truffaut et la nouvelle vaguemaggica
 
Memo pour suivre sa stratégie de valorisation
Memo pour suivre sa stratégie de valorisationMemo pour suivre sa stratégie de valorisation
Memo pour suivre sa stratégie de valorisationJezabel Roullee
 
Histoire de passeurs et de lieux numériques : portraits et monographies
Histoire de passeurs et de lieux numériques : portraits et monographiesHistoire de passeurs et de lieux numériques : portraits et monographies
Histoire de passeurs et de lieux numériques : portraits et monographiesJezabel Roullee
 
Vientos y tempestades de la vida
Vientos y tempestades de la vidaVientos y tempestades de la vida
Vientos y tempestades de la vidaLUZ M.
 
La brocha.
La brocha.La brocha.
La brocha.LUZ M.
 
Disipando mitos sobre la Actividad Física. Mesa ¿Que hay de nuevo? 35º Congre...
Disipando mitos sobre la Actividad Física. Mesa ¿Que hay de nuevo? 35º Congre...Disipando mitos sobre la Actividad Física. Mesa ¿Que hay de nuevo? 35º Congre...
Disipando mitos sobre la Actividad Física. Mesa ¿Que hay de nuevo? 35º Congre...fcamarelles
 
Baromètre pression e-marketing
Baromètre pression e-marketingBaromètre pression e-marketing
Baromètre pression e-marketingstephchevance
 

Andere mochten auch (20)

Hadoop & devOps : better together
Hadoop & devOps : better togetherHadoop & devOps : better together
Hadoop & devOps : better together
 
Getting Started With Sketchnoting
Getting Started With SketchnotingGetting Started With Sketchnoting
Getting Started With Sketchnoting
 
[devops REX 2016] DevOps at Scale : ce qu’on fait, ce que l’on a appris chez ...
[devops REX 2016] DevOps at Scale : ce qu’on fait, ce que l’on a appris chez ...[devops REX 2016] DevOps at Scale : ce qu’on fait, ce que l’on a appris chez ...
[devops REX 2016] DevOps at Scale : ce qu’on fait, ce que l’on a appris chez ...
 
Visual Note Taking / Sketchnotes
Visual Note Taking / SketchnotesVisual Note Taking / Sketchnotes
Visual Note Taking / Sketchnotes
 
Practical Sketchnoting
Practical SketchnotingPractical Sketchnoting
Practical Sketchnoting
 
Sketchnote Mini-Workshop: DSGNDAY 2014
Sketchnote Mini-Workshop: DSGNDAY 2014Sketchnote Mini-Workshop: DSGNDAY 2014
Sketchnote Mini-Workshop: DSGNDAY 2014
 
Visual Note-Taking 101: Sketchnoting Techniques
Visual Note-Taking 101: Sketchnoting TechniquesVisual Note-Taking 101: Sketchnoting Techniques
Visual Note-Taking 101: Sketchnoting Techniques
 
Vers une nouvelle période de l'accès public
Vers une nouvelle période de l'accès publicVers une nouvelle période de l'accès public
Vers une nouvelle période de l'accès public
 
Fósiles
FósilesFósiles
Fósiles
 
Vêtements géant H & M Défend ‘Perfect’ Modèles virtuels
Vêtements géant H & M Défend ‘Perfect’ Modèles virtuelsVêtements géant H & M Défend ‘Perfect’ Modèles virtuels
Vêtements géant H & M Défend ‘Perfect’ Modèles virtuels
 
Marbella
MarbellaMarbella
Marbella
 
Truffaut et la nouvelle vague
Truffaut et la nouvelle vagueTruffaut et la nouvelle vague
Truffaut et la nouvelle vague
 
Memo pour suivre sa stratégie de valorisation
Memo pour suivre sa stratégie de valorisationMemo pour suivre sa stratégie de valorisation
Memo pour suivre sa stratégie de valorisation
 
Actividad entregable 1 (1)
Actividad entregable 1 (1)Actividad entregable 1 (1)
Actividad entregable 1 (1)
 
Histoire de passeurs et de lieux numériques : portraits et monographies
Histoire de passeurs et de lieux numériques : portraits et monographiesHistoire de passeurs et de lieux numériques : portraits et monographies
Histoire de passeurs et de lieux numériques : portraits et monographies
 
Vientos y tempestades de la vida
Vientos y tempestades de la vidaVientos y tempestades de la vida
Vientos y tempestades de la vida
 
Complet bma
Complet bmaComplet bma
Complet bma
 
La brocha.
La brocha.La brocha.
La brocha.
 
Disipando mitos sobre la Actividad Física. Mesa ¿Que hay de nuevo? 35º Congre...
Disipando mitos sobre la Actividad Física. Mesa ¿Que hay de nuevo? 35º Congre...Disipando mitos sobre la Actividad Física. Mesa ¿Que hay de nuevo? 35º Congre...
Disipando mitos sobre la Actividad Física. Mesa ¿Que hay de nuevo? 35º Congre...
 
Baromètre pression e-marketing
Baromètre pression e-marketingBaromètre pression e-marketing
Baromètre pression e-marketing
 

Ähnlich wie Server Side Javascript in the cloud

Parisweb - javascript server side - par où commencer ?
Parisweb - javascript server side - par où commencer ?Parisweb - javascript server side - par où commencer ?
Parisweb - javascript server side - par où commencer ?Quentin Adam
 
Comparaison des solutions Paas
Comparaison des solutions PaasComparaison des solutions Paas
Comparaison des solutions Paasyacine sebihi
 
.NET Microframework, les joies de l'électronique et du code pour tous
.NET Microframework, les joies de l'électronique et du code pour tous.NET Microframework, les joies de l'électronique et du code pour tous
.NET Microframework, les joies de l'électronique et du code pour tousMicrosoft
 
Node.js et les nouvelles technologies javascript
Node.js et les nouvelles technologies javascriptNode.js et les nouvelles technologies javascript
Node.js et les nouvelles technologies javascriptKhalid Jebbari
 
Azure Camp 9 Décembre 2014 - slides Keynote
Azure Camp 9 Décembre 2014 - slides KeynoteAzure Camp 9 Décembre 2014 - slides Keynote
Azure Camp 9 Décembre 2014 - slides KeynoteMicrosoft
 
Joomla Days 2011 Lyon
Joomla Days 2011 LyonJoomla Days 2011 Lyon
Joomla Days 2011 LyonLeTesteur
 
L'histoire d'html5 pour les développeurs windows phone 8
L'histoire d'html5 pour les développeurs windows phone 8L'histoire d'html5 pour les développeurs windows phone 8
L'histoire d'html5 pour les développeurs windows phone 8davrous
 
Architecturez vos applications mobiles avec Azure et Xamarin
Architecturez vos applications mobiles avec Azure et XamarinArchitecturez vos applications mobiles avec Azure et Xamarin
Architecturez vos applications mobiles avec Azure et XamarinThierry Buisson
 
Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017Julien Dubois
 
Les apports d'HTML5 pour l'interopérabilité des applications géospatiales
Les apports d'HTML5 pour l'interopérabilité des applications géospatialesLes apports d'HTML5 pour l'interopérabilité des applications géospatiales
Les apports d'HTML5 pour l'interopérabilité des applications géospatialesGaëtan LAVENU
 
Node.js dans Azure
Node.js dans AzureNode.js dans Azure
Node.js dans AzureMicrosoft
 
Eclipse day paris
Eclipse day parisEclipse day paris
Eclipse day parisLeTesteur
 
Techdays azure pour les développeurs
Techdays azure pour les développeursTechdays azure pour les développeurs
Techdays azure pour les développeursAymeric Weinbach
 
Windows Azure: le cloud pour les développeurs
Windows Azure: le cloud pour les développeursWindows Azure: le cloud pour les développeurs
Windows Azure: le cloud pour les développeursMicrosoft
 
01 - [ASP.NET Core] Plénière
01 - [ASP.NET Core] Plénière 01 - [ASP.NET Core] Plénière
01 - [ASP.NET Core] Plénière Cellenza
 
Bbl microservices avec vert.x cdi elastic search
Bbl microservices avec vert.x cdi elastic searchBbl microservices avec vert.x cdi elastic search
Bbl microservices avec vert.x cdi elastic searchIdriss Neumann
 
Google Web Toolkit 1.5 Presentation Web Creative Common
Google Web Toolkit 1.5 Presentation Web Creative CommonGoogle Web Toolkit 1.5 Presentation Web Creative Common
Google Web Toolkit 1.5 Presentation Web Creative CommonStéphane Liétard
 
Comparatif des frameworks js mv
Comparatif des frameworks js mvComparatif des frameworks js mv
Comparatif des frameworks js mvMael Monnier
 

Ähnlich wie Server Side Javascript in the cloud (20)

Livre Blanc Web temps réel - Node JS
Livre Blanc Web temps réel - Node JSLivre Blanc Web temps réel - Node JS
Livre Blanc Web temps réel - Node JS
 
Parisweb - javascript server side - par où commencer ?
Parisweb - javascript server side - par où commencer ?Parisweb - javascript server side - par où commencer ?
Parisweb - javascript server side - par où commencer ?
 
Comparaison des solutions Paas
Comparaison des solutions PaasComparaison des solutions Paas
Comparaison des solutions Paas
 
.NET Microframework, les joies de l'électronique et du code pour tous
.NET Microframework, les joies de l'électronique et du code pour tous.NET Microframework, les joies de l'électronique et du code pour tous
.NET Microframework, les joies de l'électronique et du code pour tous
 
Node.js et les nouvelles technologies javascript
Node.js et les nouvelles technologies javascriptNode.js et les nouvelles technologies javascript
Node.js et les nouvelles technologies javascript
 
Azure Camp 9 Décembre 2014 - slides Keynote
Azure Camp 9 Décembre 2014 - slides KeynoteAzure Camp 9 Décembre 2014 - slides Keynote
Azure Camp 9 Décembre 2014 - slides Keynote
 
Joomla Days 2011 Lyon
Joomla Days 2011 LyonJoomla Days 2011 Lyon
Joomla Days 2011 Lyon
 
L'histoire d'html5 pour les développeurs windows phone 8
L'histoire d'html5 pour les développeurs windows phone 8L'histoire d'html5 pour les développeurs windows phone 8
L'histoire d'html5 pour les développeurs windows phone 8
 
Architecturez vos applications mobiles avec Azure et Xamarin
Architecturez vos applications mobiles avec Azure et XamarinArchitecturez vos applications mobiles avec Azure et Xamarin
Architecturez vos applications mobiles avec Azure et Xamarin
 
Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017
 
Les apports d'HTML5 pour l'interopérabilité des applications géospatiales
Les apports d'HTML5 pour l'interopérabilité des applications géospatialesLes apports d'HTML5 pour l'interopérabilité des applications géospatiales
Les apports d'HTML5 pour l'interopérabilité des applications géospatiales
 
Node.js dans Azure
Node.js dans AzureNode.js dans Azure
Node.js dans Azure
 
Eclipse day paris
Eclipse day parisEclipse day paris
Eclipse day paris
 
Techdays azure pour les développeurs
Techdays azure pour les développeursTechdays azure pour les développeurs
Techdays azure pour les développeurs
 
Windows Azure: le cloud pour les développeurs
Windows Azure: le cloud pour les développeursWindows Azure: le cloud pour les développeurs
Windows Azure: le cloud pour les développeurs
 
01 - [ASP.NET Core] Plénière
01 - [ASP.NET Core] Plénière 01 - [ASP.NET Core] Plénière
01 - [ASP.NET Core] Plénière
 
Bbl microservices avec vert.x cdi elastic search
Bbl microservices avec vert.x cdi elastic searchBbl microservices avec vert.x cdi elastic search
Bbl microservices avec vert.x cdi elastic search
 
Google Web Toolkit 1.5 Presentation Web Creative Common
Google Web Toolkit 1.5 Presentation Web Creative CommonGoogle Web Toolkit 1.5 Presentation Web Creative Common
Google Web Toolkit 1.5 Presentation Web Creative Common
 
Comparatif des frameworks js mv
Comparatif des frameworks js mvComparatif des frameworks js mv
Comparatif des frameworks js mv
 
Native script
Native scriptNative script
Native script
 

Server Side Javascript in the cloud

  • 1. palais des congrès Paris 7, 8 et 9 février 2012
  • 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. 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. 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. 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. 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. 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. 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. 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. Et Microsoft ? Microsoft accompagne ce mouvement important  Sur Windows Azure  Egalement sur Windows Server Exemples dont nous allons parler:  Node.JS  MongoDB  Hadoop
  • 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. 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. 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. 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. 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. Node.JS sur Windows Azure proxy avec modifications de données
  • 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. 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. 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. Node.JS sur Windows Azure serveur de chat
  • 22. Mongo DB Une des bases noSql importantes du moment Base orientée documents  Stocke du JSON  Procédures stockées en JavaScript
  • 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. Node.JS accédant à des tables MongoDB sur Windows Azure
  • 25. Hadoop: implémentation de Map/Reduce Extrait de « Hadoop Tutorial from Yahoo!" (Yahoo! Inc.) / CC BY 3.0 »
  • 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
  • 30. Hadoop – vue d’ensemble
  • 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. 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. Création d’un cluster à la demande
  • 34. Création d’un cluster à la demande
  • 35. Connexion aux Blobs Windows Azure
  • 36. Analyse de logs IIS HD H D
  • 37. Hadoop On Azure en JavaScript
  • 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. 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. 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

Hinweis der Redaktion

  1. V120127a
  2. 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.
  3. 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
  4. 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.
  5. 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; })