SlideShare uma empresa Scribd logo
1 de 7
Windows Azure Architecture d’une application Facebook Thomas Conté, tconte@microsoft.com twitter.com/tomconte Architecte Windows Azure
Les frameworks Facebook Le Facebook C# SDK sur CodePlex est régulièrement mis à jour Le Windows Azure Toolkit for Social Games est spécifiquement dédié aux développeur de jeux sociaux, très populaires bien sûr sur Facebook Le concours “Pitch Your Social App” a permis à 5 startup françaises de pitcher leurs Social Apps lors du « Facebook Start Up Day »
Le cas d’usage Une application Facebook est généralement constituée de deux grandes parties: une interface Web intégrée au sein d’une Fan Page une partie applicative fournissant effectivement un service ou un traitement. L’application va identifier l’utilisateur, puis effectuer un traitement long à l’aide de l’Open Graph (i.e. récupérer une liste des Likes ou autres informations, et produire quelque chose d’intéressant comme une animation, une visualisation, etc.) Typiquement le principe d’applications comme Museum of Me, par exemple.
L’architecture L’on va séparer le rôle “Web” et le rôle “applicatif” (appelé “Worker” dans Windows Azure). Cela permettra de les faire évoluer indépendamment par ajout d’instances lors de la montée en charge. L’on va orchestrer les traitements de façon asynchrone à l’aide d’une file d’attente (les Queues, fournies par Windows Azure). Le navigateur va lui aussi adopter ce même modèle asynchrone: il ne va pas attendre du serveur Web une réponse immédiate, il va aller chercher son résultat (typiquement par polling) dans un stockage lui aussi fourni par Windows Azure. L’on pourrait bien entendu utiliser des Tables pour ce dernier point, mais étant donné que la partie asynchrone côté navigateur sera implémentée en JavaScript, il paraît encore plus naturel d’utiliser le Blob Storage, dans lequel la réponse prendra la forme d’un bloc JSON directement utilisable.
② Web Role Web Role queue ① WorkerRole WorkerRole ④ ⑤ ⑥ ③ Blob Storage
Polling & Blob Storage Une remarque qui revient souvent est que les “transactions”, autrement dit les accès au Blob Storage sont payants, et qu’il conviendrait donc d’éviter une stratégie à base de polling qui risque de coûter cher… Exemple sur un traitement de 3 minutes: intervalle de polling de 1 seconde Donc 180 accès au Blob Storage. En mode “pay-as-you-go”, les transactions de Storage sont facturées 0,01 dollars pour 10.000 transactions. Nos 180 accès vont donc nous coûter 0.00018 dollars, ce qui ne paraît pas onéreux. Si l’on multiplie par 1 million d’utilisateurs par jour, le coût total arrive à 180 dollars par jour. L’expérience montre que ce coût est et restera proportionnellement très inférieur aux autres coûts liés au succès de l’application, typiquement la bande passante.
Merci!

Mais conteúdo relacionado

Semelhante a Architecture d'une application Facebook pour Windows Azure

Core Web Vitals : Comprendre, Mesurer, Optimiser
Core Web Vitals : Comprendre, Mesurer, OptimiserCore Web Vitals : Comprendre, Mesurer, Optimiser
Core Web Vitals : Comprendre, Mesurer, OptimiseriProspect France
 
Le Cloud computing (2011)
Le Cloud computing (2011)Le Cloud computing (2011)
Le Cloud computing (2011)E2m Gig
 
[Tuto] Web burst : Débordement Web vers Windows Azure
[Tuto] Web burst : Débordement Web vers Windows Azure[Tuto] Web burst : Débordement Web vers Windows Azure
[Tuto] Web burst : Débordement Web vers Windows AzureMicrosoft Technet France
 
Présentation GWT et HTML 5 pour l'Offline
Présentation GWT et HTML 5 pour l'OfflinePrésentation GWT et HTML 5 pour l'Offline
Présentation GWT et HTML 5 pour l'OfflineDNG Consulting
 
Livre blanc a la decouverte de windows azure
Livre blanc a la decouverte de windows azureLivre blanc a la decouverte de windows azure
Livre blanc a la decouverte de windows azureMicrosoft Technet France
 
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
 
Rapport de mon First Projet Web à l'Ecole Supérieure de Technologie de SAFI -...
Rapport de mon First Projet Web à l'Ecole Supérieure de Technologie de SAFI -...Rapport de mon First Projet Web à l'Ecole Supérieure de Technologie de SAFI -...
Rapport de mon First Projet Web à l'Ecole Supérieure de Technologie de SAFI -...Mohammed JAITI
 
ASP.NET MVC, Web API & KnockoutJS
ASP.NET MVC, Web API & KnockoutJSASP.NET MVC, Web API & KnockoutJS
ASP.NET MVC, Web API & KnockoutJSRenaud Dumont
 
Connected Developper Ep6 (25-05-2013)
Connected Developper Ep6 (25-05-2013)Connected Developper Ep6 (25-05-2013)
Connected Developper Ep6 (25-05-2013)Badr Hakkari
 
Conférence Titanium + Alloy au JUG Montpellier
Conférence Titanium + Alloy au JUG MontpellierConférence Titanium + Alloy au JUG Montpellier
Conférence Titanium + Alloy au JUG MontpellierDamien Laureaux
 
Windows phone 7 sync application sur Azure, création d'application offline re...
Windows phone 7 sync application sur Azure, création d'application offline re...Windows phone 7 sync application sur Azure, création d'application offline re...
Windows phone 7 sync application sur Azure, création d'application offline re...Microsoft Décideurs IT
 
Mieux comprendre les nouveautés de SharePoint 2013
Mieux comprendre les nouveautés de SharePoint 2013Mieux comprendre les nouveautés de SharePoint 2013
Mieux comprendre les nouveautés de SharePoint 2013GSoft
 
Mieux comprendre SharePoint 2013
Mieux comprendre SharePoint 2013Mieux comprendre SharePoint 2013
Mieux comprendre SharePoint 2013Benjamin Niaulin
 
Entity_framework_db first
Entity_framework_db firstEntity_framework_db first
Entity_framework_db firstZineb ELGARRAI
 
Connected Developer Ep3 (04-05-2013)
Connected Developer Ep3 (04-05-2013)Connected Developer Ep3 (04-05-2013)
Connected Developer Ep3 (04-05-2013)Badr Hakkari
 
Livre blanc Windows Azure et les éditeurs de logiciel
Livre blanc Windows Azure et les éditeurs de logicielLivre blanc Windows Azure et les éditeurs de logiciel
Livre blanc Windows Azure et les éditeurs de logicielMicrosoft
 
Livre blanc Windows Azure et les éditeurs de logiciel
Livre blanc Windows Azure et les éditeurs de logicielLivre blanc Windows Azure et les éditeurs de logiciel
Livre blanc Windows Azure et les éditeurs de logicielMicrosoft Décideurs IT
 
Py osv newsletter-062018
Py osv newsletter-062018Py osv newsletter-062018
Py osv newsletter-062018FabMob
 
Introduction aux Technologies Web élaborée par Marouan OMEZZINE
Introduction aux Technologies Web élaborée par Marouan OMEZZINEIntroduction aux Technologies Web élaborée par Marouan OMEZZINE
Introduction aux Technologies Web élaborée par Marouan OMEZZINEMarouan OMEZZINE
 

Semelhante a Architecture d'une application Facebook pour Windows Azure (20)

Core Web Vitals : Comprendre, Mesurer, Optimiser
Core Web Vitals : Comprendre, Mesurer, OptimiserCore Web Vitals : Comprendre, Mesurer, Optimiser
Core Web Vitals : Comprendre, Mesurer, Optimiser
 
[Tuto] Big datatrack : Web Tracker
[Tuto] Big datatrack : Web Tracker[Tuto] Big datatrack : Web Tracker
[Tuto] Big datatrack : Web Tracker
 
Le Cloud computing (2011)
Le Cloud computing (2011)Le Cloud computing (2011)
Le Cloud computing (2011)
 
[Tuto] Web burst : Débordement Web vers Windows Azure
[Tuto] Web burst : Débordement Web vers Windows Azure[Tuto] Web burst : Débordement Web vers Windows Azure
[Tuto] Web burst : Débordement Web vers Windows Azure
 
Présentation GWT et HTML 5 pour l'Offline
Présentation GWT et HTML 5 pour l'OfflinePrésentation GWT et HTML 5 pour l'Offline
Présentation GWT et HTML 5 pour l'Offline
 
Livre blanc a la decouverte de windows azure
Livre blanc a la decouverte de windows azureLivre blanc a la decouverte de windows azure
Livre blanc a la decouverte de windows azure
 
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
 
Rapport de mon First Projet Web à l'Ecole Supérieure de Technologie de SAFI -...
Rapport de mon First Projet Web à l'Ecole Supérieure de Technologie de SAFI -...Rapport de mon First Projet Web à l'Ecole Supérieure de Technologie de SAFI -...
Rapport de mon First Projet Web à l'Ecole Supérieure de Technologie de SAFI -...
 
ASP.NET MVC, Web API & KnockoutJS
ASP.NET MVC, Web API & KnockoutJSASP.NET MVC, Web API & KnockoutJS
ASP.NET MVC, Web API & KnockoutJS
 
Connected Developper Ep6 (25-05-2013)
Connected Developper Ep6 (25-05-2013)Connected Developper Ep6 (25-05-2013)
Connected Developper Ep6 (25-05-2013)
 
Conférence Titanium + Alloy au JUG Montpellier
Conférence Titanium + Alloy au JUG MontpellierConférence Titanium + Alloy au JUG Montpellier
Conférence Titanium + Alloy au JUG Montpellier
 
Windows phone 7 sync application sur Azure, création d'application offline re...
Windows phone 7 sync application sur Azure, création d'application offline re...Windows phone 7 sync application sur Azure, création d'application offline re...
Windows phone 7 sync application sur Azure, création d'application offline re...
 
Mieux comprendre les nouveautés de SharePoint 2013
Mieux comprendre les nouveautés de SharePoint 2013Mieux comprendre les nouveautés de SharePoint 2013
Mieux comprendre les nouveautés de SharePoint 2013
 
Mieux comprendre SharePoint 2013
Mieux comprendre SharePoint 2013Mieux comprendre SharePoint 2013
Mieux comprendre SharePoint 2013
 
Entity_framework_db first
Entity_framework_db firstEntity_framework_db first
Entity_framework_db first
 
Connected Developer Ep3 (04-05-2013)
Connected Developer Ep3 (04-05-2013)Connected Developer Ep3 (04-05-2013)
Connected Developer Ep3 (04-05-2013)
 
Livre blanc Windows Azure et les éditeurs de logiciel
Livre blanc Windows Azure et les éditeurs de logicielLivre blanc Windows Azure et les éditeurs de logiciel
Livre blanc Windows Azure et les éditeurs de logiciel
 
Livre blanc Windows Azure et les éditeurs de logiciel
Livre blanc Windows Azure et les éditeurs de logicielLivre blanc Windows Azure et les éditeurs de logiciel
Livre blanc Windows Azure et les éditeurs de logiciel
 
Py osv newsletter-062018
Py osv newsletter-062018Py osv newsletter-062018
Py osv newsletter-062018
 
Introduction aux Technologies Web élaborée par Marouan OMEZZINE
Introduction aux Technologies Web élaborée par Marouan OMEZZINEIntroduction aux Technologies Web élaborée par Marouan OMEZZINE
Introduction aux Technologies Web élaborée par Marouan OMEZZINE
 

Mais de Thomas Conté

Node.JS Paris Meetup - the Tessel microcontroller, Azure and Project Oxford
Node.JS Paris Meetup - the Tessel microcontroller, Azure and Project OxfordNode.JS Paris Meetup - the Tessel microcontroller, Azure and Project Oxford
Node.JS Paris Meetup - the Tessel microcontroller, Azure and Project OxfordThomas Conté
 
Tessel + Azure IoT hackathon intro
Tessel + Azure IoT hackathon introTessel + Azure IoT hackathon intro
Tessel + Azure IoT hackathon introThomas Conté
 
DevSum'15 : Microsoft Azure and Things
DevSum'15 : Microsoft Azure and ThingsDevSum'15 : Microsoft Azure and Things
DevSum'15 : Microsoft Azure and ThingsThomas Conté
 
Azure Web Camp : Cache Distribué
Azure Web Camp : Cache DistribuéAzure Web Camp : Cache Distribué
Azure Web Camp : Cache DistribuéThomas Conté
 
Azure Web Camp : Moteur de Recherche
Azure Web Camp : Moteur de RechercheAzure Web Camp : Moteur de Recherche
Azure Web Camp : Moteur de RechercheThomas Conté
 
Azure Web Camp : NoSQL
Azure Web Camp : NoSQLAzure Web Camp : NoSQL
Azure Web Camp : NoSQLThomas Conté
 
Running Java workloads in Microsoft Azure
Running Java workloads in Microsoft AzureRunning Java workloads in Microsoft Azure
Running Java workloads in Microsoft AzureThomas Conté
 
TechDays 2014 : tour d'horizon de Java dans Azure
TechDays 2014 : tour d'horizon de Java dans AzureTechDays 2014 : tour d'horizon de Java dans Azure
TechDays 2014 : tour d'horizon de Java dans AzureThomas Conté
 
Presentation: Java in the Cloud with Windows Azure
Presentation: Java in the Cloud with Windows AzurePresentation: Java in the Cloud with Windows Azure
Presentation: Java in the Cloud with Windows AzureThomas Conté
 
Présentation Windows Azure - MS Days 2011
Présentation Windows Azure - MS Days 2011Présentation Windows Azure - MS Days 2011
Présentation Windows Azure - MS Days 2011Thomas Conté
 
ReMix11 Paris: Windows Azure & développement mobile
ReMix11 Paris: Windows Azure & développement mobileReMix11 Paris: Windows Azure & développement mobile
ReMix11 Paris: Windows Azure & développement mobileThomas Conté
 
MS Day EPITA 2010: Visual Studio 2010 et Framework .NET 4.0
MS Day EPITA 2010: Visual Studio 2010 et Framework .NET 4.0MS Day EPITA 2010: Visual Studio 2010 et Framework .NET 4.0
MS Day EPITA 2010: Visual Studio 2010 et Framework .NET 4.0Thomas Conté
 

Mais de Thomas Conté (13)

Node.JS Paris Meetup - the Tessel microcontroller, Azure and Project Oxford
Node.JS Paris Meetup - the Tessel microcontroller, Azure and Project OxfordNode.JS Paris Meetup - the Tessel microcontroller, Azure and Project Oxford
Node.JS Paris Meetup - the Tessel microcontroller, Azure and Project Oxford
 
Tessel + Azure IoT hackathon intro
Tessel + Azure IoT hackathon introTessel + Azure IoT hackathon intro
Tessel + Azure IoT hackathon intro
 
DevSum'15 : Microsoft Azure and Things
DevSum'15 : Microsoft Azure and ThingsDevSum'15 : Microsoft Azure and Things
DevSum'15 : Microsoft Azure and Things
 
Azure Web Camp : Cache Distribué
Azure Web Camp : Cache DistribuéAzure Web Camp : Cache Distribué
Azure Web Camp : Cache Distribué
 
Azure Web Camp : Moteur de Recherche
Azure Web Camp : Moteur de RechercheAzure Web Camp : Moteur de Recherche
Azure Web Camp : Moteur de Recherche
 
Azure Web Camp : NoSQL
Azure Web Camp : NoSQLAzure Web Camp : NoSQL
Azure Web Camp : NoSQL
 
Running Java workloads in Microsoft Azure
Running Java workloads in Microsoft AzureRunning Java workloads in Microsoft Azure
Running Java workloads in Microsoft Azure
 
TechDays 2014 : tour d'horizon de Java dans Azure
TechDays 2014 : tour d'horizon de Java dans AzureTechDays 2014 : tour d'horizon de Java dans Azure
TechDays 2014 : tour d'horizon de Java dans Azure
 
Linux on azure
Linux on azureLinux on azure
Linux on azure
 
Presentation: Java in the Cloud with Windows Azure
Presentation: Java in the Cloud with Windows AzurePresentation: Java in the Cloud with Windows Azure
Presentation: Java in the Cloud with Windows Azure
 
Présentation Windows Azure - MS Days 2011
Présentation Windows Azure - MS Days 2011Présentation Windows Azure - MS Days 2011
Présentation Windows Azure - MS Days 2011
 
ReMix11 Paris: Windows Azure & développement mobile
ReMix11 Paris: Windows Azure & développement mobileReMix11 Paris: Windows Azure & développement mobile
ReMix11 Paris: Windows Azure & développement mobile
 
MS Day EPITA 2010: Visual Studio 2010 et Framework .NET 4.0
MS Day EPITA 2010: Visual Studio 2010 et Framework .NET 4.0MS Day EPITA 2010: Visual Studio 2010 et Framework .NET 4.0
MS Day EPITA 2010: Visual Studio 2010 et Framework .NET 4.0
 

Architecture d'une application Facebook pour Windows Azure

  • 1. Windows Azure Architecture d’une application Facebook Thomas Conté, tconte@microsoft.com twitter.com/tomconte Architecte Windows Azure
  • 2. Les frameworks Facebook Le Facebook C# SDK sur CodePlex est régulièrement mis à jour Le Windows Azure Toolkit for Social Games est spécifiquement dédié aux développeur de jeux sociaux, très populaires bien sûr sur Facebook Le concours “Pitch Your Social App” a permis à 5 startup françaises de pitcher leurs Social Apps lors du « Facebook Start Up Day »
  • 3. Le cas d’usage Une application Facebook est généralement constituée de deux grandes parties: une interface Web intégrée au sein d’une Fan Page une partie applicative fournissant effectivement un service ou un traitement. L’application va identifier l’utilisateur, puis effectuer un traitement long à l’aide de l’Open Graph (i.e. récupérer une liste des Likes ou autres informations, et produire quelque chose d’intéressant comme une animation, une visualisation, etc.) Typiquement le principe d’applications comme Museum of Me, par exemple.
  • 4. L’architecture L’on va séparer le rôle “Web” et le rôle “applicatif” (appelé “Worker” dans Windows Azure). Cela permettra de les faire évoluer indépendamment par ajout d’instances lors de la montée en charge. L’on va orchestrer les traitements de façon asynchrone à l’aide d’une file d’attente (les Queues, fournies par Windows Azure). Le navigateur va lui aussi adopter ce même modèle asynchrone: il ne va pas attendre du serveur Web une réponse immédiate, il va aller chercher son résultat (typiquement par polling) dans un stockage lui aussi fourni par Windows Azure. L’on pourrait bien entendu utiliser des Tables pour ce dernier point, mais étant donné que la partie asynchrone côté navigateur sera implémentée en JavaScript, il paraît encore plus naturel d’utiliser le Blob Storage, dans lequel la réponse prendra la forme d’un bloc JSON directement utilisable.
  • 5. ② Web Role Web Role queue ① WorkerRole WorkerRole ④ ⑤ ⑥ ③ Blob Storage
  • 6. Polling & Blob Storage Une remarque qui revient souvent est que les “transactions”, autrement dit les accès au Blob Storage sont payants, et qu’il conviendrait donc d’éviter une stratégie à base de polling qui risque de coûter cher… Exemple sur un traitement de 3 minutes: intervalle de polling de 1 seconde Donc 180 accès au Blob Storage. En mode “pay-as-you-go”, les transactions de Storage sont facturées 0,01 dollars pour 10.000 transactions. Nos 180 accès vont donc nous coûter 0.00018 dollars, ce qui ne paraît pas onéreux. Si l’on multiplie par 1 million d’utilisateurs par jour, le coût total arrive à 180 dollars par jour. L’expérience montre que ce coût est et restera proportionnellement très inférieur aux autres coûts liés au succès de l’application, typiquement la bande passante.

Notas do Editor

  1. 1 – Le navigateur demande la page.Le Web Rôle va typiquement pouvoir délivrer plusieurs pages de pur contenu, et va utiliser par exemple le Facebook C# SDK pour demander l’autorisation à l’utilisateur d’accéder à ses informations de profil.2 – Le Web Role écrit la requête dans une file d’attente, puis retourne immédiatement une page d’attente au navigateur.Lorsque le navigateur requête l’action ou la page nécessitant un traitement, le Web Rôle se contente d’écrire cette requête (par exemple accompagnée de l’ID de l’utilisateur ainsi que son token permettant d’accéder à la Graph API) dans une file d’attente, fournie par Windows Azure sous la forme de Queue.A partir de ce moment, le Web Role est complètement déchargé de toute responsabilité, et peut donc continuer à servir le reste de l’expérience Facebook (les autres pages, les contenus, etc.)3 – Le navigateur polle le Blob Storage en attente d'un résultat (typiquement un bloc JSON).Le Web Rôle envoie au navigateur une page d’attente avec une jolie animation et un petit bout de JavaScript qui va régulièrement essayer d’aller chercher le résultat du traitement directement dans le Blob Storage, à l’aide du clef commune (par exemple l’ID de l’utilisateur).4 – C’est maintenant les WorkerRoles qui prennent la main; ils pollent la file d’attente et trouvent une unité de travail à effectuer.Le message doit contenir toutes les informations dont a besoin le WorkerRole (dans notre cas, le tokenOAuth provenant de l’authentification).5 – Un WorkerRole prend possession du message et effectue un traitement long (utilisation de la Graph API, etc.)Dans notre exemple, les Workers accèdent à la Graph API de Facebook au nom de l’utilisateur, récupèrent les données dont ils ont besoin, puis effectuent un traitement, si nécessaire en utilisant du stockage comme les Tables ou SQL Azure.6 – Une fois le traitement terminé, le WorkerRole écrit un résultat final sous la forme d’un fichier JSON directement dans le Blob Storage.Cet objet JavaScript peut soit contenir l’ensemble des informations nécessaires à l’affichage, soit un pointeur vers d’autres ressources (images, etc.)7 – Le navigateur récupère le traitement et peut afficher le résultat final.Pendant ce temps, notre brave navigateur a continué d’accéder au Blob Storage en attendant sa réponse; dès qu’il a récupéré le Blob JSON, il peut lancer l’affichage.