Tuesday, January 05, 2010 |
|
|
But Azure CDN (Content Delivery Network) est un mécanisme permettant d’améliorer les performances des sites web en rapprochant de l’utilisateur les contenus statiques d’un site web. Ainsi, au lieu de servir les images d’un catalogue produit directement depuis le site web d’origine, ils sont servis par un serveur plus proche de l’utilisateur. De cette façon, un utilisateur américain d’un site web hébergé en France aura une connectivité locale pour les contenus statiques (ils seront servis depuis une ville proche de chez lui) au lieu de traverser l’Atlantique à chaque requête. Principe de fonctionnement Ce rapprochement repose sur un réseau de serveurs de contenus répartis sur des points stratégiques. Le CDN Azure se compose de 18 centres serveurs, dont un à Paris, qui jouent le rôle d’intermédiaire entre le site web réel et l’utilisateur. Pour tirer parti de ce CDN, il suffit de remplacer dans les pages web l’URL des contenus statiques (images, pdf, vidéos, scripts, etc.) par une URL qui sera traitée par le CDN. Lorsque la requête arrive sur le CDN, celui-ci repère le serveur le plus proche de l’utilisateur et le contenu est envoyé au poste final depuis ce serveur. Ce serveur a naturellement des capacités de cache, il va donc récupérer le contenu depuis le véritable site Web la première fois puis fournir sa copie locale pour les requêtes successives. L’intérêt par rapport à l’infrastructure classique d’un hébergeur ou d’un FAI est double : D’une part, le CDN Azure est déjà déployé sur le globe et garantit de bonnes performances d’où que vienne l’utilisateur. D’autre part, l’efficacité est supérieure à celle du cache des fournisseurs d’accès, puisque la mise en cache est parfaitement mutualisée. Comment utiliser le CDN Azure Le CDN est une fonctionnalité associée à Azure Storage. Il permet donc de relayer les contenus statiques stockés dans Windows Azure. Il s’active directement depuis la page de gestion Azure :
Une fois l’option activée, il devient possible d’utiliser le CDN Azure. Il faut tout d’abord utiliser le stockage Azure pour déposer les contenus statiques à mettre à disposition (CloudBerry Explorer for Azure Blob Storage, http://cloudberrylab.com/?page=explorer-azure, est un outil tierce partie permettant de synchroniser simplement un ensemble de fichiers). Une fois les fichiers uploadés sur Azure Storage, il existe deux façons de les référencer depuis un site web : 1/ Référencement direct : on utilise l’URL en windows.net (on peut également mapper ses propres entrées DNS), et les fichiers seront toujours servis depuis le data center où ils résident (les règles habituelles de cache et d’Etag restant applicables) 2/référencement via le CDN : on utilise l’URL en msecnd.net (on peut également mapper ses propres entrées DNS), et les fichiers seront toujours servis par le CDN. Pour aller plus loin Brad Calder a un très bon document (en anglais) sur l’utilisation du CDN : http://social.msdn.microsoft.com/Forums/en-US/windowsazure/thread/d804c832-d06e-4171-99dc-8c7020b7ec15 La fonctionnalité est toujours en CTP pour le moment, mais nous devrions en savoir plus (notamment sur le mode de commercialisation) dans les semaines qui viennent. |
Tuesday, January 05, 2010 6:02:52 PM (GMT Standard Time, UTC+00:00) | |
|
|
|
|
Saturday, November 28, 2009 |
|
|
Bon, j’ai craqué. Après avoir testé pendant quelques jours un OCZ Vertex, j’ai craqué pour un Intel X25-M. Craqué est d’ailleurs le mot juste, j’étais tellement exaspéré par la lenteur de la machine depuis que j’avais remis un disque mécanique que je n’ai pas résisté. Quelques outils pour ne pas vous taper la réinstall complète de votre OS et des outils associés : 0/ Pour préparer le transfert du disque vers le suivant : lancez le nettoyage de disque, dégagez l’éventuel fichier d’hibernation , réduisez votre fichier de swap au minimum, bref faites de la place, d’autant qu’il faut un budget de ministre ou une machine d’avant-guerre pour trouver un SSD plus grand que votre disque actuel. 1/ Défragmentez et compactez J’ai utilisé Defraggler (http://www.defraggler.com). Je ne sais pas s’il est bon ou mauvais, mais il a eu le bon goût de compacter mon disque existant alors que le defrag fourni avec Windows se contentait de … défragmenter. 2/ réduisez la partition Là c’est intégré au gestionnaire de disques dans Windows 7 donc rien à signaler. N’hésitez pas à réduire pour avoir une taille nettement inférieure à la capacité du SSD (je me suis pris une marge de 10 Go) : vous éviterez les galères entre capacités exprimés en puissances de 2 et en puissances de 10. 3/ transférez ! Plein d’options, j’ai utilisé CloneZilla (http://www.clonezilla.org/) qui existe en LiveCD. 4/ Echangez le disque, bootez, et écoutez. L’autre avantage des SSD c’est qu’on ne les entend pas :) Oh, avant de relancer Visual Studio, pensez à reconfigurer votre fichier de swap… |
Saturday, November 28, 2009 5:41:21 PM (GMT Standard Time, UTC+00:00) | |
|
|
|
|
Monday, October 12, 2009 |
|
|
Les Microsoft Days ont commencé la semaine dernière, et je voulais faire un point sur l’application de vote que nous avons montrée et qui fera le tour de France à partir de mercredi. Je ferai dans les jours qui viennent un topo sur la réalisation avec le pourquoi des différents choix, et les petits pièges qu’on peut rencontrer pour un premier projet Cloud. A quoi sert CloudVote ? C’est une application permettant de voter en temps réel sans connexion internet, dont le premier proto remonte à la mobility conference de juin dernier. Le principe est assez simple : le speaker définit une question et deux réponses possibles. La question est alors projetée sur écran, accompagnée des réponses et de deux Tags. L’audience peut alors voter avec son téléphone : il suffit de pointer le téléphone vers un tag pour voter. Principe de fonctionnement de CloudVote Comme indiqué dans ce schéma, CloudVote repose sur trois services Cloud : - Windows Azure sert à héberger le frontal de présentation des votes, ainsi que l’interface d’administration
-
Microsoft Tag : cette application dispose d’une API qui sert à créer les tags que l’utilisateur pourra viser avec son téléphone -
Azure Storage : c’est là que sont stockées toutes les données de l’application (les tags, pour ne pas avoir à les regénérer en permanence depuis Microsoft tag, et bien sûr les votes) Il faut ajouter pour l’administrateur un quatrième service : plutôt que de re-développer une nième gestion d’utilisateurs, je me suis appuyé sur Live Id. Comment tester CloudVote ? Rien de très compliqué, voici le déroulé : 1/ Créez la page de vote que vous désirez montrer à votre audience Connectez-vous sur http://pico.cloudapp.net pour accéder à CloudVote. Attention, l’appli a encore un petit bug et vous devrez peut-être vous délogger de Live pour que tout fonctionne. Si c’est votre première connexion, vous allez devoir créer vos deux tags. ça peut durer 20 secondes, Microsoft Tag et Azure devant s’échanger les petits octets qui composent les tags. Une fois les deux tags créés (et pas avant) vous pouvez définir le titre et les textes de vote. le lien Go To the Vote page vous amène sur la page que vous montrerez à l’audience (vous pouvez aussi envoyer ce lien par mail, imprimer la page, enfin ce que vous voulez puisque l’utilisation se fait depuis l’'appareil photo des téléphones). Nota : l’interface est en anglais parce que je l’ai aussi écrite pour des besoins internes Microsoft, mais l’audience ne verra que la page de votes, dont vous maitrisez entièrement le contenu. 2/ Affichez la page de vote et demandez aux utilisateurs de voter Pour voter il faut avoir installé Microsoft Tag sur son téléphone (ça marche aussi sur les iPhones). L’installation se fait directement depuis le navigateur du téléphone : http://gettag.mobi (ai-je dit qu’il fallait un plan data ?). Lorsque l’utilisateur pointe son téléphone vers l’un des tags le compteur s”incrémente en temps réel et l’utilisateur reçoit une confirmation sur son téléphone. Et si je veux l’installer sur mon espace Azure ? Je publierai les sources dans les prochains posts, vous aurez besoin d’un compte azure (attention, le lien est difficile à trouver, alors le voilà : http://go.microsoft.com/fwlink/?LinkID=130226). Il faut aussi un compte Microsoft Tag et faire la demande d’accès aux APIs développeurs – c’est sur www.microsoft.com/tag) |
Monday, October 12, 2009 3:41:40 PM (GMT Standard Time, UTC+00:00) | |
|
|
|
|
Monday, September 14, 2009 |
|
|
Je viens de passer un temps certain autour d’Azure Storage, et à la fin de mon appli tout a commencé à me lâcher. C’est courant, et les fanatiques du test unitaire vont se rouler par terre, mais bon… Jusqu’à jeudi dernier je développais mon appli de vote comme un bourrin, et j’ai commencé jeudi à assembler les morceaux qui marchaient. En gros, j”ai écrit deux helpers : un qui me met en relation ave les APIs de Microsoft Tag, et un second qui me donne une couche pour Azure Blob Storage. La dernière étape consistait à prendre les tags générés par Microsoft tag et à les stocker dans Azure Blob Storage. Rien de méchant puisque les deux helpers fonctionnaient. Bref, je me retrouve à écrire quelque chose de ce style : CloudVoteData.WSTagHandler ws = new CloudVoteData.WSTagHandler();
// 1 - Création du tag
ws.CreateTag(yesTag, webRoot + "/Y.aspx?ID=" + tagName);
// 2 - Sauvegarde du tag dans le cloud
var sh = new CloudVoteData.StorageTagHandler();
sh.CreateTag(ws.GetTagImageData(yesTag), yesTag);
(Au passage, une minute de pub : http://gallery.live.com/liveItemDetail.aspx?li=d8835a5e-28da-4242-82eb-e1a006b083b9&bt=9&pl=8 c’est le plug-in pour Live Writer qui chope ce que vous avez copié dans Visual Studio et qui le colle en respectant la mise en forme dudit Visual Studio).
Bref, rien que de très simple, je transfère une image de l’un dans l’autre. Seulement voilà, j’ai eu ce délicieux message d’erreur :
Je cite, pour que d’autres malheureux puissent bénir Goo^H^H^HBing : “Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature.”
Alors j’ai cherché. J’ai trimballé les infos de connexion à Azure dans le code source, dans un fichier de config, vérifié que j’avais pas d’écrasement de variables, tout codé en dur, simplifié mon code, changé StorageClient pour une version plus récente, tracé en pas à pas dans RestBlobStorage.cs, réinstallé ma machine (l’équivalent geek d’aller chez le coiffeur quand on est énervé, coucou chérie), jusqu’à ce que je me souvienne que les conteneurs dans Azure Blob Storage ne peuvent pas comporter de majuscule. Alors, me suis-je dit, comme il y a une phase de canonisation de la requête pour calculer sa signature, peut-être que mes en-têtes contiennent des majuscules quand elles sont envoyées au serveur mais que la signature est en minuscules ? Voilà le bout de code que je soupçonnais : public bool CreateTag(byte[] content, string tagId, string caption, string title)
{
StorageAccountInfo uc = new StorageAccountInfo(new Uri(endpoint), false, accountName, key);
BlobStorage blobStorage = BlobStorage.Create(uc);
BlobContainer container = blobStorage.GetBlobContainer("votes");
container.CreateContainer(null, ContainerAccessControl.Public);
BlobProperties properties = new BlobProperties(tagId);
NameValueCollection metadata = new NameValueCollection();
metadata["Id"] = tagId;
metadata["caption"] = caption;
metadata["title"] = title;
metadata["Votes"] = "0";
properties.Metadata = metadata;
properties.ContentType = "image/png";
BlobContents imageBlob = new BlobContents(content);
return container.CreateBlob(properties, imageBlob, true);
}
public bool CreateTag(byte[] content, string tagId)
{
return CreateTag(content, tagId, "", "");
}
J’ai donc consciencieusement (oui, c’est pénible à écrire autant qu’à faire) retravaillé les lignes qui parlent de métadonnées pour tout repasser en minuscules, pas de succès. Alors j’ai supprimé toutes ces belles lignes (un bon truc de désespéré : supprimer du code jusqu’à ce que ça compile), et là – miracle – tout s’est mis à remarcher. Ah-ah. J’ai repris mon code de test du tout début et regardé : je passais des métadonnées sans problème pendant la création du blob.
En fait, le vice est caché dans la dernière ligne de mon code : mon code de test appelle la version courte de CreateTag, qui passe la main à la version longue en mettant des valeurs par défaut. Sauf que, je passe des chaînes vides pour mes métadonnées, et ça gaufre gentiment la requête de création du blob. Je ne sais pas encore pourquoi, je soupçonne deux endroits : côté client les en-têtes sont ré-ordonnées avant d’être transmises au serveur, c’est un bon coin pour louper une chaîne vide. L’autre suspect c’est Azure Blob Storage, mais pour le moment je vais déjà finir mon sample et je creuserai plus tard.
(for our english friends out there : don’t pass empty metadata when you create a blob). |
Monday, September 14, 2009 4:44:11 PM (GMT Standard Time, UTC+00:00) | |
|
|
|
|
Tuesday, September 08, 2009 |
|
|
Pendant que je fais joujou avec Microsoft Tag (les API Web Service sont enfin disponibles) et Azure (plus de nouvelles dès que ma démo commence à tourner), mes petits camarades et moi-même sommes sur le point d’enquiller une demi-douzaine de villes en octobre-novembre, donc si le cœur vous en dit voilà comment nous retrouver : http://msdn.microsoft.com/fr-fr/microsoft-days.aspx Et en parallèle, nous commençons à travailler sur la liste des sujets pour les TechDays 2009. Si vous avez un sujet intéressant – pour parler ou pour écouter – n’hésitez pas à m’envoyer un mail (pierre point couzy at microsoft point com). |
Tuesday, September 08, 2009 12:34:33 PM (GMT Standard Time, UTC+00:00) | |
|
|
|
|
Monday, August 31, 2009 |
|
|
Comme le fichier ne passait pas dans ce blog, voici la liste des retouches que j’ai faites sur le script de création de Northwind pour qu’il passe dans SQL Azure. Il y a encore un peu de magie noire pour moi dans tout ça mais j’ai un peu appris des messages d’erreur. Les points de départ : 1/ Le script instnwnd.sql que j’ai trouvé sur http://www.microsoft.com/downloads/details.aspx?FamilyID=06616212-0356-46A0-8DA2-EEBC53A68034&displaylang=en. 2/ L’instance de base de données dans SQL Azure : cf. post précédent, je détruis et recrée la base en passant par http://sql.azure.com à chaque manipulation. Je suis certain que ce n’est pas malin mais je chercherai plus élégant un autre jour. La liste des manips à faire : - Dégager le script de création de la base. Sql Azure ne sait pas sauter de base en base dans un même script, donc…
- Dégager les scripts qui testent et détruisent les objets avant de les recréer. On pourrait sans difficulté les migrer, mais ils requêtent sur sysobjects (qui est obsolète depuis SQL Server 2005, et ne passe pas sous SQL Azure). Pour les migrer il faut partir en requêtage de sys.objects, mais j’ai eu la flemme de le faire jusqu’au bout, d’autant que je détruis ma base à chaque itération…
- Se débarrasser des types obsolètes.
J’ai fait les remplacements suivants, je ne sais pas s’il y en a d’autres (même si mes moteurs de recherche préférés laissent augurer que non) :
| Dans Sql 2000 | Dans Sql Azure | | image | varbinary(max) | | ntext | nvarchar(max) | | text | varchar(max) | (ps : je n’ai pas croisé text dans Northwind) - Dégager toutes les références à des filegroup. Dans mon cas, les Create Table …. ON [PRIMARY] (si vous êtes encore moins bons que moi en base de données, supprimez bêtement ON [PRIMARY]). Encore une fois, vous n’avez pas la maitrise de la topologie sous-jacente à votre base.
- Retouchez les index : celui-là m’a laissé perplexe un moment, mon script échouait sur l’insertion de données dans la table Region (notamment) avec un message un peu elliptique :
Msg 40054, Level 16, State 1, Line 9 Heaps can not be replicated tables. Please create a clustered index for the table. Je pense que les aficionados savent ce que ça veut dire avec plus de précisions, j’y vois juste un indice important : les mécanismes de réplication de Sql Server sont probablement utilisés par Sql Azure pour sa propre redondance de vos instances. Ceci expliquerait une bonne part des différences entre Sql Server 2008 et Sql Azure. Bref, pour corriger ce pépin il faut d’une part retoucher la définition de la clé primaire en virant la clause NONCLUSTERED (et oui, ça peut avoir quelques conséquences sur l’exécution de vos requêtes) et d’autre part intervertir dans le script Northwind les sections de définition des contraintes et d’insertion des données (le script insère les données puis pose les contraintes, ici on est obligé de définir les clés primaires avant d’insérer les données). Le reste est tombé en marche (vues etprocédures stockées), et les manips se passent bien pour le moment. Prochaines étapes : câbler tout ça sur ADO.Net Data Services pour jouer un peu avec des clients ne disposant pas de drivers pour Sql Server/Sql Azure |
Monday, August 31, 2009 5:00:07 PM (GMT Standard Time, UTC+00:00) | |
|
|
|
|
|
Dans le post précédent j’ai parlé de SSMS (Sql Server Management Studio) pour manipuler votre instance de SQL Azure, mais le support est plutôt limité pour le moment, il manque surtout l’explorateur d’objets qui rend quelques services quand on fait ses mises au point… Jusqu’à 20 minutes auparavant j’avais une approche un peu simpliste mais qui fonctionne : - Travailler sur une base SQL Express locale
- Une fois le résultat voulu obtenu, exporter les scripts de création et de population de la base
- Détruire et recréer la base SQL Azure de travail (je sais, c’est moche)
- Refermer et rouvrir SSMS, refuser la connexion par défaut, créer une nouvelle requête en se positionnant sur la bonne base
- Copier/Coller le script de travail dans la fenêtre de requête (un drag and drop dans SSMS crée nouvelle fenêtre de requête, qui pointe par défaut sur Master, et comme le changement de base n’est pas supporté dans SQL Azure, on se retrouve en train de jouer son script sur Master…)
- Comprendre les messages d’erreurs, retoucher le script, reprendre à l’étape 3
En corrigeant un problème tordu je suis tombé par hasard sur ce petit bijou : http://hanssens.org/post/SQL-Azure-Manager.aspx C’est encore un peu rugueux mais on retrouve un confort de manipulation agréable. |
Monday, August 31, 2009 4:18:19 PM (GMT Standard Time, UTC+00:00) | |
|
|
|
|
Monday, August 24, 2009 |
|
|
J’ai récupéré la semaine dernière un token de test pour SQL Azure (lien d’inscription à la CTP de SQL Azure), et comme j’étais en train de regarder le driver SQL Server pour PHP, j’ai fait un petit test pour combiner les deux. - Création de Northwind dans SQL Azure.
J’ai un peu retouché le script de création de Northwind (j’ai repris celui fourni pour SQL 2000 !) pour prendre en compte quelques différences entre SQL Azure et SQL 2000 (disparition de certains types obsolètes genre Image et Text, et moins d’instructions DDL) et créé la base de données directement depuis le portail (http://sql.azure.com). Pour l’exécution du script j’ai pris SQL Server Management Studio. Dans la version actuelle de SQL Azure on ne peut pas se connecter directement avec l’explorateur d’objets, mais en exécutant une nouvelle requête on peut fournir les infos de connexion et exécuter des scripts sans difficulté :
Le script de création retouché : - Installation de PHP et du driver pour SQL Server
J’ai un peu joué avec vingt façons de faire donc je ne vous donnerai pas de recette miracle, mais le Web Platform Installer devrait fonctionner pour l’installation de PHP. J’ai installé une 5.3 et une 5.2.10 (toutes les deux en version non threadsafe, puisque ça se marie bien avec FastCGI). Pour le driver PHP SQL Server vous le trouverez sur CodePlex, les instructions d’installation sont claires. - Utilisation du driver pour attaquer une base SQL Express 2008
Je suis certain que le code est bourré de maladresses, mais c’est un premier essai. A noter que j’ai pris une authentification par login/password, de façon à pouvoir porter le code directement pour SQL Azure (qui ne supporte pas encore d’authentification fédérée) : <h1>Test de connexion sql server</h1>
<?php
// Infos de connexion
$server = "localhost\sqlExpress";
$user = "monuser";
$pass = "monMotDePasse";
$database = "Northwind";
// connexion a la base
$connectionoptions = array(
"Database" => $database,
"UID" => $user,
"PWD" => $pass,
"MultipleActiveResultSets" => "0");
$conn = sqlsrv_connect($server, $connectionoptions)
or die ( print_r( sqlsrv_errors() ));
// Creation et execution de la requete
$tsql = "SELECT * from Employees";
$stmt = sqlsrv_query( $conn, $tsql);
if( $stmt === false )
{
echo "Impossible d'executer la requete.</br>";
die( print_r( sqlsrv_errors()));
}
// Affichage des resultats
while( $row = sqlsrv_fetch_array($stmt))
{
echo "Nom : ".$row["FirstName"].", ";
echo "Prenom : ".$row["LastName"]."<br/>";
}
// Un peu de menage
sqlsrv_free_stmt( $stmt);
sqlsrv_close( $conn);
?>
A noter : j’ai désactivé MultipleActiveResultSet qui ne fouctionne pas sur Sql Azure avec les versions que j’ai, mais je n’ai pas creusé plus les raisons. Le résultat de cette page n’est pas superimpressionnant, mais ça fonctionne pas mal:
- Utilisation du driver pour attaquer SQL Azure
Modulo les petites précautions prises plus haut (retouche du script, passage de login/password, et désactivation de MARS), il n’y a pas de modifications à apporter au script, j’ai juste retouché 3 lignes : <h1>Test de connexion sql azure</h1>
<?php
// Infos de connexion
$server = "monserveur.ctp.database.windows.net"; $user = "monuser@monserveur";
$pass = "monMotDePasse";
$database = "Northwind";
…
Le résultat, sans grande surprise :
Un dernier détail : puisque nous ne sommes plus dans un périmètre sûr, il est malsain de passer un username/password en clair. Modifiez votre chaine de connexion pour demander un chiffrement quand vous travaillez sur SQL Azure : // connexion a la base
$connectionoptions = array(
"Database" => $database,
"UID" => $user,
"PWD" => $pass,
"MultipleActiveResultSets" => "0",
"Encrypt" => "1");
$conn = sqlsrv_connect($server, $connectionoptions)
or die ( print_r( sqlsrv_errors() ));
|
Monday, August 24, 2009 10:49:54 AM (GMT Standard Time, UTC+00:00) | |
|
|
|
|
Thursday, May 14, 2009 |
|
|
Tout le monde a suivi la sortie d’Azure à la PDC en octobre dernier, mais je voudrais faire un peu de relecture des annonces en détaillant les principales briques pour une prise en main rapide des concepts et de l’implémentation. Pour les endormis, voici la slide technico-marketing reprenant les principales composantes d’Azure : Ce premier article va gratter un peu autour du bus de services, pour comprendre son mode de fonctionnement et ses liens avec vos applications. Une définition lapidaire du bus de services (ou ISB, pour Internet Service Bus) L’ISB est une couche sécurisée de connectivité intermédiée, permettant d’exposer des canaux http et tcp sur Internet sans passer par une DMZ. Concrètement, n’importe quelle application (située sur un poste itinérant, sur un téléphone, ou dans une autre entreprise) peut bénéficier d’une connectivité directe avec n’importe quelle autre application (située sur un poste itinérant, un serveur, etc…). Cette connectivité directe peut prendre plusieurs formes : canal TCP uni ou bidirectionnel, requête HTTP (web, web service, REST, etc.), streaming, et multicast. Quel est le principe de fonctionnement de l’ISB ? Comme souvent, les nouvelles techniques viennent des pratiques grand public. En l’occurrence, l’ISB trouve ses racines dans Msn Messenger et BitTorrent. Comme vous le savez probablement, un client BitTorrent a un rôle double : il est client pour récupérer les DVD (pleins de photos de vacances) que d’autres mettent à votre disposition, mais il est aussi serveur pour que ces précieuses photos soient récupérables chez vous en même temps que depuis les sources originales. Oui mais voilà, autant être client tcp est simple, autant être serveur depuis sa connexion ADSL est délicat : les fournisseurs d’accès ne vous allouent plus d’adresse IP publique depuis belle lurette, ils utilisent une technique appelée NAT pour mutualiser les quelques adresses IPv4 mises à leur disposition, et votre machine pleine d’images est de ce fait incontactable depuis le monde extérieur, puisqu’elle n’a pas d’adresse publique !  Ce problème existe aussi en entreprise, où les machines de l’intérieur du réseau possèdent des adresses non routables : consulter votre site de recherche favori depuis l’intérieur de l’entreprise est (souvent) simple, mais consulter votre machine de bureau depuis chez vous est (presque) impossible. Là où l’entreprise règle le problème en installant quelques machines ayant des adtresses publiques (sur une DMZ), comment fait le particulier ? Des services comme Messenger, LogMeIn ou Mesh ont développé une approche simple et efficace : ils proposent une batterie de serveurs publiquement accessibles, qui permettent de contourner le problème du serveur. La connexion entre client et serveur devient intermédiée : le serveur lorsqu’il se lance ouvre un canal bidirectionnel avec un serveur public. Le client ne contacte plus directement le serveur, mais appelle le serveur public. Le serveur public joue le rôle d’intermédiaire entre le client et le serveur, et règle au passage les problèmes de connectivité du serveur. Les services sus-mentionnés font en réalité des choses plus complexes, mais peuvent se permettre un certain nombre de raccourcis puisque les cas d’utilisation et les natures de connexion sont déterminées de bout en bout. Lorsqu’on essaie de transposer cette approche dans le monde du développement, les problèmes à régler sont de trois ordres : - Comment s’assurer que les services exposés par l’entreprise A ne seront pas appelés par erreur ou malveillance par des clients n’ayant rien à faire là ? Avant même de mettre en place une couche de sécurité, il faut proposer un annuaire de points de connexions et se prémunir contre les ambiguités de nommage ou d’adressage.
- Comment tenir la charge si la même infrastructure publique doit encaisser les demandes d’un nombre énorme de clients et serveurs ?
- Comment donner au développeur une façon simple de faire appel à cette infrastructure intermédiée ?
Structure détaillée de l’ISB Les deux premiers points vont nous permettre une petite visite dans les entrailles de l’ISB, le troisième étant plutôt consacré à ce qui se passe aux extrémités de la chaîne. Voici donc la version Azure du schéma ci-dessus : |
Thursday, May 14, 2009 2:25:17 PM (GMT Standard Time, UTC+00:00) | |
|
|
|
|
|
|
|
| Archive |
| January, 2010 (1) |
| November, 2009 (1) |
| October, 2009 (1) |
| September, 2009 (2) |
| August, 2009 (3) |
| May, 2009 (1) |
| March, 2009 (1) |
| February, 2009 (2) |
| January, 2009 (1) |
| November, 2008 (1) |
| October, 2008 (2) |
| April, 2008 (2) |
| March, 2008 (1) |
| February, 2008 (1) |
| April, 2007 (1) |
| October, 2006 (3) |
|
|
|
|
| Themes |
| Pick a theme:
|
|
|
|