Community Tour 2009 Windows Azure Overview

Post on 08-Dec-2014

1,536 views 0 download

description

 

transcript

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