dat306 construire des applications supportant la montée en charge avec sql azure

39

Upload: doane

Post on 05-Jan-2016

22 views

Category:

Documents


0 download

DESCRIPTION

DAT306 Construire des applications supportant la montée en charge avec SQL Azure. Simon Ferquel Access it IDF. Pascal Laforest Access it IDF. Adrien Siffermann Imajin. Access It IdF en quelques mots…. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: DAT306 Construire  des applications supportant la montée en charge avec SQL Azure
Page 2: DAT306 Construire  des applications supportant la montée en charge avec SQL Azure

2

DAT306Construire des applications supportant la montée en charge avec SQL Azure

Simon FerquelAccess it IDF

Adrien Siffermann

Imajin

Pascal LaforestAccess it IDF

Page 3: DAT306 Construire  des applications supportant la montée en charge avec SQL Azure

3

Access It IdF en quelques mots…• Société de services, conseil / expertise, et formation,

exclusivement sur les technologies Microsoft• 20+ collaborateurs spécialisés sur les techno MS, dont 11

MVP

• Interventions en mode : Conseil, expertise, coaching et formation Réalisation, au forfait ou en Assistance Technique

.NET Plateforme Applicative

Framework et langages .Net, AZURE, Silverlight, WPF/Surface, VS/TFS, Windows Phone 7,…

SQL Server (SSIS, SQL, SSAS, SSRS), PowerPivot, SharePoint & on-line, Office 365,…

.NET Collab.

BI

Page 4: DAT306 Construire  des applications supportant la montée en charge avec SQL Azure

4

Agenda

• Rappel plateforme Azure• SQL Azure• Montée en charge

• Scale Up vs Scale-Out• Aujourd’hui : SQL Sharding• Demain : les Federations de base de données

Page 5: DAT306 Construire  des applications supportant la montée en charge avec SQL Azure

5

Windows Azure est une plateforme de services à l'échelle d'Internet hébergée et opérée par Microsoft dans des centres de données à travers le monde. Il s'agit d'une plateforme simple, fiable et performante pour créer des applications et services Web.

Introduction

Page 6: DAT306 Construire  des applications supportant la montée en charge avec SQL Azure

6

SQL Azure

Concepts familiers

Modèle relationnel

T-SQL classique

Support de librairies et protocoles existants

SQL Server Management Studio

Valeur différentiée

Mutualisé

Paiement à la consommation

Pas d’administration physique

Gestion automatisée

Provisionnement simple

Haute disponibilité

Page 7: DAT306 Construire  des applications supportant la montée en charge avec SQL Azure

7

Etendre SQL Server au Cloud

Database

Data SyncReporting

Business Intelligence

Modèle de programmation et outils communs

SGBD-R basé sur SQL Server 2008Limité à 50 GB, tailles par paliersIndex clustered obligatoireFull-Text Search non-supportéSQL CLR non-supportéProcédures systèmes non-supportées

Bientôt• Capacité additionnelle• Services additionnels :

• Reporting / BI• Synchronisation de données• Sauvegarde applicative

Page 8: DAT306 Construire  des applications supportant la montée en charge avec SQL Azure

8

Scénarios d’utilisationOn Premise Mixte Azure Sync

SQL Azure

MicrosoftDatacent

er

SQL

Code / Outils

Hybride

Microsoft Datacente

r

SQL Server

Windows Azure

Application / Navigateur

Windows Azure

SQL Azure

Azure

Microsoft Datacenter

Code/ Outils

SQL Azure

Windows Azure

SQL Azure Data Sync

MicrosoftDatacent

er

Page 9: DAT306 Construire  des applications supportant la montée en charge avec SQL Azure

9

Utilisation /Modèle de provisionnement

• Chaque Compte représente• Un compte de facturation• Un Serveur virtuel

• Chaque Serveur dispose• D’une ou plusieurs bases limitées en taille (1 à 50 Gb)• D’une base maître• D’un ou plusieurs logins

• Chaque base a• Un ou plusieurs SQL users

Compte

Serveur

Database

Server=server1.data.database.windows.netDatabase=testDBLogin=nigele[@server1] (maps to testuser)

Page 10: DAT306 Construire  des applications supportant la montée en charge avec SQL Azure

10

Démonstration

Premiers pas avec SQL Azure

Page 11: DAT306 Construire  des applications supportant la montée en charge avec SQL Azure

11

Haute disponibilité

Replica 1

Replica 2

Replica 3

LB

SQL Azure

Noeud maître

Replica 4

!

Page 12: DAT306 Construire  des applications supportant la montée en charge avec SQL Azure

12

Application

Internet

LBTDS (tcp)

TDS (tcp)

TDS (tcp)

Connectivité SQL Standard: ODBC, ADO.Net, PHP, …

Répartition de charge !

Zone de sécurité

Gateway

Gateway

Gateway

Gateway

Gateway

Gateway

Scalabilité et haute disponibilité, reprise en cas d’incident, réplication et répartition de charge

SQL SQL SQL SQL SQLSQL

Sous le capot…

Page 13: DAT306 Construire  des applications supportant la montée en charge avec SQL Azure

13

Partitionnement

• Problématiques « traditionnelles »• Volume des données

• Trop d’octets ( > 50 GO)• Charge de travail

• Trop de transactions / seconde

• Nouvelles problématiques liées au Cloud• Coût

• Type de stockage en fonction de son prix• Elasticité / extensibilité

• Partitionnement ponctuel pour supporter des périodes de forte charge

Page 14: DAT306 Construire  des applications supportant la montée en charge avec SQL Azure

14

Elasticité / montée en charge : 2 stratégies !• Scale Up

• Acheter un serveur suffisamment puissant• Mais les gros serveurs sont chers !

• Essayer de le charger autant que possible• Quid si la charge change subitement ? • Prévoir les pics de charge est coûteux !

• Scale-Out• Partitionner les données et charger plusieurs serveurs

• Les petits serveurs sont bon marché !

• Bénéficier de ressources de calcul distribuées• Grande performance de 800 petits serveurs…

• Les pics de charge sont mieux maîtrisés !• Load balancing sur tout le Data Center

Page 15: DAT306 Construire  des applications supportant la montée en charge avec SQL Azure

15

Scale-Out avec SQL Azure

• Souplesse dans la création de bases de données• CREATE DATABASE…et hop !• Pas de VMs, pas de serveurs

• Paiement à la consommation• Plus besoin d’une BDD ? => DROP !

• Aucune administration « physique »• Haute disponibilité, mises à jour,

maintenance…

• Copie de bases & SQL Azure Data SyncCREATE DATABASE abc.prod2clone AS COPY OF xyz.prod2

Page 16: DAT306 Construire  des applications supportant la montée en charge avec SQL Azure

16

Démonstration

Scale-out avec SQL Azure

Page 17: DAT306 Construire  des applications supportant la montée en charge avec SQL Azure

17

Le partitionnement

• Scale-Out => Création de partitions

• Plusieurs types de partitions :• Vertical• Horizontal• Hybride• …• QUOI ????

? ?

Page 18: DAT306 Construire  des applications supportant la montée en charge avec SQL Azure

18

Partitionnement vertical

Page 19: DAT306 Construire  des applications supportant la montée en charge avec SQL Azure

19

Partitionnement horizontal

Page 20: DAT306 Construire  des applications supportant la montée en charge avec SQL Azure

20

• Combine le partitionnement horizontal et vertical• Ex. ci-dessus :

– Données volumineuses réparties dans Windows Azure Storage (vertical)– Données restantes partitionnées horizontalement dans SQL Azure

Partitionnement hybride

Page 21: DAT306 Construire  des applications supportant la montée en charge avec SQL Azure

21

Scale-Out dans un contexted’applications mutualisées

• Tout mettre dans une BDD ? Trop gros…• Créer une base par ‘locataire’ ? Pas mal…• Sharding Pattern : mieux !!

T1 T2 T3 T4 T5

T6 T7 T8 T9 T10

T11 T12 T13 T14 T15

T16 T17 T18 T19 T20

T1 T2 T3 T4 T5

T6 T7 T8 T9 T10

T11 T12 T13 T14 T15

T16 T17 T18 T19 T20

Toutes mes données sont dans

une seule BDD

Page 22: DAT306 Construire  des applications supportant la montée en charge avec SQL Azure

22

Distribution des données

• Partitionnées• Réparties sur les différentes

machines• Chaque partie est sur une machine• Concerne la plupart des données !

• Centralisées• Accessibles depuis un endroit unique• Accès lecture / écriture… mais pas

trop !

• Répliquées• Copiées sur toutes les machines• Accès en lecture depuis n’importe où• Accès en écriture à limiter…

Data1

Ref

ConfigData2

Ref

Data3

Ref

Data4

Ref

Data5

Ref

Page 23: DAT306 Construire  des applications supportant la montée en charge avec SQL Azure

23

Code applicatif

Logique de répartition des données sur le bon serveur

SQL Azure

Impacts applicatifs (1/2)

Objet A Objet B

Objet C Objet D

Base 1

Base 2

Base 3

Page 24: DAT306 Construire  des applications supportant la montée en charge avec SQL Azure

24

Impacts applicatifs (2/2)

• Adapter le modèle de Sharding à la logique applicative

• Requêtes uni-shard !

• Requêtes multi-shards ?

App

Page 25: DAT306 Construire  des applications supportant la montée en charge avec SQL Azure

25

Démonstration

SQL Sharding

Page 26: DAT306 Construire  des applications supportant la montée en charge avec SQL Azure

26

• Routing• Où est le référentiel ?• Comment le dimensionner et l’utiliser ?

• Gestion des partitions• Fractionner et fusionner sans baisse de disponibilité• Répartition auto des requêtes sur les différents Shards (membres)

• Provisionnement• Elasticité / croissance & diminution

• Administration• Haute disponibilité, mises à jour, maintenance…

Sharding : aujourd’hui et demain…

SQL Azure aujourd’hui

Demain !SQL Azure Federations

Page 27: DAT306 Construire  des applications supportant la montée en charge avec SQL Azure

27

SQL Azure Federation

• Une Federation représente les données fragmentées

• La clé d’une Federation est la valeur déterminant l’acheminement d’un bloc de données

• Unité atomique: toutes les lignes avec la même clé de fédération, toujours ensemble !

• Un Membre d’une Federation (Shard)• Containeur physique pour un

ensemble d’unités atomiques

• La Federation Root correspond à la BDD hébergeant le référentiel de la Fédération

Root

Federation “CustData”

Member: [min, 100]

AUPK=5

AUPK=25

AUPK=35

Member: [100, 488]

AUPK=105

AUPK=235

AUPK=365

Member: [488, max]

AUPK=555

AUPK=2545

AUPK=3565

(Federation Key: CustID)

Page 28: DAT306 Construire  des applications supportant la montée en charge avec SQL Azure

28

Création d’une Federation• Création de la base

racine/référentielle• CREATE DATABASE SalesDB• Emplacement de la cartographie

des partitions• Héberge les données centralisées

• Création de la fédération dans SalesDB• CREATE FEDERATION Orders_Fed

(RANGE BIGINT)• Spécifier le nom et la clé de

fédération• Crée le 1er membre, couvrant

l’intégralité des champs

SalesDB

Federation “Orders_Fed”

(Federation Key: CustID)

Member: [min, max]

Page 29: DAT306 Construire  des applications supportant la montée en charge avec SQL Azure

29

Création du schéma

• Tables de la Fédération• CREATE TABLE orders (…)

FEDERATE ON (customerId)• La valeur de la clé déterminera

le membre (shard)

• Tables de référence• CREATE TABLE zipcodes (…)• L’absence d’instruction

FEDERATE ON indique qu’il s’agit d’une référence

• Tables centralisées• Créées dans la DB référentielle

Federation“Orders_Fed”

(Federation Key: CustID)

Member: [min, max)

SalesDB

orders

Products

zipcode

Page 30: DAT306 Construire  des applications supportant la montée en charge avec SQL Azure

30

Fractionner et fusionner

• Fractionner un membre• Quand trop gros ou trop sensible !• ALTER FEDERATION Orders_Fed

SPLIT (100)• Crée 2 nouveaux membres• Fait à chaud / en ligne !

• Fusionner des membres• Quand trop petit !• ALTER FEDERATION Orders_Fed

MERGE (200)• Créé un nouveau membre et

supprime les anciens

Federation“Orders_Fed”

(Federation Key: CustID)

Member: [min, max]

SalesDB

orders

Products

zipcode

Member: [min, 100]

zipcode

Member: [100, max]

zipcode

orders

orders

Page 31: DAT306 Construire  des applications supportant la montée en charge avec SQL Azure

31

Récapitulons !Scénario “up and down” !

• Jour 2 => Mon business croît ! ALTER FEDERATION Orders_Fed SPLIT AT(1000)

• Jour 3 => Passage à Télématin : GO GO GO ! ALTER FEDERATION Orders_Fed SPLIT AT(100) ALTER FEDERATION Orders_Fed SPLIT AT(200,300,400…)

• Jour 4 => Là c’est sûr, c’est la crise !! ALTER FEDERATION Orders_Fed MERGE AT(100)

• Jour 5 => Encore une baisse : le début de la fin...?? (Rez combat plz) ALTER FEDERATION Orders_Fed MERGE AT(200,300,400…)

Page 32: DAT306 Construire  des applications supportant la montée en charge avec SQL Azure

32

Connexion à la Federation

• Se connecter à l’unité atomique• USE FEDERATION Orders_Fed

(56) WITH FILTERING=ON

• Se connecter au membre entier de la federation• USE FEDERATION Orders_Fed

(56) WITH FILTERING=OFF

Member: [min, 100)

zipcode

AUPK=5

AUPK=25

AUPK=35

App

Page 33: DAT306 Construire  des applications supportant la montée en charge avec SQL Azure

33

Le futur du futur ! (houla)

• Administration de schéma• Déploiement de schéma multi-versions et

administration au sein de membres de la fédération

• Requêtes réparties (fan-out)• Requête unique renvoyant des résultats sur un

nombre important de membres d’une fédération

• Répartitionnement automatique• SQL Azure auto-administre les BD fédérées en les

fractionnant/fusionnant sur la base de règles prédéfinies (temps de réponse des requêtes, taille de la base etc.)

• Clés multi-colonnes

Page 34: DAT306 Construire  des applications supportant la montée en charge avec SQL Azure

34

Le mot de la fin

« Scale Up,Scale-Out,

Scale-Out for more writes ! »

Bob Mar-laid, Kingston, 1976

Page 35: DAT306 Construire  des applications supportant la montée en charge avec SQL Azure

35

Quelques pointeurs…

• Site produit : http://www.microsoft.com/en-us/sqlazure/default.aspx

• Blog SQL Azure Team : http://blogs.msdn.com/b/sqlazure

• MSDN / SQL Azure : http://msdn.microsoft.com/en-us/windowsazure/sqlazure/default

• « Pro SQL Azure » - Scott Klein & Herve Roggero (Apress, 2010)

Page 36: DAT306 Construire  des applications supportant la montée en charge avec SQL Azure

36

Testez la plateforme Windows Azure

Explorez l’infini en 24h au travers de 3 exercices et repartez avec un Pass qui vous permet d’accéder à un vrai compte Windows Azure gratuitement pendant 30 jours.

Les abonnés MSDN bénéficient d’avantages pour tirer profit de la plateforme Windows Azure tels que 750 heures/mois, base de données SQL Azure…

Offre de Découverte “Windows Azure Platform Introductory Special” — Cette offre promotionnelle vous permet d'essayer gratuitement la plateforme Windows Azure. L'abonnement comprend un niveau de base de 25h de calcul/mois, du stockage, du transfert de données...

www.windowsazure.fr

Dès maintenant dans votre kit Windows Azure

Ou rendez-vous sur le stand cloud, C41, pour en récupérer un

Certifié sans

carte bleue

Page 37: DAT306 Construire  des applications supportant la montée en charge avec SQL Azure

37

« Le meilleur des formations Microsoft en France »

Accédez à plus de 90 cours de qualité sur les technologies de développement Microsoft en ligne ou avec un formateur SoftFluent.

Une carte d’accès Gratuite 1 mois vous attend au stand SoftFluent W5 !

4 cours AZURE vous attendent…

Windows Azure Fundamentals

&

Introduction to Windows Azure

SQL Azure

Windows Azure AppFabric

Partenaire exclusif en France

Page 38: DAT306 Construire  des applications supportant la montée en charge avec SQL Azure

38

Devenez « Powered by Windows Azure »

• Pour les développeurs, les éditeurs de logiciels… tous ceux qui créent des logiciels

• Gratuit et en français

• En « libre service »

• Accompagnement en 3 étapes:

• Aide au Développement avec des outils tels que SDK, codes sources, formations techniques…

• Aide au test de compatibilité grâce au kit de certification logicielle mis à disposition gratuitement.

• Visibilité sur le marché: ressources marketing à disposition (PinPoint, logo « Powered by Windows Azure »,…)

Rendez-vous sur le stand cloud, C41, pour en savoir plus

Page 39: DAT306 Construire  des applications supportant la montée en charge avec SQL Azure