31

Node.js dans Azure

Embed Size (px)

DESCRIPTION

Coupler les mécanismes évènementiels nativement asynchrones du framework opensource node.hjs avec un hébergement dans IIS permet aujourd'hui d'implémenter des solutions extrêmement « scalables » sur la plateforme Windows. Si l'on ajoute à cette recette l'ingrédient Cloud, les gains n'en sont que plus nombreux : self-provisioning, élasticité, facturation à l'utilisation.... L'objectif de cette session est de présenter différents contextes d’utilisation du framework node.js dans Azure : Cloud Services PaaS, Web Site, Azure Mobiles Services Speaker : Stéphane Goudeau (Microsoft)

Citation preview

Page 1: Node.js dans Azure
Page 2: Node.js dans Azure

Architecture/Azure/Cloud

node.js et Windows Azure

Stéphane GoudeauMicrosoft

[email protected]

Page 3: Node.js dans Azure

Architecture/Azure/Cloud#mstechdays

Depuis votre smartphone sur :http://notes.mstechdays.fr

De nombreux lots à gagner toute les heures !!!Claviers, souris et jeux Microsoft…

Merci de nous aider à améliorer les Techdays !

Donnez votre avis !

Page 4: Node.js dans Azure

Architecture/Azure/Cloud#mstechdays

NODE.JS : INTRODUCTION

Page 5: Node.js dans Azure

Architecture/Azure/Cloud#mstechdays

• node.js est un framework opensource événementiel permettant de développer des applications réseau en JavaScript – Tous les requêtes sont asynchrones et s’exécutent sur un seul thread– Utilise le moteur JavaScript V8 de Google et un wrapper C++ optimisé

pour gérer les I/O

• Construction de services en ligne scalables– Gestion de la concurrence assurée directement par l'OS– Exemples de solution utilisant node.js : Yammer, Yahoo!, WalMart,

LinkedIn, eBay,…

• http://nodejs.org• http://www.nodebeginner.org/

node.js

Page 6: Node.js dans Azure

Architecture/Azure/Cloud#mstechdays

• Environnement extrêmement modulaire

• Exemples de modules :– "fs" : système de fichier – "net" : réseau, TCP– "crypto" : cryptographie– "http" : serveur web– "socket.io" : web sockets et long

polling

Modules node.js

var http = require('http');http.createServer(function (req, res) { res.writeHead(200, { 'Content-Type': 'text/plain' }); res.end('Hello World\n');}).listen(1337, "127.0.0.1");console.log('Server running at http://127.0.0.1:1337/');

Page 7: Node.js dans Azure

Architecture/Azure/Cloud#mstechdays

• L’outil npm est inclus dans le livrable node.js

• Catalogue de modules : – http://npmjs.org – 58 468 packages

(2/09/2014)…

node.js package managerconnect Standard middleware

Sinatra like web framework: routing + templates

Real time communication over WebSockets/polling

Full-stack MVC (wants to be like Rails)

NoSQL data storage

In-memory cache

jsdomParse/generate HTML on the server

Page 8: Node.js dans Azure

Architecture/Azure/Cloud#mstechdays

NODE.JS ET WINDOWS AZURE

Page 9: Node.js dans Azure

Architecture/Azure/Cloud#mstechdays

node.js et Windows Azure

Page 10: Node.js dans Azure

Architecture/Azure/Cloud#mstechdays

node.js et IaaS Azure

Page 11: Node.js dans Azure

Architecture/Azure/Cloud#mstechdays

Configuration d’une VM Azure Linuxsudo apt-get -y updatesudo apt-get install -y g++ libssl-dev apache2-utils curl git-coregit clone git://github.com/joyent/node.gitcd nodegit checkout v0.8.18./configuremakesudo make installnode -v

http://www.redbitdev.com/monitoring-social-media-with-social-cloud

Page 12: Node.js dans Azure

Architecture/Azure/Cloud#mstechdays

MSI node.js Microsoft Web PI

Configuration d’une VM Azure Windows

Page 13: Node.js dans Azure

Architecture/Azure/Cloud#mstechdays

• Gestion des processus• Scalabilité sur des serveurs multi-

cœurs• Auto-update• Access aux logs via HTTP• Intégration avec d’autres types de

contenu• Très peu d’impact sur le code

node.js• Supervision dans IIS• https://github.com/WindowsAzure/ii

snode• benefits of iisnode

Module IISNode : node.js hébergé dans IIS

Page 14: Node.js dans Azure

Architecture/Azure/Cloud#mstechdays

Optimisation de node.js + IIS sur des serveurs multi-coeurs déployés dans Azure

if "%EMULATED%"=="true" exit /b 0 REM Count the total number of available processors on this systempowershell -c "exit [System.Environment]::ProcessorCount" REM set the default number of processes for our app pools in IIS equal to the number of available processors%windir%\system32\inetsrv\appcmd set config -section:applicationPools -applicationPoolDefaults.processModel.maxProcesses:%ErrorLevel%

Page 15: Node.js dans Azure

Architecture/Azure/Cloud#mstechdays

node.js et PaaS Azure

Page 16: Node.js dans Azure

Architecture/Azure/Cloud#mstechdays

• Un web role node.js utilise le module IISNode en le chargeant comme un module additionnel ASP.NET dans IIS.

• Le package de déploiement crée une startup task pour installer IISNode dans la ou les instances du web role

• Un worker role hébergeant une application node.js est implémenté avec la fonction ProgramEntryPoint exposée dans le fichier ServiceDefinition.csdef qui permet de spécifier un programme comme étant le point d’entrée du worker role : node.exe .\server.js

Web Role ou Worker Role node.js

Web Role Worker Role

Page 17: Node.js dans Azure

Architecture/Azure/Cloud#mstechdays

Optimisation de node.js + IIS sur des serveurs multi-coeurs déployés dans Azure PaaS

<Startup> <!-- Included by default; installs everything you need to run Node on Azure --> <Task commandLine="setup_web.cmd" executionContext="elevated"> <Environment> <Variable name="EMULATED"> <RoleInstanceValue xpath="/RoleEnvironment/Deployment/@emulated" /> </Variable> </Environment> </Task> <Task commandLine="setMaxProcessesToAvailableProcessors.cmd" executionContext="elevated"> <Environment> <Variable name="EMULATED"> <RoleInstanceValue xpath="/RoleEnvironment/Deployment/@emulated" /> </Variable> </Environment> </Task></Startup>

Page 18: Node.js dans Azure

Architecture/Azure/Cloud#mstechdays

• L’installation du Windows Azure SDK for node.js inclut une version ancienne de node.js (v0.6.20) que l’on peut modifier à condition qu’elle soit supportée :– Set-AzureServiceProjectRole "HelloWebRole" node 0.10.21

• Les versions de node.js accessibles via cette commande se limitent à celles disponibles dans la liste résultant de l’appel par la commande – Get-AzureServiceProjectRoleRuntime

Montée de version node.js dans Azure

Runtime    : NodeVersion    : 0.10.21PackageUri : http://az413943.vo.msecnd.net/node/0.10.21.exeIsDefault  : False 

http://blogs.msdn.com/b/stephgou/archive/2014/01/10/gestion-des-montees-de-version-nodejs-dans-windows-azure.aspx

Page 19: Node.js dans Azure

démo

Architecture/Azure/Cloud#mstechdays

PROVISIONNING PAAS D’APPLICATION NODE.JS

Page 20: Node.js dans Azure

Architecture/Azure/Cloud#mstechdays

node.js et Azure Web Sites

Page 21: Node.js dans Azure

Architecture/Azure/Cloud#mstechdays

• Simplicité de mise en œuvre• Les applications node.js hébergées dans Windows

Azure Web Sites s’exécutent dans un iisnode• Azure Web Site propose nativement un

mécanisme de sélection de version de node.js

node.js hébergé dans Windows Azure Web Sites

Page 22: Node.js dans Azure

démo

Architecture/Azure/Cloud#mstechdays

DÉVELOPPEMENT D’UNE APPLICATION NODE.JS ET PUBLICATION SUR UN AZURE WEB SITE

Page 23: Node.js dans Azure

Architecture/Azure/Cloud#mstechdays

node.js et Azure Mobile Services

Page 24: Node.js dans Azure

Architecture/Azure/Cloud#mstechdays

data pushauth

• « Back-end as a Service » pour vos apps mobiles

• Étendre les apps web internes à des périphériques mobiles

• Construire et déployer rapidement des applications grand public

• Un unique back-end pour toutes vos apps

• Sur tous les périphériques

Windows Azure Mobile Services

Page 25: Node.js dans Azure

Architecture/Azure/Cloud#mstechdays

• Création et exposition de Custom APIs – Implémentées avec

node.js

• Support des packages NPM:– Installation dans le

référentiel Git local – Synchronisation des

services mobiles

Support de custom API node.js

Page 26: Node.js dans Azure

démo

Architecture/Azure/Cloud#mstechdays

NODE.JS ET AZURE MOBILE SERVICES

Page 27: Node.js dans Azure

Architecture/Azure/Cloud#mstechdays

CONCLUSION

Page 28: Node.js dans Azure

Architecture/Azure/Cloud#mstechdays

Hébergement d’une application node.js dans Windows Azure : les critères de choix

Windows Azure Virtual

Machines (IaaS)

Windows Azure Cloud

Services (PaaS)

Windows Azure

Web Sites (PaaS)

Windows Azure Mobile

Services

+ : Choix de l’OS (Windows, Linux), contrôle de la VM- : Gestion de la VM (mise à jour, pré-provisionning…)

+ : Gestion simplifiée- : Réinstallation de node.js à chaque redémarrage de VM

+ : Simplicité d’utilisation- : Difficile d’aller au delà du modèle proposé

Utilisation de Services pour les applications 

mobiles

Page 29: Node.js dans Azure

Architecture/Azure/Cloud#mstechdays

• Extension Visual Studio– https://nodejstools.code

plex.com

• Visual Studio Online• Web Matrix• CmdLets PowerShell

– https://github.com/WindowsAzure/azure-sdk-tools

node.js : Outils et technologies Microsoft

Page 30: Node.js dans Azure

Architecture/Azure/Cloud#mstechdays

• Nodejs Developper Center– http://www.windowsazure.com

/en-us/develop/nodejs

• Libraries for Azure services– https://github.com/WindowsAz

ure/azure-sdk-for-node

• Windows Azure Client Library for node– https://

npmjs.org/package/azure

node.js : Outils et technologies Microsoft

Page 31: Node.js dans Azure

© 2014 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

Digital is business