Archive

Posts Tagged ‘Azure’

Un datacenter en container Made by Microsoft for Azure

Wired vient de publier quelques (trop) rares photos d’un DataCenter Windows Azure à base de container : http://www.wired.com/wiredenterprise/2013/02/boydton/ . Il s’agit du datacenter de Boydton en Virginie (USA) ouvert l’an dernier.

Chaque container est bien un “mini DataCenter in a box”.

Cette vision des datacenters à base de container est très bien expliquée dans la petite vidéo suivante :

 

D’autre Datacenter Azure sont d’une architecture plus classique. Ainsi, en Europe, les datacenters reste des équipements d’architecture plus ‘classique’ :
le datacenter Windows Azure de Dublin (Irlande).
Catégories:Windows Azure Tags:,

Team Foundation Service (ex tfspreview.com) et l’erreur TF30063

Je viens de me frotter à l’erreur TF30063 (“you are not authorized to access https://xxxx.visualstudio.com/defaultcollection.") remonté par Visual Studio (2010 et 2012) lorsque je tentai de me connecter à un TeamProject présent dans mon server TFS hosté dans azure (visualstudio.com).

Ce problème est apparu assez subitement et simultanément sur mon poste W8/VS2012 et W7/VS2010. Je n’ai pas identifié l’origine exacte du soucis.

Quoi qu’il en soit la cause du refus d’authentification à l’air lié à la présence d’un cookie d’authentification LiveID qui reste dans le cache.

La suppression des cookies au niveau d’Internet Explorer n’a rien donné, l’erreur se produisait toujours.  La déconnexion explicite de mon LiveID à partir de mon navigateur n’a pas mieux marché.

En fait, il faut bien se déconnecter de LiveId … mais à partir d’un navigateur qui tourne DANS VISUAL STUDIO !!! La marche à suivre est donc la suivante :

  • lancez votre VisualStudio (2010 ou 2012)
  • ouvrez un navigateur via le menu “View / Other window / Web Browser”
  • naviguez sur live.com et deconnectez vous.
  • naviguez sur VOTRESERVEUR.visualstudio.com (si par hasard vous êtes connecté automatiquement déconnectez vous explicitement de votre server TFS en cliquant sur votre login en haute à droit de la page web, puis “Sign out”).
  • reconnectez vous avec votre LiveID qui dispose des droits dans le serveur TFS.

Voilà, ca vous évitera de perdre de précieuses minutes de codage pour une simple histoire de gâteau. A la place, prenez une pause café … avec un cookie c’est délicieux.

Catégories:Visual Studio Tags:, ,

Précisions sur les différences entre les tailles de VM Azure : Bande passante réseau

Outres les différences connues entre les type de VM Azure (taille mémoire, taille disque, nombre de coeur CPU), une autre caractéristique technique est différentiente : la bande passante réseau disponible. En effet, la vitesse de la connectivité réseau (bien que virtuelle) est différente en fonction de la taille de la VM. La règle est de 100Mbs par cœur de CPU, sauf pour l’ExtraSmall.

Extra small :     5Mbs          
Small : 100Mbs
Medium : 200Mbs    
Large : 400Mbs
ExtraLarge : 800Mbs
        

 

En conséquence, si vous avez à effectuer des taches peu consommatrice en temps CPU mais nécessitant un gros débit réseau, il peut être judicieux de choisir des tailles de VM plus grosses. les VM ExtraSmall était clairement destiné à des petites applications ou pour faire du développement/test.

Catégories:Windows Azure Tags:, ,

Investissement sur le Datacenter Azure de Dublin

Depuis plusieurs mois, lors des formations Windows Azure que je dispense, j’évoque souvent les datacenters Azure, dont celui de Dublin (Irlande) que j’ai eu la chance de visiter fin 2011.

Pour compléter mes propos (et les confirmer Smile ), Microsoft vient d’annoncer un investissement très important sur la DataCenter de Dublin : http://blogs.msdn.com/b/windowsazurefrance/archive/2012/02/23/microsoft-investit-130-millions-de-dollars-pour-son-datacenter-de-dublin-en-irlande.aspx

L’article est très intéressant car il met en évidence certains choix effectués par Microsoft (notamment le refroidissement par exemple).

Baisse de prix SQL Azure

L’équipe Azure vient d’annoncer une baisse plus que significative des tarifs des bases de données SQL Azure à partir de 5go (réduction minima de 48% !!), ainsi qu’une nouvelle taille minimale de 100Mo. Les nouveaux tarifs mensuels sont donc :

     100Mo       3,55€  (nouveau)
    1Go       7,09€  (-0%)  
    5Go     18,43€  (-48%)
  10Go     32,60€  (-54%)
  25Go     53,85€  (-75%)
  50Go     89,27€  (-75%)
100Go   124,70€  (-65%)
150Go   160,12€  (-55%)

On notera que l’offre promotionnelle qui fixait le prix des bases 100Go & 150Go au même prix que la base de 50Go (voir ce billet) est terminée… mais le nouveau prix est beaucoup plus intéressant puisque la 150Go au nouveau tarif coute deux fois moins cher que la 50go a l’ancien tarif Sourire

Conséquence:

  • SQL Azure pour la gestion des sessions ASP.Net devient encore plus intéressant face à l’utilisation du cache distribué AppFabric (baisse du cout de stockage d’une session)
  • SQL Azure reprend de la crédibilité sur le rapport cout du stockage/cout de développement par rapport à l’utilisation des Azure Storage Table pour des volumes de stockages de l’ordre des plusieurs Go.
    Je rappelle en outre que ces tarifs sont basés sur le volume de données stockées, et que vous bénéficier automatiquement de l’ensemble des nouvelles fonctionnalités au fur et à mesure qu’elles sont activées en production (Fédération, portail d’administration, …)
Catégories:Windows Azure Tags:,

Quel datacenter Azure privilégier pour une application ‘française’

/* Ce billet à été corrigé pour tenir compte de la vision américaine de l’europe : L’irlande fait partie de l’europe du nord, alors que les Pays bas font partis de l’europe de l’Ouest */

 

Une des questions que j’entends très souvent concernant Windows Azure concerne le choix des datacenters pour déployer les applications.

Les quelques pistes que j’évoque ci-après sont basés uniquement sur des critères techniques, le cout financier n’est pas pris en compte (je vous rappelle néanmoins que les 2 datacenters asiatiques ont un cout de ressources un peu plus élevé que ceux d’Europe ou des USA).

D’autres part, les performances sont dépendantes du fournisseur d’accès de l’utilisateur (Free.fr dans le cas des mesures évoquées ci après), des conditions transitoires pouvant survenir (charge réseau, lien saturé, routage, …), mais aussi de la localisation géographique des utilisateurs (étant lyonnais, le nombre d’intermédiaires [routeur, nœud d’interconnexion, …], et le routage des mes paquets sont probablement différents d’un lillois ou d’un parisien).

 

Le premier niveau de choix est bien entendu le continent : il faut choisir un datacenter sur le continent où vont se trouver les utilisateurs. Si votre application est à cible continentale ou mondiale, l’utilisation du DNS dynamique (Azure Traffic Manager) avec une stratégie basée sur la performance d’accès permet de router les connexions de vos utilisateurs vers le datacenter le plus ‘proche’ (meilleur performance d’accès réseau).

trafficrule

Dans certain cas, par exemple pour les applications à destination d’utilisateurs irlandais ou hollandais, le choix est vite effectué : Europe de l’ouest (=Amsterdam, Pays Bas) pour les hollandais , et Europe du Nord (=Dublin, Irlande) pour les irlandais.

La question reste posée pour les pays à mi-chemin ou plus éloignés … comme la France par exemple.

Plutôt qu’une réponse théorique, privilégions la pratique !

J’ai déployé la même application ASP.NET basique sur les datacenters Azure d’Europe du nord (Irlande) et d’Europe de l’ouest (Pays Bas). Les 2 déploiements sont strictement identiques (même packaging de déploiement, même fichier de configuration).

AzureService

Nous avons à notre dispositions 2 utilitaires Windows très pratique pour estimer la ‘performance d’accès réseau’ à un ‘datacenter’ :

  • tracert.exe : permet d’obtenir une trace de tous les nœuds réseaux empruntés par nos paquets de données entre le poste de l’utilisateur et le datacenter cible
  • ping.exe : permet d’estimer le temps de transit réseau des paquets entre le poste de l’utilisateur et le datacenter cible.
    J’ai effectué plusieurs fois les test avant de prendre les captures écrans pour être sur que les requêtes DNS (ou autres services réseaux) ne viennent pas perturber les chronométrages.
    Bien entendu, les mesures ci après ont été effectuées sans DNS dynamique.

Ping

      : ce test n’est pas utilisable avec les datacenters Azure car le firewall intégré bloque les requêtes PING/PONG. Tant pis pour les gamers qui ne jure que par le ping

Smile

Tracert :

tracert-EU-WESTtracert-EU-NORTH
WEST Europe datacenter                        NORTH Europe datacenter

 

Le trajet suivi par nos paquets est le même jusqu’à un nœud appelé ‘ams-ix-2.microsoft.com’. Au delà le trajet est masqué pour le datacenter d’europe de l’ouest, et guère plus significatif pour l’Europe du Nord.

Quoi qu’il en soit , quel que soit le datacenter cible, nous passons par Amsterdam (ams-ix-2 est iplocalisé a Amsterdam) !

 

La logique technique pure et dure veut que le datacenter hollandais soit à privilégier du fait de sa proximité.
Ce choix semble d’autant plus judicieux que la route pour rejoindre le datacenter irlandais passe elle aussi par les Pays Bas !

 

Dernier test : le chronométrage de l’application à partir d’un poste utilisateur : on appelle la même page de l’application (about.aspx) sur les 2 datacenters, et on compare le temps nécessaire pour obtenir la réponse complète. Les machines virtuelles exécutant les applications Azure sont basées sur des matériels équivalents, la différence de chronométrage sera donc du fait de l’infrastructure réseau.

Le chronométrage a été effectué a l’aide de la “developper toolbox” d’IE9 (et confirmer par un test batch), avec le cache navigateur actif. Les 2 captures qui suivent correspondent à la moyenne des chronométrages observés :

Chono-EU-WESTChono-EU-NORTH
WEST Europe datacenter                            NORTH Europe datacenter

 

Verdict :

      Europe du Nord (Irlande) :  ~300ms

      Europe de l’Ouest (Pays Bas) :  ~  90ms

 

Donc, dans les conditions de réalisation de mon test (à partir de Lyon, ADSL Free) , l’hébergement de l’application dans le datacenter hollandais d’Azure (c’est à dire dans la vision américano centrique , le datacenter "d’Europe de l’Ouest" me fournit un temps de réponse globalement au moins 3 fois meilleurs !!

Le datacenter Hollandais (d’Europe de l’Ouest) est donc à privilégier.

Bonne année 2012 … et Flight in the Azure !

Je vous présente en mon nom et celui de l’équipe QuidMind nos meilleurs vœux pour cette nouvelle année 2012. Qu’elle soit porteuse de santé, réussites et succès.

… Et c’est encore mieux quand une bonne nouvelle accompagne les vœux. Et cette nouvelle – bien que ne concernant pas Windows Azure – va nous transporter dans les “clouds” : Je parle bien entendu de Microsoft Flight.

Microsoft vient de communiquer de nouvelles informations pour nous mettre l’eau à la bouche :

  • Le jeu de base sera téléchargeable gratuitement (avec une scène “l’ile principale de Hawaï” et plusieurs missions intégrées). L’”Icon A5” (avion disponible commercialement fin 2012 http://www.iconaircraft.com/ ) sera le premier disponible en simulation.
  • Les joueurs connectés avec “Games for Windows Live” auront accès à du contenu complémentaire (avions, missions, collecte de ‘succès’, …)
  • Des compléments (avions, scènes, personnalisation, …) seront achetables séparément pour les plus accrocs
  • flighticon_a5_1icon_a5_2

Je vous rappelle qu’il est encore possible de s’inscrire pour participer à la beta : https://connect.microsoft.com/site1134/InvitationUse.aspx?ProgramID=6087&InvitationID=FLY-BRQX-BXTB

 

Bonne année 2012 à tous.

Service à Haute Disponibilité et Forte Montée en charge avec Azure ServiceBus (AppFabric)

“High Availability and highly scalable web service with Windows Azure ServiceBus (AppFabric)”

 

La version “November 2011” du SDK Windows Azure fusionne les deux principaux SDK (Le SDK Azure ainsi que les librairies de développement AppFabric ServiceBus et AppFabric Caching). Ce SDL apporte le support de nouveaux types de projets (MVC3, Silverlight RIA, HPC Preview, …)

Téléchargement : http://www.microsoft.com/windowsazure/sdk/

Outre ce packaging plus simple, cette nouvelle version apporte son lot de nouveautés techniques (http://msdn.microsoft.com/en-us/library/windowsazure/gg441573.aspx)

En parallèle avec l’évolution du SDK, l’implémentation du ServiceBus au sein d’Azure accueille une nouvelle fonctionnalité très attendue : la répartition de charge. Cette nouvelle caractéristique est indépendante des SDK. Elle est automatiquement disponible dès qu’on utilise le ServiceBus (à partir du SDK v1.5).

 

Azure Service Bus

Pour rappel, le ServiceBus Azure est bus de service fournissant des fonctionnalités de sécurité,  d’agrégation, de répertoire et d’exposition des services. Une société peut ainsi agrégé l’ensemble de ses services (publiques ou privés) en un point fédérateur unique hébergé par Windows Azure et accessible à partir d’une url racine unique et stable dans l’espace et le temps (par exemple : services.masociete.com), les services s’agrégeant en sous url (services.masociete.com/compta/ , sercices.masociete.com/catalogue/product, …)

Bien que supportant de multiples technologies clientes, l’intégration du service bus au sein du framework .Net est particulièrement propre et simple par l’utilisation de Binding WCF spécifiques.

Pour une explication sur les bases du ServiceBus AppFabric et de sa mise en œuvre, je vous conseille la lecture de l’article que j’ai publié dans la revue Programmez n° 131 (http://www.programmez.com/magazine_articles.php?titre=Windows-Azure–le-cloud-computing-pour-les-developpeurs&id_article=1393&magazine=131). Si vous souhaitez recevoir les sources de l’exemple envoyez moi un email (nclerc [at] quidmind.com).

 

La haute disponibilité avec Azure

Windows Azure est une plateforme fiable, hautement disponible, redondante. Chaque brique composant Windows Azure met en œuvre des mécanismes de redondance et/ou de répartition de charge apportant haute disponibilité et performances à vos applications :

Azure Compute :

  • Load Balancing en entrée des WebRole,
  • Load Balacing sur les endpoint exposés par des WorkerRole,
  • Load Balancing pour les communications entre Web et Worker
  • Routing via le DNS pour une répartition multi datacenter dynamique de la charge

Azure Storage :

  • Stockage dupliqué
  • Load balancing pour le requêtage client
  • Augmentation du nombre de serveurs de requêtage en fonction de la charge
  • Partitionnement des tables

SQL Azure :

  • Triple réplication de la base de données avec reconstruction automatique des réplicas pour une continuité de service.
    L’ensemble de ces fonctionnalités permet ainsi à Microsoft de vous garantir contractuellement un SLA (niveau de disponibilité contractuellement garanti).

      Haute disponibilité avec le ServiceBus

      En interne le service bus met en œuvre des mécanismes de haute disponibilité garantissant que votre namespace (l’url racine d’agrégation des services) est disponible et tient la charge contractuellement définie.

    Par contre, dans toute chaine, la résistance totale est égale à la résistance du maillon le plus faible … Et dans le cas du serviceBus, le maillon le plus faible est (la plupart du temps) le service qui lui est connecté : soucis de stabilité, de montée en charge, de disponibilité, problème de connectivité, …

     

    Dans une architecture orienté services, la haute disponibilité passe par l’utilisation d’éléments redondés sans état (pas de persistance de contexte entre deux appels). Or jusqu’a présent, la redondance devait être géré au niveau du service exposé sur le service bus. Ce qui dans la plupart des cas se traduit par … “aucune redondance” Sad smile

    Depuis novembre 2011, le ServiceBus supporte une fonctionnalité de répartition de charge piloté par le service bus. Il suffit ainsi de déclarer plusieurs services (n instances du même services, plusieurs services différents mais implémentant les mêmes contrats) sur la même url d’agrégation, le services bus répartira ensuite la charge de connexion/session entre les différentes instances disponibles.

    Auparavant l’inscription multiple d’un service sur une uri précise déclenchait une exception “Endpoint not available” si un service était déjà déclaré. Depuis novembre, cette inscription est accepté et active la répartition de charge entre les services inscrits.

    Il est ainsi possible de répartir les services dans des zones géographiques (datacenter azure, hébergement privé, …) distinct afin de limiter le risque d’interruption de service lié à une coupure réseau, tout en augmentant dynamiquement le nombre d’instance de service pour absorber la charge.

     

    Un peu de pratique

    Dans l’exemple suivant je prend le cas d’un service destiné à géré des prises de commandes. Le service permet de créer une commande et d’ajouter des lignes de commandes. Il est écrit en C# et exposé sous la forme d’un service WCF hébergé dans une application ligne de commande. Comme il se doit, ce service se doit d’être fiable et tenir la charge.

    Ce service est exposé en nettcp et agrégé sur un namespace du service bus : sb://quidminddemoservices.servicebus.windows.net/GestionCommande.

    Deux instances sont lancés :

    ServiceUn

     

    L’application cliente permet de créer une commande puis de saisir des lignes de commandes :

    image

     

    Le résultat au niveau des services est bien une répartition équitable des appels entre les différentes instances déclarées :

    serviceDeux

     

    Vous n’avez plus aucune excuse pour ne pas redonder vos services !

    Nouveautés Windows Azure du 12/12/2011

    Depuis quelques minutes la plateforme Windows Azure a évolué de nouveau. Quelques nouveautés et des bonnes nouvelles pour nos factures :

    • Ajout de nouveau pallier pour les bases SQL 100Go & 150Go en Business Edition. (sans augmentation de prix , soit 100Go ou 150Go au prix des 50Go)
    • Amélioration ou nouveaux supports de technologies issue de l’open source ou d’éditeur tiers : NodeJS, Java, MondDB, MemCached, …
    • Baisse de prix et réduction : Gratuité du Service Bus (AppFabric) jusqu’en mars 2012 (situation idéal pour tester mon prochain billet)
    • Baisse de prix de 25% pour les couts de bande passante USA & Europe.
    • Visualisation plus pratique des factures avec un suivi temps réel des consommations.

    Simuler ou vérifier un cout : http://www.windowsazure.com/en-us/pricing/calculator/

    AzureBillingRealTIme

    Catégories:Windows Azure Tags:, ,

    Windows Azure SDK 1.5 et l’erreur “DevFC.exe stopped working”

    Apres installation du SDK Azure 1.5 sur mon poste de développement, l’émulateur Azure (Windows Azure Compute Emulator) ne pouvait plus démarrer. Une boite de dialogue d’erreur “DevFC.exe stopped working” indiquait le crash de l’émulateur du Fabric Controller de l’émulateur.

    Pourtant tout fonctionnait bien avec le SDK 1.4

    Solution brute : je fais une VM pour mon Dev … mais je ne sais toujours pas ce qui coince sur mon poste de développement originel.

    Solution finaude : Analyser les logs, et aimer la ligne de commande Sourire

    Les logs du FabricControler de développement se trouve dans C:\Users\[VOTRE_USER_NAME]\AppData\Local\dftmp\DevFCLogs.

    En analysant ce fichier, on trouve une exception :

    Exception occurred when trying to open service host. {0}, {1}`Il existe déjà un écouteur sur le point de terminaison IP 127.0.0.1:12000. Vérifiez que vous n’essayez pas d’utiliser ce point de terminaison plusieurs fois dans votre application et qu’aucune autre application n’écoute sur ce point de terminaison.`

    Tout est dans le message Sourire : un autre programme occupe le port IP 12000 que cherche à utiliser DevFC.exe. 

    Pour savoir quel programme utilise ce port, ouvrez une invite de commande, et exécuter la commande “netstat –b –n –a” pour lister tous les ports IP utilisés sur le système et quel programme les utilise :

    port12000

    Et je découvre que le port 12000 est utilisé par le programme “htcUPCTloader.exe” … programme de gestion des terminaux Android HTC.

    Je stoppe le programme avec le gestionnaire de tache, redémarre le “Compute emulator” … et tout marche à merveille, je peux déployer mes applications Azure dans le Compute Emulator.

     

    AmpouleDans mon cas, il s’agissait du port 12000 occupé par htcUPCTLoader, pour d’autres cas recensés il s’agit du port 12001 occupé par VMWare. La procédure pour identifier l’origine reste la même.

     

    Espérons que Microsoft corrige ce désagrément en mettant en place une sélection automatique des ports.

    Suivre

    Recevez les nouvelles publications par mail.