Upload
microsoft-developpeurs
View
633
Download
0
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
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 !
Architecture/Azure/Cloud#mstechdays
NODE.JS : INTRODUCTION
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
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/');
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
Architecture/Azure/Cloud#mstechdays
NODE.JS ET WINDOWS AZURE
Architecture/Azure/Cloud#mstechdays
node.js et Windows Azure
Architecture/Azure/Cloud#mstechdays
node.js et IaaS 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
Architecture/Azure/Cloud#mstechdays
MSI node.js Microsoft Web PI
Configuration d’une VM Azure Windows
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
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%
Architecture/Azure/Cloud#mstechdays
node.js et PaaS 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
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>
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
démo
Architecture/Azure/Cloud#mstechdays
PROVISIONNING PAAS D’APPLICATION NODE.JS
Architecture/Azure/Cloud#mstechdays
node.js et Azure Web Sites
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
démo
Architecture/Azure/Cloud#mstechdays
DÉVELOPPEMENT D’UNE APPLICATION NODE.JS ET PUBLICATION SUR UN AZURE WEB SITE
Architecture/Azure/Cloud#mstechdays
node.js et Azure Mobile Services
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
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
démo
Architecture/Azure/Cloud#mstechdays
NODE.JS ET AZURE MOBILE SERVICES
Architecture/Azure/Cloud#mstechdays
CONCLUSION
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
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
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
© 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