Web Role SQL Azure (50 GB) SQL Azure (50 GB) É melhor ter 50 bancos de 1GB do que 1 banco de 50GB!

Post on 07-Apr-2016

220 views 2 download

Transcript of Web Role SQL Azure (50 GB) SQL Azure (50 GB) É melhor ter 50 bancos de 1GB do que 1 banco de 50GB!

Criando aplicações de alta escala e baixa latência com a plataforma Windows AzureCOS402

Bruno Akira MinehiraConsultorMicrosoftbruno.minehira@microsoft.com

Rafael GodinhoArquiteto de Soluções – Windows AzureMicrosofthttp://blogs.msdn.com/rafaelgodinho@rafaelgodinho

Assumimos que...

Você já conhece Windows AzureWeb/Worker RolesSQL AzureWindows Azure StorageWindows Azure Diagnostics

Você já fez deploy de uma aplicação no Windows Azure

Agenda

Baixa latência e alta escalaDefiniçãoOrganização do processamentoOrganização dos dados

DemosPerguntas?

Baixa Latência e Alta Escala

Definição de Baixa Latência e Alta Escala

Base de usuários global com baixo tempo de respostaFaz scale out para tratar requisições concorrentesAlto uso de recursos computacionais (CPU, memória, disco, rede, etc)

Qual o problema?

Web RoleWeb Role

Web Role SQL Azure

(50 GB)

É melhor ter 50 bancos de 1GB do que 1 banco de 50GB!

Organização do Processamento

Processamento Síncrono

Request #1

Front End

Thread Thread

Processamento #1SQL Azure

WA Storage

Middle Tier

Processamento #1Response #1Bloqueada

Request #2 Esperando…

Processamento Assíncrono

Request #1

Front End

Thread Thread

Processamento #1SQL Azure

WA Storage

Middle Tier

Processamento #1Response #1

ContextRequest #2

Response #2

Processamento #2

Processamento #2

Lembrete...Todas as camadas devem ser assíncronas

Se não o gargalo somente muda de lugarSuporte nativo na plataforma

ADO.NETLINQ to SQLADO.NET Entity FrameworkWCFWindows Azure Storage.NET 4.0 Async CTP

Exemplo Async CTPvoid UploadImage(Stream image, CloudBlob destBlob){ AddImageToSQLAzure(destBlob.Uri); UploadImageToBlob(image, destBlob);}

async Task UploadImageAsync(Stream image, CloudBlob destBlob){ var t1 = AddImageToSQLAzureAsync(destBlob.Uri); var t2 = UploadImageToBlobAsync(image, destBlob); await TaskEx.WhenAll(t1, t2);}

Exemplo Async CTPvoid UploadImageToBlob (Stream image, CloudBlob destBlob){ destBlob.UploadFromStream(image);}

async Task UploadImageToBlobAsync (Stream image, CloudBlob destBlob){ await Task.Factory.FromAsync<Stream>( destBlob.BeginUploadFromStream, destBlob.EndUploadFromStream, image, null);}

Padrão Assíncrono no Windows Azure

Web Role Worker Role

Storage

Worker RoleWorker Role

Web Role

Worker Role

Queue

Dados do Ponto de Vista do Cliente

Cliente Acessando Dados

Saia do caminho sempre que possível Conteúdo estático e público Acesso ao Blob Storage

Media (imagens, vídeo)Binários (XAP, MSI, ZIP)

Role BlobStorage

Role

Shared Access SignaturesAcesso à conteúdo privado

Válido por tempo ou revogado quando necessário

Também funciona para escrita

RoleChave

Blob Storage

X Blob privado(ex.: conteúdo pago)

1. Sou o Bob e quero acessar X 2. Role gera a

Shared Access Signature (SAS)

3. Role envia a SAS via HTTPS

4. Bob utiliza a SAS para acessar X direto do Blob Storage

Conteúdo Próximo do UsuárioWindows Azure Content Delivery Network

Blob Storage

X

CDN

X

Poucos saltos

Muitos saltos

Ponto de Presença (POP) mais próximo

Resolução do POP mais próximo por DNS

Web RoleWeb Role

Processamento Próximo do Usuário

Windows Azure Traffic Manager

Traffic Manager

MonitoraçãoPolíticas

app.cloudapp.net app-us.cloudapp.net

app-eur.cloudapp.net

app-asia.cloudapp.net

Servidor Gerenciando os Dados

Melhor Local de Armazenamento?

Depende SQL Azure – Dados relacionaisBlob – Binários grandesTable – Informação estruturadaQueue – Dados temporários de processamento

Não excludentes

Particionamento Horizontal

Particionamento Vertical

Particionamento Híbrido

SQL Azure Tables BLOBs

Cache em MemóriaWindows Azure AppFabric Caching

Role

Table Storage

SQL AzureC

ache Table

Storage

SQL Azure

CL

A camada de cache ajudará na redução da latência

demo

Processamento AssíncronoParticionamentoCDNCaching

Table

SíncronoAssíncrono

Assíncrono

ResumoBlob Storage

Chave

Privado

PúblicoCDN Público

Table

SQL Azure

AppFabric Caching

SQL Azure

SQL Azure

Traffic Mgr

Web App

ReferênciasWindows Azure Platform Training Kit

http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=8396

Centro de Treinamento Windows Azurehttp://msdn.microsoft.com/pt-br/windowsazure/

Recursos

Recursos para IT Pros

Recursos para Desenvolvedores

http://technet.microsoft.com/pt-br

http://msdn.microsoft.com/pt-br

Getthefreemobileappforyourphonehttp://gettag.mobi

Getthefreemobileappforyourphonehttp://gettag.mobi

Não esqueça de preencher sua

avaliação onlinewww.teched.com.br/

avaliacao

Getthefreemobileappforyourphonehttp://gettag.mobi

perguntas?

Bruno Akira MinehiraConsultorMicrosoftbruno.minehira@microsoft.com

Rafael GodinhoArquiteto de Soluções – Windows AzureMicrosofthttp://blogs.msdn.com/rafaelgodinho@rafaelgodinho

© 2011 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.

The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after

the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.