Community Tour 2009 Windows Azure Overview

64
Windows Azure Overview FABIO COZZOLINO DOTNETSIDE 11/12/2009

description

 

Transcript of Community Tour 2009 Windows Azure Overview

Page 1: Community Tour 2009 Windows Azure Overview

Windows Azure Overview

FABIO COZZOLINODOTNETSIDE

11/12/2009

Page 2: Community Tour 2009 Windows Azure Overview

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

Page 3: Community Tour 2009 Windows Azure Overview

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

Page 4: Community Tour 2009 Windows Azure Overview

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?

Page 5: Community Tour 2009 Windows Azure Overview

Agenda

Blobs Queues Tables

Windows Azure Storage

Cloud Development

Windows Azure platform AppFabric

SQL Azure

The road to the Cloud

Page 6: Community Tour 2009 Windows Azure Overview

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

Page 7: Community Tour 2009 Windows Azure Overview

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

Page 8: Community Tour 2009 Windows Azure Overview

Windows Azure Portal – Projects

Page 9: Community Tour 2009 Windows Azure Overview

Windows Azure Portal – Nuovo Servizio

Page 10: Community Tour 2009 Windows Azure Overview

Windows Azure Portal

Page 11: Community Tour 2009 Windows Azure Overview

Windows Azure

Tables

Page 12: Community Tour 2009 Windows Azure Overview

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

Page 13: Community Tour 2009 Windows Azure Overview

Table Storage Concepts

EntitiesTablesAccounts

library

Authors

Books

Email =…Name = …

Email =…Name = …

Pages =…Title = …

Pages =…Title = …

Page 14: Community Tour 2009 Windows Azure Overview

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

Page 15: Community Tour 2009 Windows Azure Overview

Required Entity Properties

PartitionKey & RowKeyIdentificano univocamente una entitàDefiniscono l’ordinamentoUtilizzate per scalare l’applicazione

Timestamp Read onlyOptimistic Concurrency

Page 16: Community Tour 2009 Windows Azure Overview

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

Page 17: Community Tour 2009 Windows Azure Overview

Table Operations

TableCreateQueryDelete

EntitiesInsertUpdate

Merge – Partial Update

Replace – Update entire entity

DeleteQueryEntity Group Transaction (new)

Page 18: Community Tour 2009 Windows Azure Overview

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; } }

Page 19: Community Tour 2009 Windows Azure Overview

Windows Azure Tables

Demo

Page 20: Community Tour 2009 Windows Azure Overview

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

Page 21: Community Tour 2009 Windows Azure Overview

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 …

Page 22: Community Tour 2009 Windows Azure Overview

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

Page 23: Community Tour 2009 Windows Azure Overview

Windows Azure

Queues

Page 24: Community Tour 2009 Windows Azure Overview

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

Page 25: Community Tour 2009 Windows Azure Overview

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

Page 26: Community Tour 2009 Windows Azure Overview

Queue Storage Concepts

Messages

QueuesAccounts

fabstorage

bookmsgs

bookId: 1http://...

bookId: 2 http://...

http://...

http://...

Page 27: Community Tour 2009 Windows Azure Overview

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)

Page 28: Community Tour 2009 Windows Azure Overview

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

Page 29: Community Tour 2009 Windows Azure Overview

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

Page 30: Community Tour 2009 Windows Azure Overview

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

Page 31: Community Tour 2009 Windows Azure Overview

Windows Azure Queues

Demo

Page 32: Community Tour 2009 Windows Azure Overview

Windows Azure

Blobs

Page 33: Community Tour 2009 Windows Azure Overview

Windows Azure Blob Storage

Fornisce la possibilità di memorizzare qualsiasi tipo filesCapacità di gestione dei blocchiDue tipologie di Blobs

BlockBlobPageBlob (new)

Page 34: Community Tour 2009 Windows Azure Overview

Blob Storage Concepts

BlobContainerAccount

books

covers

PIC01.JPG

PIC02.JPG

previews BOOK1.XPS

Page 35: Community Tour 2009 Windows Azure Overview

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

Page 36: Community Tour 2009 Windows Azure Overview

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

Page 37: Community Tour 2009 Windows Azure Overview

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)

Page 38: Community Tour 2009 Windows Azure Overview

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

Page 39: Community Tour 2009 Windows Azure Overview

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

Page 40: Community Tour 2009 Windows Azure Overview

Windows Azure Blobs

Demo

Page 41: Community Tour 2009 Windows Azure Overview

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

Page 42: Community Tour 2009 Windows Azure Overview

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

Page 43: Community Tour 2009 Windows Azure Overview

Windows Azure

Hosted Services

Page 44: Community Tour 2009 Windows Azure Overview

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

Page 45: Community Tour 2009 Windows Azure Overview

Web vs Worker Role

Web Role

IIS Host

Your Code

Worker RoleSystem Host

Your Code

Page 46: Community Tour 2009 Windows Azure Overview

Roles

Role

Code Configuration

Page 47: Community Tour 2009 Windows Azure Overview

Development Fabric and Storage

Local Machine

Windows Azure Simulation Environment

Development Fabric

Development Storage

Page 48: Community Tour 2009 Windows Azure Overview

Sviluppo Web in-the-cloud

Demo

Page 49: Community Tour 2009 Windows Azure Overview

Application Deployment

Page 50: Community Tour 2009 Windows Azure Overview

Application Deployment

Page 51: Community Tour 2009 Windows Azure Overview

Windows Azure

AppFabric

Page 52: Community Tour 2009 Windows Azure Overview

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

Page 53: Community Tour 2009 Windows Azure Overview

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)

Page 54: Community Tour 2009 Windows Azure Overview

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

Page 55: Community Tour 2009 Windows Azure Overview

Windows Azure platform AppFabric

Demo

Page 56: Community Tour 2009 Windows Azure Overview

Windows Azure

SQL Azure

Page 57: Community Tour 2009 Windows Azure Overview

SQL Azure

E’ praticamente SQL Server portato in-the-cloudAccedo al database utilizzando TDS (Tabular Data Stream)

Page 58: Community Tour 2009 Windows Azure Overview

SQL Azure

Page 59: Community Tour 2009 Windows Azure Overview

SQL Azure

Page 60: Community Tour 2009 Windows Azure Overview

SQL Azure

Page 61: Community Tour 2009 Windows Azure Overview

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

Page 62: Community Tour 2009 Windows Azure Overview

Windows Azure, The Next Few Weeks

CTP with launch feature setNow

Jan

Feb

> Commercial platform

> Paid usage

Page 63: Community Tour 2009 Windows Azure Overview

Domande?

Page 64: Community Tour 2009 Windows Azure Overview

GRAZIE