Community Tour 2009 Windows Azure Overview
-
Upload
fabio-cozzolino -
Category
Technology
-
view
1.536 -
download
0
description
Transcript of Community Tour 2009 Windows Azure Overview
Windows Azure Overview
FABIO COZZOLINODOTNETSIDE
11/12/2009
Cloud computing
Qualcosa da qualche parteLetteralmente “nuvola”
Perchè ne abbiamo bisogno?Applicazioni ad alta scalabilità in grado di accettare un alto numero di utenti contemporaneiZero DowntimeLoad Balancing automatico
Platform as a ServiceNon mi preoccupo dell’hardware
Pago quello che consumo
Cos’è Windows Azure?
“A framework that allows you to scale from 10 users to 10 million users without additional coding” Ray Ozzie - Microsoft Chief Software Architect
Una piattaforma di:Hosting di ApplicazioniLights-out service managementStorage ad alta scalabilità
E’ progettato per:Ridurre i costi totali di gestione
E’ pronto per:Applicazioni Business-criticalAdozione di pattern complessi
Cos’è Windows Azure?
Agenda
Blobs Queues Tables
Windows Azure Storage
Cloud Development
Windows Azure platform AppFabric
SQL Azure
The road to the Cloud
Windows Azure Storage
TablesFornisce uno storage strutturato dove una tabella è composta da un set di entità ed ogni entità da un set di proprietà
QueuesFornisce uno storage affidabile e la possibilità di inviare e ricevere messaggi per le nostre applicazioni
BlobsFornisce un’interfaccia semplificata per memorizzare files ed eventualmente metadati associati
DrivesFornisce un volume di dati NTFS duraturo per l’utilizzo in applicazioni Windows Azure
Richiedere la creazione di uno Storage Account univoco
Possibilità di scegliere la posizione geografica“US Anywhere”, “US North Central”, “US South Central”,
Can co-locate storage account with compute accountCreazione di una secret key a 256 bit
Capacità di uno Storage Account CapacityFino a 100 TB per Storage AccountLimit di 5 storage accounts per subscription
Windows Azure Storage Account
Windows Azure Portal – Projects
Windows Azure Portal – Nuovo Servizio
Windows Azure Portal
Windows Azure
Tables
Windows Azure Tables
Structured StorageTabelle ad alta scalabilità
Billioni di entità (rows) e TBs di datiPossibilità di utilizzo di più server al crescere delle richieste
Highly Available & DurableI dati vengono replicati nello stesso data store e (da febbraio) in datastore geograficamente distribuiti
Semplicitià di utilizzo delle APIADO.NET Data Services – .NET 3.5 SP1
Classi .NET e LINQREST
Table Storage Concepts
EntitiesTablesAccounts
library
Authors
Books
Email =…Name = …
Email =…Name = …
Pages =…Title = …
Pages =…Title = …
Table Data Model
TableUno Storage Account può creare più tabelleLo scope di una tabella è relativo all’account di appartenzaSet di entitità (i.e. rows)
EntitySet di proprietà (colonne)Required properties
PartitionKey e RowKey
Identificano univocamente una entità
Definiscono l’ordinamento
Utilizzate per scalare l’applicazione
Timestamp
Read only
Optimistic Concurrency
Required Entity Properties
PartitionKey & RowKeyIdentificano univocamente una entitàDefiniscono l’ordinamentoUtilizzate per scalare l’applicazione
Timestamp Read onlyOptimistic Concurrency
PartitionKey e Partitions
PartitionKeyUtilizzata per raggruppare le entità in una partizione
Una partizione di tabelleRaggruppa tutte le entità con la stessa partition keySingola unità di scalabilitàControllo del posizionamento delle entityRow key fornisce l’univocità all’interno di una partizione
Table Operations
TableCreateQueryDelete
EntitiesInsertUpdate
Merge – Partial Update
Replace – Update entire entity
DeleteQueryEntity Group Transaction (new)
Table Schema
Define the schema as a .NET class [DataServiceKey("PartitionKey", "RowKey")] public class Book { /// <summary> /// Category is the partition key /// </summary> public string PartitionKey { get; set; }
/// <summary> /// Title is the row key /// </summary> public string RowKey { get; set; }
public DateTime Timestamp { get; set; } public string Author { get; set; } public int Pages { get; set; } }
Windows Azure Tables
Demo
Scalable Partition
> A cosa mi servono diverse PartitionKeys?> Inserisco l’Account name come Partition
Key > Inserisco il titolo di un libro come RowKey,
mi serve per ordinare la tabella> La categoria va in una proprietà separata
> Ma…è scalabile?
PartitionKey(Account name)
RowKey(Title)
Genere …
books 1984 Fantapolitica
…
books Angeli e Demoni Azione …
books Chiedi alla polvere
Romanzo …
books Guerra eterna Fantascienza
…
… … … …
books Ubik Fantascienza
…
Server A
Solution 1
> Singola partizione – Tutta la tabella è su un unico server
> Di conseguenza tutte le richieste verranno gestite da un unico server
> …chiaramente non è scalabile
ClientClient Request
Request
Request
Request
PartitionKey(Account name)
RowKey(Title)
…
books 1984 …
books Angeli e Demoni …
books Chiedi alla polvere
…
books Guerra eterna …
… … …
books Ubik …
PartitionKey(Category)
RowKey (Title)
Azione Angeli e Demoni
… …
Azione Il codice da Vinci
… …
Fantapolitica
1984
… …
Fantascienza
Guerra Eterna
Fantascienza
Ubik
… …
Romanzo Chiedi alla polvere
… …
… …
Thriller legale
Testimone inconsapevole
PartitionKey(Category)
RowKey (Title)
Azione Angeli e Demoni
… …
Azione Il codice da Vinci
… …
Fantapolitica
1984
… …
Fantascienza
Guerra Eterna
Fantascienza
Ubik
… …
Romanzo Chiedi alla polvere
… …
… …
Thriller legale
Testimone inconsapevole
Solution 2
> Partizioniamo per categoria> Consentiamo al sistema di bilanciare il carico
delle partizioni più richieste> E’ meglio …
ClientClient Request
Server A
Request
Request
Request
Server B
Request
Request
Request
Request
Windows Azure
Queues
Windows Azure Queues
Le code risultano efficienti, ad alta disponibilità e consentono l’invio sicuro ed affidabile di messaggi
Semplice ed asincronoUn messaggio può essere processato almeno una volta
Accesso via REST
Queue Operations
QueueCreate QueueDelete QueueList QueuesGet/Set Queue Metadata
MessagesAdd Message (i.e. Enqueue Message)Get Message(s) (i.e. Dequeue Message)Peek Message(s)Delete Message
Queue Storage Concepts
Messages
QueuesAccounts
fabstorage
bookmsgs
…
bookId: 1http://...
bookId: 2 http://...
http://...
http://...
Account, Queues and Messages
Un Account può creare più codeIl nome di una coda è relazionato all’account (scope)
Una coda contiene messaggiNessun limite di messaggi presenti in una codaE’ importante impostare un limite per la scadenza di un messaggio
MessagesDimensione <= 8 KBUtilizzare i blob o le entities per memorizzare dati di dimensioni maggioriViene conteggiato il numero di tentativi di lettura dalla coda (dequeue)
21
11
C1
C2
Removing Poison Messages
11
21
340
Producers Consumers
P2
P1
30
2. GetMessage(Q, 30 s) msg 2
1. GetMessage(Q, 30 s) msg 1
11
21
10
20
C1
C2
Removing Poison Messages
340
Producers Consumers
P2
P1
11
21
2. GetMessage(Q, 30 s) msg 23. C2 consumed msg 24. DeleteMessage(Q, msg 2)7. GetMessage(Q, 30 s) msg 1
1. GetMessage(Q, 30 s) msg 15. C1 crashed
11
21
6. msg1 visible 30 s after Dequeue30
12
11
12
C1
C2
Removing Poison Messages
340
Producers Consumers
P2
P1
12
2. Dequeue(Q, 30 sec) msg 23. C2 consumed msg 24. Delete(Q, msg 2)7. Dequeue(Q, 30 sec) msg 18. C2 crashed
1. Dequeue(Q, 30 sec) msg 15. C1 crashed10. C1 restarted11. Dequeue(Q, 30 sec) msg 112. DequeueCount > 213. Delete (Q, msg1)
12
6. msg1 visible 30s after Dequeue9. msg1 visible 30s after Dequeue
30
13
12
13
Windows Azure Queues
Demo
Windows Azure
Blobs
Windows Azure Blob Storage
Fornisce la possibilità di memorizzare qualsiasi tipo filesCapacità di gestione dei blocchiDue tipologie di Blobs
BlockBlobPageBlob (new)
Blob Storage Concepts
BlobContainerAccount
books
covers
PIC01.JPG
PIC02.JPG
previews BOOK1.XPS
Blob Storage ConceptsAdding Blocks and Pages
Blocks or
PagesBlobContain
erAccount
books
covers
PIC01.JPG
PIC02.JPG
previews BOOK1.XPS
Block or Page 1
Block or Page 2
Block or Page 3
Blob Containers
Possibilità di avere diversi blob containers
Blob ContainerUn container è un set di blobsImpostazione delle politiche di accesso a livello di container
Accessibilità privata o pubblica
Possibilità di associare metadatiCoppie nome - valoreFino a 8KB per container
Elenco dei blobs in un container
Funzioni e caratteristiche dei Blobs
Store Large Objects (100s of GBs in size)
Possibilità di associare metadatiCoppie nome – valoreFino ad 8KB per blobSet e Get contestuale o separato
Standard REST InterfacePutBlob
New blob (sostituisce il blob esistente)
GetBlobGet blob (o un range specifico)
DeleteBlobCopyBlob (new)SnapshotBlob (new)LeaseBlob (new)
Composizione dell’indirizzo dei Blobs
Blob URLhttp://<Account>.blob.core.windows.net/<Container>/
<BlobName>
Example: Storage Account – fabstorageContainer – imagesBlobName – holidays/sea.tiffhttp://fabstorage.blob.core.windows.net/images/holidays/sea.tiff
Copia e Snapshot dei Blob (new)
CopyBlobCopia nello stesso storage account Rename (copia e rimuovi)
SnapshotBlobPuò essere utilizzato per creare backup o versioni di blobCreazione di uno snapshot
Specifichiamo il blob con il parametro comp=snapshothttp://account.blob.core.windows.net/images/sea.jpg?comp=snapshot
Recupero con timestamphttp://account.blob.core.windows.net/images/pic1.jpg?snapshot=<DateTime>
StorageVengono memorizzate solo le modifiche del blob
Windows Azure Blobs
Demo
Content Delivery Network (new)
Accesso ai blobs utilizzando il proprio nome di dominio:
http://account.blob.core.windows.net/http://market.cohowinery.com/http://market.cohowinery.com/images/pic1.jpg
Registrazione del nome di dominio attraverso il Windows Azure Developer Portal:
Viene effettuato un processo di validazione
Accesso esclusivamente via HTTPE’ possibile registrare solo un nome di dominio per storage account
Windows Azure XDrive
Fornisce un volume NTFS per l’utilizzo in applicazioni Windows Azure
Affidabilità e mantenimento dei dati in caso di system failure
E’ sostanzialmente un PageBlob formattato con NTFS e disponibile come VHDDisponibile da Febbraio 2010
Windows Azure
Hosted Services
From “On-Premises” to “in-the-cloud”
Le attuali applicazioni vengono definite “On-Premises”Se abbiamo ben sviluppato le nostre applicazioni il passaggio risulterà “quasi” indolorePosso progettare una nuova applicazione per Azure utilizzando qualsiasi tecnologia
Qualsiasi tecnologia Web (Silverlight, ASP.NET, ASP.NET MVC, etc...)Con le applicazioni desktop posso utilizzare Windows Azure Storage o SQL AzureHybrid Cloud Application con Windows Azure e AppFabric
Web vs Worker Role
Web Role
IIS Host
Your Code
Worker RoleSystem Host
Your Code
Roles
Role
Code Configuration
Development Fabric and Storage
Local Machine
Windows Azure Simulation Environment
Development Fabric
Development Storage
Sviluppo Web in-the-cloud
Demo
Application Deployment
Application Deployment
Windows Azure
AppFabric
Windows Azure platform AppFabric
Access Control ServiceServizio per il controllo degli accessiGestione dell’autenticazioneRilascio di token di autorizzazioneGestione di regole
Service BusOffre un feed ATOM dei servizi in ascoltoRisolve i problemi di connettività tra client geograficamente distribuiti
AppFabric - Access Control Service
Tre modalità di rilascio di tokenPlaintext
Nessuna criptazione richiesta
Signed tokenSemplice scenario di delega
Richiesta firma HMAC SHA 256
SAML bearer tokenConsente l’integrazione in ambienti enterprise
L’ACS ritorna sempre lo stesso tipo di token:Simple Web Token (SWT)
Esempio di SWT
role=Admin%2cUser&customerName=Contoso%20Corporation&Issuer=https%3a%2f%2fadatum.accesscontrol.windows.net%2fWRAPv0.8&Audience=http%3a%2f%2fadatum%2fbillprint&ExpiresOn=1255912922&HMACSHA256=yuVO%2fwc58%2ftYP36%2fDM1mS%2fHr0hswpsGTWwgfvAbpL64%3d
Windows Azure platform AppFabric
Demo
Windows Azure
SQL Azure
SQL Azure
E’ praticamente SQL Server portato in-the-cloudAccedo al database utilizzando TDS (Tabular Data Stream)
SQL Azure
SQL Azure
SQL Azure
Windows Azure Tools
Azure Storage Explorerhttp://azurestorageexplorer.codeplex.com/
Cloud Storage Studiohttp://www.cerebrata.com/Products/CloudStorageStudio/
CloudBerry Explorer for Azure Blob Storagehttp://www.cloudberrylab.com
Access Control Service Management Browser
http://code.msdn.microsoft.com/acmbrowser
Windows Azure, The Next Few Weeks
CTP with launch feature setNow
Jan
Feb
> Commercial platform
> Paid usage
Domande?
GRAZIE