De A à Z : Choisir une architecture pour sa solution applicative
Azure Roadshow
1. Grégory Renard Sébastien Warin
CTO – R&I Manager Wygwam R&I Technical Lead Wygwam
MVP & Microsoft Regional Director Microsoft MSP & MCPD
http://blogs.developpeur.org/redo http://sebastien.warin.fr
www.wygwam.com www.wygwam.com
2. Agenda
Introduction
Cloud Computing
Windows Azure Platform
Microsoft Online Service
Windows Azure
Compute
Storage
SQL Azure
3.
4. Windows Azure
« Windows » + « Azure »
Windows = un OS ?
Azure = Késako ?
OS : Système d'exploitation
Abstraction du matériel
Exécution de programmes
Stockage de données
Exemple : Windows Vista, Windows 7, Windows
2008, …
5. Windows Azure
Un 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 3 Service N
8. Emplacements des Data Centers
Pays-bas
Irlande
Hong Kong
Washington Virginie
Singapour
Australie
•Plusieurs 10aines/100aines de
milliers de serveurs
•Economies d'échelle
•Electricité, réseau …
•Opérations
Emplacements actuels MS Online
9. 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.
10. Desktop vs Cloud hardware
Desktop Hardware Cloud Hardware
• Dysfonctionnements • Les défaillances des
du matériel vite composants peu
catastrophique pour le catastrophique pour le
système système
• Extensibilité limitée par • Extensibilité limitée par la
CPU / HDD/ RAM puissance électrique /
locaux
14. Vue du datacenter
Ressources
IT allouées Prévision
de
charge
Manque de
ressources
CAPACITE IT
“Perte“ de Couts fixes
capacité des
ressources IT
Barrière à
l'innovation Charge
actuelle
NIVEAU DE CHARGE
15. Vue du cloud
Ressources Prévision
IT allouées de charge
CAPACITE IT
Pas de manque de
ressources
Pas de sur-
disponibilité Ajustement des
ressources en
cas de baisse
Réductions des d'activité
investissements
initiaux
Charge actuelle
NIVEAU DE CHARGE
17. 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
Avantages
Disponibilité 24/7 et redondance
Payez ce que vous consommez
Simple, administration transparente
Elasticité
18. 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
19. 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 »
20. 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 SaaS
de son logiciel
Une application Web prototype pour tester un concept
Lancement de votre Startup
….
25. Le portail clients Online Services :
https://mocp.microsoftonline.com
Gestion des abonnements
3 offres :
Accelerator Core
Accelerator Extented
Consumption
26. Portail de développement et déploiement
Azure
https://windows.azure.com
Connexion avec son LiveID
Gestion et deploiements des services Azure
Hosted Service
Storage Service
SQL Azure
….
31. Stockage sur Windows Azure
Azure Storage
Blobs Tables Queues
…
SQL Azure
SQL Server 2008 in the Cloud
32. Différents rôles
n m
Worker
LB
Web Role
Role
Azure Storage, SQL Azure, ou ….
Plusieurs types de roles :
Web Role
Plusieurs sous-types : ASP.NET, WCF, Fast-CGI (PHP,…)
Worker Role
« VM » Role (à venir)
33. Web Role
Site Web ou Web
Service
Public Internet
Basé sur IIS7
Exécution ASP.NET,
Service WCF et
fast-CGI (ex. PHP)
Web Role
Configuration XML
Load
Balancer (IIS7)
Pipeline managé
(.NET)
Storage Services SSL
34. Worker Role
Avec ou sans
connexion entrante
Public Internet
Exemple : traite les
taches d’une file Worker
d’attente (Azure Role
Queue)
Comparaison :
Windows Service Storage Service
(daemon)
35. 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…
36. 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>
37. Service Architecture
Internet Internet
LB Windows Azure LB
Queues
WebSite
Site Worker
Worker
WebSite
WebASMX, WCF) Worker
(ASPX,
(ASPX, ASMX, WCF) Service
Service
(ASPX, WCF, etc.) Service
Blobs
Tables
Storage
38. Environnement de développement
Emulation des services du Cloud sur votre poste local
Développement et test local
Debugging dans Visual Studio
39. Déploiement dans le Cloud
Test et
Développement Déploiement
debugging
• Visual Studio + • Emulation local du • Génération du
Azure Tools Cloud package depuis
• Development Visual Studio
• Technologies Fabric
existantes (.NET, • Development • Envoi du package
ASP.NET, GCI/PHP, Storage sur Windows Azure
…) • Debugging dans (via le portail Web
Visual Studio ou par les API)
• 10-15min plus
tard, application
fonctionnelle dans
le Cloud
41. Role Programming Model
Défini par le RoleEntryPoint
OnStart()
Appellé par la Fabric au demarrage, nous permettant
d’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”
42. Configuration
Service Configuration
Serviceconfiguration.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
43. Monitoring
Pas de debugging dans le Cloud (seulement en local)
Utiliser les Traces et Debug
DiagnosticMonitorTraceListener
Utiliser l’API Diagnostics pour configurer et collecter
EventLogs
PerformanceCounters
Trace/Debug information (logging)
IIS Logs, Failed Request Logs
Crash Dumps
45. Déploiement
Etape 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
48. 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 Upgrade
Mise à jour à la volée
Mise à jour du service entier ou juste d’un role particulier
Utilise les “Upgrade domain”
49. 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’application
Monté en charge et élasticité
Haute disponibilité
Paiement à la consommation
50.
51. 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
52. 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 parser
du 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)
53. Development Storage
Emulation des Azure Storage du cloud en local
Permet le développement offline
Requis SQL Express 2005/2008
54. Storage dans le Cloud
https://windows.azure.com/
Créer un “Storage
Account”
Vous aurez en
retour :
Endpoint
Access Keys
CDN
55. Windows Azure Storage Account
Un utilisateur créer un Storage Account
Peut choisir l’emplacement géographique
“US Anywhere”, “US North Central”, “US South Central”,
Peut heberger le Storage dans le même
emplacement que le Compute
Vous recevez la clé secrete 256 bit à la création du
compte
Information commerciale
Chaque Storage Account peut stocker jusqu’à 100 TB
Par défaut, limite de 5 Storage Accounts par
abonnement
56. 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
58. Entités et Propriétés
Chaque Entité peut avoir jusqu’a 255 propriétés
Chaque Entité doit comporter les propriétés
Partition key
Row key
Timestamp
Pas de schéma fixé pour le reste des propriètés
2 entités dans la même table peut avoir des
propriétés différentes
Stocké sous forme de paire de <Name, TypedValue>
59. Types des propriétés
Partition key et Row key
String (1KB max.)
Autre propriétés
String (64KB max.)
Binary (64KB max.)
Bool
DateTime
GUID
Int
Int64
Double
60. 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
61. Partitioning
Performance
Utilisez un “PartitionKey” qui est commun dans vos
requê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 charge
Microsoft 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
63. 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
64. Concepts du Blob Storage
Blocks ou
Account Container Blob
Pages
IMG001.JPG
Pictures
IMG002.JPG
Account
Block/Page 1
Movies MOV1.AVI Block/Page 2
Block /Page
3
65. Blob Containers
Blob Container
Un container contient une collection de blobs
Est défini par une visibilité
Private ou Public
Associé à des metadonnées
Les metadonnées sont des paires <clé, valeur>
Jusqu’à 8KB par container
66. Fonctionnalité des Blobs
Un blob peut stocker de large objet (de plusieur centaine
de GB)
Associé ou non à des metadonnées
Métadonnées de paire de <clé, valeur>, (max. 8KB par blob)
Interface REST
PutBlob
Insère un nouveau blob ou écrase le blob existant
GetBlob
Recupére le blob
DeleteBlob
CopyBlob
…
67. Deux types de Blobs
Block Blob
Usage standard
Chaque 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
69. Résumé Windows Azure Blobs
Stokage fiable de fichiers nommés
Accessible en HTTP/REST
Deux types de blobs
Block Blobs – streaming
Page Blobs – random read/write (nouveau)
70. Queues
Service de Queue
Créer et supprimer des queues
Message:
Récupére le plus ancien (FIFO)
Taille maximum de 8kb par message
Operations:
put
get
delete
71. Concept du Queue Storage
Account, queue et message
Account Queue Message
128x128,
http://…
Thumbnail Jobs
256x256,
http://…
Account
http://…
Indexing Jobs
http://…
72. Worker Role pour miniaturation
Queues pour communication Web<>WorkerRole
73. Résumé Windows Azure Queues
Fourni un service distribution de message
Queue FIFO (First In First Out)
Pas de limite du nombre de messages dans la
Queue
La taille du message doit être <= 8KB
74.
75. De SDS à SQL Azure
ODBC, OLEDB,
REST Client REST Client SQL Client* ADO.Net PHP,
Ruby, …
Cloud Cloud
Evolution
HTTP+REST
HTTP+REST
HTTP
HTTP
TDS
Windows Azure Windows Azure
Web App REST (Astoria) Web App
Data Center
Data Center
REST Client ADO.Net + EF SQL Client*
REST/SOAP + ACE Model TDS + TSQL Model
OLD SDS SQL Azure
* Client access enabled using TDS for ODBC,
ADO.Net, OLEDB, PHP-SQL, Ruby, …
76. Service Provisioning Model
Chaque account a 0 ou plusieurs servers
Provisionnement sur le Portal
Unité de facturation
Chaque server a 0 ou plusieurs databases
Contient les métadonnées des databases
Unité de Geo-location et Authentication
Nom DNS généré
Chaque database a des objets SQL standard
Users, Tables, Vues, Index, etc.
Unité la plus petite pour la facturation
77. Architecture
Infrastructure partagée au niveau SQL
Routage des requêtes, securité et isolation
Replication et failover automatique
Load balancing
Provisionnement instantané
Machine 4 Machine 5 Machine 6
SQL Instance SQL Instance SQL Instance
SQL DB SQL DB SQL DB
User User User User User User User User User User User User
DB1 DB2 DB3 DB4 DB1 DB2 DB3 DB4 DB1 DB2 DB3 DB4
79. SQL Azure
Accès aux databases
Changement de la
Connection String
80. 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
84. Modele de conception
Petite et moyenne base de données
Utilisez une seule database
Même modèle comme sur un on-premise SQL Server
Grosses base de données
Partionnez 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
85. Partitionnement
1 x 10GB database
1 Instances
10 x 1GB databases
10 Instances
87. Compatibilité
Dans le scope de la V1 Hors du scope de la v1
Tables, index et vues Transactions distribuées
Procédures stockées Requetes distribuées
Triggers CLR
Contraintes Service Broker
Table variables, Type Spatial
session temp tables (#t) …
…
88. Connexion
Libraries et outils existants
ADO.NET, ODBC, PHP
Pré-installé sur les roles Azure Compute
Support des controles ASP.NET
Clients directement connectés à la database
Pas de USE
89. Administration Logique vs. Physique
SQL Azure met le focus sur l’administation logique
Création et management des schémas
Optimisation des requêtes
Securité (Logins, Users, Roles)
Administration physique transparante
Ré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
90. Deploiement et migration
Déploiement basic avec des Scripts SQL
SQL Server Management Studio 2008 R2
SQL Azure Migration Tool
91. Securité
Utilise le modele standard SQL
Authentifier un login, mapper à un user et role
Autoriser les users et roles aux objets SQL
Limité à l’authentication SQL
Username + password
Prochainement : AD Federation, WLID, et autres
protocoles d’authentication
Gateway TDS filtre les adresses IP autorisées
92. Tarification ?
Web Edition Business Edition
1 GB Database 10GB Database
$9.99 / mois $99.99 / mois
Bandwidth BP
$0.10 /GB en entrée $0.10 /GB en entrée
$0.15 /GB en sortie $0.15 /GB en sortie
94. SQL Azure … en Résumé :
Veritable SQL Server “in the cloud”
Administration logique
Paiement à la demande
Disponibilité de 99,99%
95. Azure en conclusion
Introduction
Cloud Computing
Windows Azure Platform
Microsoft Online Service
Windows Azure
Compute et Storage
SQL Azure
Plateforme Windows Azure MSDN
Premium