Download - Azure Roadshow
Grégory RenardCTO – R&I Manager WygwamMVP & Microsoft Regional Directorhttp://blogs.developpeur.org/redowww.wygwam.com
Sébastien WarinR&I Technical Lead Wygwam
Microsoft MSP & MCPDhttp://sebastien.warin.fr
www.wygwam.com
Agenda
IntroductionCloud Computing
Windows Azure Platform
Microsoft Online Service
Windows Azure
Compute
Storage
SQL Azure
Windows Azure
« Windows » + « Azure »Windows = un OS ?
Azure = Késako ?
OS : Système d'exploitationAbstraction du matériel
Exécution de programmes
Stockage de données
Exemple : Windows Vista, Windows 7, Windows 2008, …
Windows AzureUn OS distribué sur des milliers de machines
Abstraction de l'infrastructure (hardware, réseau,..)
Héberge et exécute des services
Stockage de données
….Service 1 Service 2 Service NService 3
……
Azure, vu de dessous : des machines,
... installées dans des datacenters.
Emplacements des Data Centers
Australie
Washington Virginie
Irlande
Pays-bas
Hong Kong
Singapour
Emplacements actuels MS Online
•Plusieurs 10aines/100aines de
milliers de serveurs
•Economies d'échelle
•Electricité, réseau …
•Opérations
Une ou deux couches d’OS
Un hyperviseur, sur lequel on déploie une VM hôte,qui administre N machines virtuelles
CPU: x64
OS : Windows 2008 / Hyper-V
Web Server : IIS 7
Apps : .Net, PHP, C++, etc.
Desktop vs Cloud hardwareDesktop Hardware Cloud Hardware
• Dysfonctionnements du matériel vite catastrophique pour le système
• Extensibilité limitée par CPU / HDD/ RAM
• Les défaillances des composants peu catastrophique pour le système
• Extensibilité limitée par la puissance électrique / locaux
La Plateforme Windows Azure
Symétrie« On Premises – In the cloud »
Symétrie « On Premises – In the cloud »
Vue du datacenter
NIVEAU DE CHARGE
CA
PAC
ITE
IT
Charge
actuelle
Ressources IT allouées
“Perte“ de capacité
Manque de ressources
Couts fixes des
ressources IT
Prévision de
charge
Barrière à l'innovation
Vue du cloud
Charge actuelle
Ressources
IT allouées
Réductions des investissements
initiaux
Pas de sur-disponibilité
Pas de manque de
ressources
Ajustement des ressources en cas de baisse
d'activité
Prévision de charge
NIVEAU DE CHARGE
CA
PAC
ITE
IT
Interopérabilité
Azure™ Services Platform
Windows Azure… En résumé :
Nuage de serveurs connectés:Abstraction de l’environnement d’exécution
Un système de stockage distribué
Allocation des ressources
Environnement de programmation
AvantagesDisponibilité 24/7 et redondance
Payez ce que vous consommez
Simple, administration transparente
Elasticité
Pourquoi utiliser le cloud ?
Application demandant une très forte monté en charge
Application demandant une très haute disponibilité
Application ayant une charge variable
Application ayant une durée de vie très courte
Application demandant un stockage externe
In the Cloud <> On Premises
Services « In the Cloud » + données « On premises »
Services « On premises » + donnée « In the Cloud »
Services + données « In the Cloud »
Exemples types d'exploitation :
Un site e-commerce qui a besoin de monter en charge pendant les soldes ou les fêtes de noël
Le site d’un évènement ou d’un film qui accueille beaucoup de monde sur une courte période de temps
Un éditeur de logiciel qui veut faire une version SaaSde son logiciel
Une application Web prototype pour tester un concept
Lancement de votre Startup
….
Service Architectures Web role (ASP.NET, WCF ou Fast-CGI)
Default.aspx
Storage
LB Worker.cs
Service ArchitecturesWorker role
Default.aspx
Storage
LB Worker.cs
Service ArchitecturesWeb and worker roles
Default.aspx
Storage
Worker.cs
Le portail clients Online Services :
https://mocp.microsoftonline.com
Gestion des abonnements
3 offres :Accelerator Core
Accelerator Extented
Consumption
Portail de développement et déploiement Azure
https://windows.azure.com
Connexion avec son LiveID
Gestion et deploiements des services AzureHosted Service
Storage Service
SQL Azure
….
Site Web ASP.NET
Default.aspx
Elasticité du Cloud
Montée en charge (Scalabilité)
Disponibilité 24/7
Default.aspxLB
Execution & Stockage
Stockage
Stockage sur Windows Azure
Azure Storage
SQL AzureSQL Server 2008 in the Cloud
Blobs Tables
…
Queues
Différents rôles
Plusieurs types de roles :Web Role
Plusieurs sous-types : ASP.NET, WCF, Fast-CGI (PHP,…)
Worker Role
« VM » Role (à venir)
Azure Storage, SQL Azure, ou ….
Web RoleLB
nWorker
Role
m
Web Role
Storage Services
Site Web ou Web Service
Basé sur IIS7Exécution ASP.NET, Service WCF et fast-CGI (ex. PHP)
Configuration XML (IIS7)
Pipeline managé (.NET)
SSL
Public Internet
Web RoleLoad
Balancer
Worker Role
Avec ou sans connexion entrante
Exemple : traite les taches d’une file d’attente (Azure Queue)
Comparaison : Windows Service (daemon)
Storage Service
Public Internet
Worker Role
Windows Azure API
Accès à l’environnement Azure via RoleEnvironment
RoleEnvironment permet d’accèderÀ la configuration du service Azure
Aux LocalResource (disque local)
Aux informations du role comme les InstanceEndpoints (ex: pour communication inter-role)
Expose des évènements quant au le cycle de vie de l’instance, etc…
Service Models
Description du service (Configuration, LocalStorage, Endpoint, …)
<?xml version="1.0" encoding="utf-8"?><ServiceDefinition name="CloudService1" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition">
<WebRole name="WebRole"><ConfigurationSettings><Setting name="AccountName"/>
</ConfigurationSettings><LocalStorage name="scratch" sizeInMB="50"/><InputEndpoints><!-- Must use port 80 for http and port 443 for https when running in the cloud --><InputEndpoint name="HttpIn" protocol="http" port="80" />
</InputEndpoints></WebRole><WorkerRole name="WorkerRole">
<ConfigurationSettings><Setting name="AccountName"/><Setting name="TableStorageEndpoint"/>
</ConfigurationSettings> </WorkerRole>
</ServiceDefinition>
Service Architecture
Internet
StorageTables
LB
Blobs
Worker Service
Worker Service
Worker Service
Web Site(ASPX, ASMX, WCF)Web Site
(ASPX, ASMX, WCF)Web Site
(ASPX, WCF, etc.)
Queues
Windows Azure
Internet
LB
Environnement de développementEmulation des services du Cloud sur votre poste local
Développement et test local
Debugging dans Visual Studio
Déploiement dans le Cloud
• Génération du package depuis Visual Studio
• Envoi du package sur Windows Azure (via le portail Web ou par les API)
• 10-15min plus tard, application fonctionnelle dans le Cloud
Déploiement
• Emulation local du Cloud
• Development Fabric
• Development Storage
• Debugging dans Visual Studio
Test et debugging
• Visual Studio + Azure Tools
• Technologies existantes (.NET, ASP.NET, GCI/PHP, …)
Développement
Mon 1èr service sur Windows Azure
Role Programming Model
Défini par le RoleEntryPoint
OnStart()Appellé par la Fabric au demarrage, nous permettantd’initialiser des taches
Status à “Busy” sur le L.B. tant que ne retourne pas “true”.
OnStop()Appellé quant le role se ferme
Run()En général une boucle infinie pour garder le role en “vie”
Configuration
Service ConfigurationServiceconfiguration.csdef – Service Model (définition)
ServiceConfiguration.cscfg – valeurs de configuration
RoleEnvironment.GetConfigurationSettingValue()
Ne pas utiliser le web.config pour les valeurs qui pourrait changer à l’execution
MonitoringPas de debugging dans le Cloud (seulement en local)
Utiliser les Traces et DebugDiagnosticMonitorTraceListener
Utiliser l’API Diagnostics pour configurer et collecterEventLogs
PerformanceCounters
Trace/Debug information (logging)
IIS Logs, Failed Request Logs
Crash Dumps
Configuration
DéploiementEtape 1 : générer le package
« Publish » depuis Visual Studio
Deux fichiers :.CSPKG : format ZIP contenant
Les roles (Web ou Worker) compilés
Schéma de définition du service
.CSCFG : fichier de configuration du service et des rôles
Déploiement
https://windows.azure.com/
Création du service « Hosted Service »
Upload du package Azure.cspkg
.cscfg
Déploiement
WLID : [email protected] : [email protected] : Passw0rd
Mise à jours des applications
Deux modes : VIP Swap et In-Place Upgrade
VIP Swap:Utilise les environnements “Staging” et “Production”.
Production: v1 Staging: v2, puis “swap” pour Production: v2 Staging: v1.
In-Place UpgradeMise à jour à la volée
Mise à jour du service entier ou juste d’un role particulier
Utilise les “Upgrade domain”
Pour résumer…
Pour le développeur :Environnement de développent familier (.NET, Visual Studio, ASP.NET, PHP ou autre CGI)
Exécution et debugging local
Déploiement et Management simplifié
Pour l’applicationMonté en charge et élasticité
Haute disponibilité
Paiement à la consommation
Services
Blobs – Stockage de fichier nommé avec meta-donnée
Xdrive (fevrier 2010) – Volume NTFS interfaçant les Blobs
Tables – Stokage semi-structuréUne table est une collection d’entité de type clé/valeur
Queues – Stockage de message dans une queue FIFO
HTTP/REST et interopérabilitéTous les services des Azure Storage sont exposés sous forme de Webservices HTTP/REST
Tout langage/technologies sachant communiquer sur le protocole HTTP et parserdu XML peut utiliser les Azure Storage
API disponible pour :.NET (Microsoft.WindowsAzure.StorageClient)
Java (Windows Azure SDK for Java)
PHP (Windows Azure SDK for PHP)
Development Storage
Emulation des Azure Storage du cloud en local
Permet le développement offline
Requis SQL Express 2005/2008
Storage dans le Cloud
Créer un “Storage Account”
Vous aurez en retour :
Endpoint
Access Keys
CDN
https://windows.azure.com/
Windows Azure Storage Account
Un utilisateur créer un Storage AccountPeut choisir l’emplacement géographique
“US Anywhere”, “US North Central”, “US South Central”,
Peut heberger le Storage dans le mêmeemplacement que le ComputeVous recevez la clé secrete 256 bit à la création du compte
Information commercialeChaque Storage Account peut stocker jusqu’à 100 TB Par défaut, limite de 5 Storage Accounts par abonnement
Windows Azure Tables
Table d’entités composées de propriétés
Conçu pour des milliards de entités
Dimensionnement par partition“Partition key” & “row key”
Pas de limite sur le nombre de partition
Utilise ADO.NET Data Services
Table Storage ConceptsAccount, table et entité
EntitéTableAccount
Account
Users
Name=…hash=…
Name=…hash=…
PhotoIndex
Tag=…id=…
Tag=…,id=…
Entités et Propriétés
Chaque Entité peut avoir jusqu’a 255 propriétés
Chaque Entité doit comporter les propriétésPartition key
Row key
Timestamp
Pas de schéma fixé pour le reste des propriètés2 entités dans la même table peut avoir des propriétés différentes
Stocké sous forme de paire de <Name, TypedValue>
Types des propriétésPartition key et Row key
String (1KB max.)
Autre propriétésString (64KB max.)
Binary (64KB max.)
Bool
DateTime
GUID
Int
Int64
Double
Partition Key et les Partitions
Toute entité à une “Partition key”Toutes les entités d’une table avec le même“Partition Key” sont dans la même partition
Necéssite de choisir un schéma de partitionnement pour rendre l’accès aux données scalable et performant
PartitioningPerformance
Utilisez un “PartitionKey” qui est commun dans vosrequêtes
Toujours essayer de spécifier la PartitionKey dans vos requetes
Les entités avec la même PartitionKey sont clusterisées
Les batchs et transaction sont supportés dans la même partition
Montée en chargeMicrosoft monitore le traffic vers chaque partition
Load balancing automatique sur les partitions
Plus il y a de partition, plus le load balancing est simple à gérer
Application web consommant les Azure Tables
Résumé Windows Azure Blobs
Table d’entité contenant des propriétés
Pas de schéma fixé
Accessible en HTTP/REST basé sur ADO.NET Data Service
Attention à bien partitionner les entités pour la monté en charge et performance
Blocks ouPages
Concepts du Blob Storage
BlobContainerAccount
Account
Pictures
IMG001.JPG
IMG002.JPG
Movies MOV1.AVI
Block/Page 1
Block/Page 2
Block /Page 3
Blob Containers
Blob ContainerUn container contient une collection de blobs
Est défini par une visibilitéPrivate ou Public
Associé à des metadonnéesLes metadonnées sont des paires <clé, valeur>
Jusqu’à 8KB par container
Fonctionnalité des BlobsUn blob peut stocker de large objet (de plusieur centainede GB)
Associé ou non à des metadonnéesMétadonnées de paire de <clé, valeur>, (max. 8KB par blob)
Interface RESTPutBlob
Insère un nouveau blob ou écrase le blob existant
GetBlobRecupére le blob
DeleteBlobCopyBlob…
Deux types de Blobs
Block Blob Usage standardChaque blob consiste en une sequence de blocks
Chaque block est identifé par un BlockID
Taille maximum de 200GB par blob
Page Blob (nouveau)Ciblé pour les accès de type “random read/write”Chaque blob consiste en un tableau de pages
Chaque page est identifiée par l’adresse de debut du blob
Taille maximum de 1TB par blob
Ajout du stockage des « avatars »
Résumé Windows Azure Blobs
Stokage fiable de fichiers nommés
Accessible en HTTP/REST
Deux types de blobsBlock Blobs – streaming
Page Blobs – random read/write (nouveau)
Queues
Service de QueueCréer et supprimer des queues
Message:Récupére le plus ancien (FIFO)
Taille maximum de 8kb par message
Operations:put
get
delete
Concept du Queue Storage Account, queue et message
MessageQueueAccount
Account
Thumbnail Jobs
128x128, http://…
256x256, http://…
Indexing Jobs
http://…
http://…
Worker Role pour miniaturationQueues pour communication Web<>WorkerRole
Résumé Windows Azure Queues
Fourni un service distribution de messageQueue FIFO (First In First Out)
Pas de limite du nombre de messages dans la Queue
La taille du message doit être <= 8KB
De SDS à SQL Azure
Evo
luti
on
SQL Azure
TDS + TSQL Model
Web App
SQL Client*
Windows Azure
REST Client
REST (Astoria)
ADO.Net + EF
SQL Client*
Cloud
HTT
P
HTT
P+R
EST
TDS
* Client access enabled using TDS for ODBC, ADO.Net, OLEDB, PHP-SQL, Ruby, …
Dat
a C
ente
r
ODBC, OLEDB, ADO.Net PHP, Ruby, …
OLD SDS
REST/SOAP + ACE Model
Web App
REST Client
Windows Azure
REST Client
HTT
P
HTT
P+R
EST
Dat
a C
ente
r
Cloud
Service Provisioning Model
Chaque account a 0 ou plusieurs serversProvisionnement sur le Portal
Unité de facturation
Chaque server a 0 ou plusieurs databasesContient les métadonnées des databases
Unité de Geo-location et Authentication
Nom DNS généré
Chaque database a des objets SQL standardUsers, Tables, Vues, Index, etc.
Unité la plus petite pour la facturation
Architecture
Infrastructure partagée au niveau SQLRoutage des requêtes, securité et isolation
Replication et failover automatique
Load balancing
Provisionnement instantané
Machine 5SQL Instance
SQL DBUserDB1
UserDB2
UserDB3
UserDB4
Machine 6
SQL Instance
SQL DBUserDB1
UserDB2
UserDB3
UserDB4
Machine 4
SQL Instance
SQL DBUserDB1
UserDB2
UserDB3
UserDB4
SQL AzureDeploiement
SQL AzureAccès aux databases
Changement de laConnection String
Gateway TDS
Gère les aspects sécurité, inspecte les paquets pour vérifier leur validité d’un point de vue sécurité et gère la partie Login.
La passerelle utilise un catalogue de données pour faire la relation vers le serveur SQL physique où se trouve la base
Equilibre la charge (load balancing) des requêtes DRL
Exécute les requêtes DML sur tous les réplicats
Les réplicats
Environment partagé
SQL AzureEn cas de panne
!
Modele de conception
Petite et moyenne base de donnéesUtilisez une seule database
Même modèle comme sur un on-premise SQL Server
Grosses base de donnéesPartionnez les données dans plusieurs databases
Utilisez les requêtes parallèles et merger les resultats en mémoire
V1 : Publication prochaine des Best-pratices de Microsoft sur le “Scale-out”
Vnext : Mise à disposition d’un couche d’abstraction pour cacher la complexité du partitionnement multi-database
Partitionnement
1 x 10GB database1 Instances
10 x 1GB databases10 Instances
Outils SQL & Development
Compatibilité
Dans le scope de la V1
Tables, index et vues
Procédures stockées
Triggers
Contraintes
Table variables, session temp tables (#t)
…
Hors du scope de la v1
Transactions distribuées
Requetes distribuées
CLR
Service Broker
Type Spatial
…
Connexion
Libraries et outils existantsADO.NET, ODBC, PHP
Pré-installé sur les roles Azure Compute
Support des controles ASP.NET
Clients directement connectés à la databasePas de USE
Administration Logique vs. Physique
SQL Azure met le focus sur l’administation logiqueCréation et management des schémas
Optimisation des requêtes
Securité (Logins, Users, Roles)
Administration physique transparanteRéplication automatique
Failover transparent en cas de panne
Load balancing des données pour garantir le SDL
Le role DBA est plus axé sur l’administration logique avec SQL Azure
Deploiement et migration
Déploiement basic avec des Scripts SQL
SQL Server Management Studio 2008 R2
SQL Azure Migration Tool
Securité
Utilise le modele standard SQLAuthentifier un login, mapper à un user et role
Autoriser les users et roles aux objets SQL
Limité à l’authentication SQLUsername + password
Prochainement : AD Federation, WLID, et autresprotocoles d’authentication
Gateway TDS filtre les adresses IP autorisées
Tarification ?
Web Edition
1 GB Database
$9.99 / mois
Bandwidth$0.10 /GB en entrée
$0.15 /GB en sortie
Business Edition
10GB Database
$99.99 / mois
BP$0.10 /GB en entrée
$0.15 /GB en sortie
Migration vers SQL Azure
SQL Azure … en Résumé :
Veritable SQL Server “in the cloud”
Administration logique
Paiement à la demande
Disponibilité de 99,99%
Azure en conclusionIntroduction
Cloud Computing
Windows Azure Platform
Microsoft Online Service
Windows AzureCompute et Storage
SQL Azure
Plateforme Windows Azure MSDN Premium