52
SETEMBRO, 2010 | SÃO PAULO

SETEMBRO, 2010 | SÃO PAULO. Otavio Pecego Coelho Arquiteto Chefe Microsoft Brasil [email protected] Projetando Aplicativos

Embed Size (px)

Citation preview

Page 1: SETEMBRO, 2010 | SÃO PAULO. Otavio Pecego Coelho Arquiteto Chefe Microsoft Brasil  otavioc@microsoft.com Projetando Aplicativos

SETEMBRO, 2010 | SÃO PAULO

Page 2: SETEMBRO, 2010 | SÃO PAULO. Otavio Pecego Coelho Arquiteto Chefe Microsoft Brasil  otavioc@microsoft.com Projetando Aplicativos

Otavio Pecego CoelhoArquiteto ChefeMicrosoft Brasilhttp://blogs.msdn.com/[email protected]

Projetando Aplicativos para a Escalabilidade - Tirando o melhor da Plataforma Windows Azure

CÓDIGO DA SESSÃO: COS304

Page 3: SETEMBRO, 2010 | SÃO PAULO. Otavio Pecego Coelho Arquiteto Chefe Microsoft Brasil  otavioc@microsoft.com Projetando Aplicativos

Agenda

Provisionamento DinâmicoArmazenamento de EstadosUpgrade de VersõesShardingSaaS: Personalização e Isolamento de DadosCacheDistância Código-StorageFilasContinuaçõesMonitoraçãoGrid ComputingPequenos PatternsPráticas para a Diminuição de Custos

Page 4: SETEMBRO, 2010 | SÃO PAULO. Otavio Pecego Coelho Arquiteto Chefe Microsoft Brasil  otavioc@microsoft.com Projetando Aplicativos

Provisionamento Dinâmico

Page 5: SETEMBRO, 2010 | SÃO PAULO. Otavio Pecego Coelho Arquiteto Chefe Microsoft Brasil  otavioc@microsoft.com Projetando Aplicativos

Provisionamento Dinâmico

Via PortalVia Visual Studiocsmanage /view-deployment /hosted-service:dpe_demos /slot:staging /view-deployment /name:dpe_demosBuild automático: http://blogs.msdn.com/b/domgreen/archive/2009/09/29/deploying-to-the-cloud-as-part-of-your-daily-build.aspx

Page 6: SETEMBRO, 2010 | SÃO PAULO. Otavio Pecego Coelho Arquiteto Chefe Microsoft Brasil  otavioc@microsoft.com Projetando Aplicativos

Provisionamento viacsmanage.exe

Page 7: SETEMBRO, 2010 | SÃO PAULO. Otavio Pecego Coelho Arquiteto Chefe Microsoft Brasil  otavioc@microsoft.com Projetando Aplicativos

Armazenando Estados

A B A?

Page 8: SETEMBRO, 2010 | SÃO PAULO. Otavio Pecego Coelho Arquiteto Chefe Microsoft Brasil  otavioc@microsoft.com Projetando Aplicativos

Armazenando Estados

Page 9: SETEMBRO, 2010 | SÃO PAULO. Otavio Pecego Coelho Arquiteto Chefe Microsoft Brasil  otavioc@microsoft.com Projetando Aplicativos

Armazenando Estados

P1 P2

Page 10: SETEMBRO, 2010 | SÃO PAULO. Otavio Pecego Coelho Arquiteto Chefe Microsoft Brasil  otavioc@microsoft.com Projetando Aplicativos

Armazenando Estados

s ss

Page 11: SETEMBRO, 2010 | SÃO PAULO. Otavio Pecego Coelho Arquiteto Chefe Microsoft Brasil  otavioc@microsoft.com Projetando Aplicativos

Session State

2) Table (Table Session Size: 64K Max)1) Table Storage (Table + Blob)

3) SQL Azure

Page 12: SETEMBRO, 2010 | SÃO PAULO. Otavio Pecego Coelho Arquiteto Chefe Microsoft Brasil  otavioc@microsoft.com Projetando Aplicativos

Resumo (serve para Membership, Role, Profile, Session State)

Capacidade Azure Table SQL AzureElasticidade Sim. Limitado pelos 50GBs Preço Variável:

Transação + Armazenamento

Custo fixo ao mês

Remoção quando a sessão termina

Não. Implementar um WorkerRole para a limpeza

Não. Implementar um WorkerRole para a limpeza

Desempenho Melhor que SQL quando muitos usuários oncorrentes

Melhor que SQL quando poucos usuários oncorrentes

Escalabilidade Maior escalabilidade Escalabilidade via particionamento

Referências http://blogs.msdn.com/b/jnak/archive/2009/11/19/using-the-sample-windows-azure-asp-net-providers.aspx

http://blogs.msdn.com/b/sqlazure/archive/2010/08/04/10046103.aspx

Page 13: SETEMBRO, 2010 | SÃO PAULO. Otavio Pecego Coelho Arquiteto Chefe Microsoft Brasil  otavioc@microsoft.com Projetando Aplicativos

Upgrades de Versões

Page 14: SETEMBRO, 2010 | SÃO PAULO. Otavio Pecego Coelho Arquiteto Chefe Microsoft Brasil  otavioc@microsoft.com Projetando Aplicativos

Utilizando o Upgrade Domain (UD)

Passo 1: Upgrade dos roles que entendem ambas as versõesStep 2: Instale a nova versão

Web Role

Cache Role

UD0

Web Role

Cache Role

UD1

Web Role

Cache Role

UD2

Web Role

Cache Role

UD0

Web Role

Cache Role

UD1

Web Role

Cache Role

UD2

Web Role

Web Role

Web Role

Versões Binárias:

Versão1

Versão 1.5

Versão 2

Versões de Protocolo:

Versão 1

Versão 2

Cache Role

Cache Role

Cache Role

Page 15: SETEMBRO, 2010 | SÃO PAULO. Otavio Pecego Coelho Arquiteto Chefe Microsoft Brasil  otavioc@microsoft.com Projetando Aplicativos

Mudança de Esquema – Upgrade p/ Cliente V1.5

Cliente V1.5Tem a classe com a nova propriedadeSe a entidade está na versão V1

Guarda o valor default na nova propriedadeNão faça upgrade da versão da entidade

Cliente V1Ignora a nova propriedade, uma vez que está usando “IgnoreMissingProperties”

Partition Key

Row Key

Version ….. Property N

PK1 RK1 1

PK2 RK2 1

……. ……. 1……. ……. 1……. ……. 1

ClienteV1

ClienteV1

ClienteV1.5

NovaProperty

Default

ClienteV1.5

UD0

UD1

Page 16: SETEMBRO, 2010 | SÃO PAULO. Otavio Pecego Coelho Arquiteto Chefe Microsoft Brasil  otavioc@microsoft.com Projetando Aplicativos

Schema Change – Upgrade to V2 Cliente

Cliente V2Faz update das linhas p/ V2 (no seu primeiro uso) e começa a colocar valores reais nas novas propriedades

Cliente V1.5Se a entidade está na versão V1

Guarda o valor default na nova propriedade e não muda a versãoSe a entidade está na versão V2

Usa o novo valor e faz o seu update

Partition Key

Row Key

Version ….. Property N

PK1 RK1 1

PK2 RK2 1

……. ……. 1……. ……. 1……. ……. 1

ClienteV1

ClienteV1

ClienteV1.5

ClienteV1.5

NovaProperty

Default2 Valor1

ClienteV2

ClienteV2Default

Valor2

UD0

UD1

Page 17: SETEMBRO, 2010 | SÃO PAULO. Otavio Pecego Coelho Arquiteto Chefe Microsoft Brasil  otavioc@microsoft.com Projetando Aplicativos

Sharding

P1 P2 P3

Page 18: SETEMBRO, 2010 | SÃO PAULO. Otavio Pecego Coelho Arquiteto Chefe Microsoft Brasil  otavioc@microsoft.com Projetando Aplicativos

Sharding

Page 19: SETEMBRO, 2010 | SÃO PAULO. Otavio Pecego Coelho Arquiteto Chefe Microsoft Brasil  otavioc@microsoft.com Projetando Aplicativos

Multi-Inquilino – Isolamento de Dados

Cliente A Cliente B Cliente C

CREATE DATABASE ClienteX AS COPY OF [source_server_name.] DBTemplate

Open Cliente(X) Open Cliente(X) Open Cliente(X)

Page 20: SETEMBRO, 2010 | SÃO PAULO. Otavio Pecego Coelho Arquiteto Chefe Microsoft Brasil  otavioc@microsoft.com Projetando Aplicativos

Multi-Inquilinos - Personalização

TenantID

Inquilino

int

TenantName nvarchar

EmployeeId

Employee

int

FirstName nvarchar

LastName nvarchar

CustomizationID

Customization

int

Value nvarchar

TypeID

Type

int

Name nvarchar

CLRType nvarchar

1

*

*

1

*

1

*

*

Page 21: SETEMBRO, 2010 | SÃO PAULO. Otavio Pecego Coelho Arquiteto Chefe Microsoft Brasil  otavioc@microsoft.com Projetando Aplicativos

Multi-Inquilinos - Personalização

TenantID

Inquilino

1

TenantName Brazil

EmployeeId

Employee

1

FirstName Luis

LastName Lula

CustomizationID

Customization

1

Value 06734-001

TypeID

Type

1

Name

CLRType string

1

*

*

1

*

1

*

*

CodPostal

Page 22: SETEMBRO, 2010 | SÃO PAULO. Otavio Pecego Coelho Arquiteto Chefe Microsoft Brasil  otavioc@microsoft.com Projetando Aplicativos

Multi-Inquilinos - Personalização

TenantID

Inquilino

2

TenantName USA

EmployeeId

Employee

1

FirstName Barak

LastName Obama

CustomizationID

Customization

2

Value 20500

TypeID

Type

2

Name

CLRType string

1

*

*

1

*

1

*

*

ZipCode

Esquema Fixo

Se aplica a Todos

Inquilinos

Customizável

Por Inquilino

Pode ser p/ ambos

inquilinos

Page 23: SETEMBRO, 2010 | SÃO PAULO. Otavio Pecego Coelho Arquiteto Chefe Microsoft Brasil  otavioc@microsoft.com Projetando Aplicativos

Personalização

Page 24: SETEMBRO, 2010 | SÃO PAULO. Otavio Pecego Coelho Arquiteto Chefe Microsoft Brasil  otavioc@microsoft.com Projetando Aplicativos

Cache

Ready OnlyWindows Azure DrivesWindows Azure Content Delivery Network

ReadWrite:http://cloudcache.codeplex.com/http://code.msdn.microsoft.com/winazurememcached/Release/ProjectReleases.aspx?ReleaseId=3551Futuro: AppFabric Cache

Page 25: SETEMBRO, 2010 | SÃO PAULO. Otavio Pecego Coelho Arquiteto Chefe Microsoft Brasil  otavioc@microsoft.com Projetando Aplicativos

Lease Snapshot

Windows Azure Drives

Page 26: SETEMBRO, 2010 | SÃO PAULO. Otavio Pecego Coelho Arquiteto Chefe Microsoft Brasil  otavioc@microsoft.com Projetando Aplicativos

Windows Azure Content Delivery Network

Windows Azure Blob Service

pic1.jpg

Content Delivery Network

Localização do CDN

Localização do CDN Localização do CDN

Para habilitar o CDN: Registre CDN via Dev Portal Container público

GEThttp://guid01.vo.msecnd.net/images/pic.1jpg

http://sally.blob.core.windows.net/images/pic1.jpg

http://sally.blob.core.windows.net/

http://guid01.vo.msecnd.net/

pic1.jpg

Não disponível!

pic1.jpg

TTL

Page 27: SETEMBRO, 2010 | SÃO PAULO. Otavio Pecego Coelho Arquiteto Chefe Microsoft Brasil  otavioc@microsoft.com Projetando Aplicativos

Distância Código & Dados – Code Far

Page 28: SETEMBRO, 2010 | SÃO PAULO. Otavio Pecego Coelho Arquiteto Chefe Microsoft Brasil  otavioc@microsoft.com Projetando Aplicativos

Distância Código & Dados – Code Near

Page 29: SETEMBRO, 2010 | SÃO PAULO. Otavio Pecego Coelho Arquiteto Chefe Microsoft Brasil  otavioc@microsoft.com Projetando Aplicativos

Filas e Processamento em Background

Page 30: SETEMBRO, 2010 | SÃO PAULO. Otavio Pecego Coelho Arquiteto Chefe Microsoft Brasil  otavioc@microsoft.com Projetando Aplicativos

Melhores Práticas para Filas

ISerializableIdempotênciaMensagens Envenenadas

Page 31: SETEMBRO, 2010 | SÃO PAULO. Otavio Pecego Coelho Arquiteto Chefe Microsoft Brasil  otavioc@microsoft.com Projetando Aplicativos

OBS: Nem sempre precisamos de Work Roles

Page 32: SETEMBRO, 2010 | SÃO PAULO. Otavio Pecego Coelho Arquiteto Chefe Microsoft Brasil  otavioc@microsoft.com Projetando Aplicativos

Escalando a Vazão das Filas

Junte itens de trabalho em Blobsagrupe vários itens de trabalho num BlobEnfilere uma mensagem que aponta para o Blob

OUUse Múltiplas Filas

Job ManagerResponsável por adicionar e remover filas

WorkersPrecisam determinar que filas usar

Escolha aleatória via uma Lista de Filas Ou escolha centralizada no Job Manager

Page 33: SETEMBRO, 2010 | SÃO PAULO. Otavio Pecego Coelho Arquiteto Chefe Microsoft Brasil  otavioc@microsoft.com Projetando Aplicativos

Continuação para itens que rodam durante muito tempo

Diminuir retrabalho em falhasAlgoritmo

Quebre o item de trabalho em pedaços menores e repetitivosGuarde o progresso depois de cada passo indexando pelo item de trabalhoEm caso de erro, procure o último passo daquele item de trabalho na tabelaRecomece a partir do ponto de falha

Cuidado c/ erros persistentes

Tabela de Progresso

Estado Intermediário

Persistido

Page 34: SETEMBRO, 2010 | SÃO PAULO. Otavio Pecego Coelho Arquiteto Chefe Microsoft Brasil  otavioc@microsoft.com Projetando Aplicativos

Continuação para itens que rodam durante muito tempo

Tabela de Progresso

Estado Intermediário

Persistido

Na Falha:

Leia o Progressoe recomece doponto que falhou.

Diminuir retrabalho em falhasAlgoritmo

Quebre o item de trabalho em pedaços menores e repetitivosGuarde o progresso depois de cada passo indexando pelo item de trabalhoEm caso de erro, procure o último passo daquele item de trabalho na tabelaRecomece a partir do ponto de falha

Cuidado c/ erros persistentes

Page 35: SETEMBRO, 2010 | SÃO PAULO. Otavio Pecego Coelho Arquiteto Chefe Microsoft Brasil  otavioc@microsoft.com Projetando Aplicativos

Monitoração e WatchDog

Page 36: SETEMBRO, 2010 | SÃO PAULO. Otavio Pecego Coelho Arquiteto Chefe Microsoft Brasil  otavioc@microsoft.com Projetando Aplicativos

Cenário Grid Computing

Page 37: SETEMBRO, 2010 | SÃO PAULO. Otavio Pecego Coelho Arquiteto Chefe Microsoft Brasil  otavioc@microsoft.com Projetando Aplicativos

MasterCliente

Data

Worker

Worker

Worker

“Map”

M<k,v>

M<k,v>

M<k.v>

M<“the quick brown”,”e”>M<“fox jumps over”,”e”>

Quantas letras ”e”’encontramos na frase

“The quick brown fox jumps over the lazy dog”?

M<“the lazy dog”,”e”>

Page 38: SETEMBRO, 2010 | SÃO PAULO. Otavio Pecego Coelho Arquiteto Chefe Microsoft Brasil  otavioc@microsoft.com Projetando Aplicativos

MasterClienteResul

t

Worker

Worker

Worker

“Reduce”

L<k,v>

L<k,v>

L<k,v>

L<”e”,”1”>L<”e”,”1”>L<”e”,”1”>

3 letras ”e” encontradas

Page 39: SETEMBRO, 2010 | SÃO PAULO. Otavio Pecego Coelho Arquiteto Chefe Microsoft Brasil  otavioc@microsoft.com Projetando Aplicativos

Web RoleCliente

Data

Worker

Worker

Worker

Data

Data

DataAplicação ClienteJob/Task Scheduler

Serviço Remoto

Fila

Req

Tabela

Page 40: SETEMBRO, 2010 | SÃO PAULO. Otavio Pecego Coelho Arquiteto Chefe Microsoft Brasil  otavioc@microsoft.com Projetando Aplicativos

MapReduce

Page 41: SETEMBRO, 2010 | SÃO PAULO. Otavio Pecego Coelho Arquiteto Chefe Microsoft Brasil  otavioc@microsoft.com Projetando Aplicativos

Pequenos Cuidados

Page 42: SETEMBRO, 2010 | SÃO PAULO. Otavio Pecego Coelho Arquiteto Chefe Microsoft Brasil  otavioc@microsoft.com Projetando Aplicativos

Boa Prática: Retry

Page 43: SETEMBRO, 2010 | SÃO PAULO. Otavio Pecego Coelho Arquiteto Chefe Microsoft Brasil  otavioc@microsoft.com Projetando Aplicativos

Boa Prática: Retry

Page 44: SETEMBRO, 2010 | SÃO PAULO. Otavio Pecego Coelho Arquiteto Chefe Microsoft Brasil  otavioc@microsoft.com Projetando Aplicativos

Boa prática – Diminuindo o Polling

Page 45: SETEMBRO, 2010 | SÃO PAULO. Otavio Pecego Coelho Arquiteto Chefe Microsoft Brasil  otavioc@microsoft.com Projetando Aplicativos

Boa prática – Diminuindo o Polling

Page 46: SETEMBRO, 2010 | SÃO PAULO. Otavio Pecego Coelho Arquiteto Chefe Microsoft Brasil  otavioc@microsoft.com Projetando Aplicativos

Batch Update

// loop de inserçõesfor (int index = 0; index < newBlogs.Length; index++) {

context.AddObject(newBlogs[index]);}

// loop de deleçõesfor (int index = 0; index < deletedBlogs.Length; index++) {

context.DeleteObject(deletedBlogs[index]);}

// loop de updatesfor (int index = 0; index < updatedBlogs.Length; index++) { updatedBlogs[index].Rating++;

context.UpdateObject(updatedBlogs[index]);}

// Operações CUD executadas num único batch.DataServiceResponse response =

context.SaveChanges(SaveChangesOptions.Batch);

Page 47: SETEMBRO, 2010 | SÃO PAULO. Otavio Pecego Coelho Arquiteto Chefe Microsoft Brasil  otavioc@microsoft.com Projetando Aplicativos

Arquitetura para Diminuição de Custos

Compartilhamento de CPUCompressão: CPU X Tamanho de MemóriaNúmero de Transações – Batch Update

Page 48: SETEMBRO, 2010 | SÃO PAULO. Otavio Pecego Coelho Arquiteto Chefe Microsoft Brasil  otavioc@microsoft.com Projetando Aplicativos

Resumo

A Plataforma Azure provê alta escalabilidade e disponibilidade

Existem um conjunto de Patterns de Design e Operação suportados pela Plataforma Azure

Aplique os Patterns apresentados de acordo com o que o seu aplicativo necessita.

Cuidado com a Falta de Arquitetura !Cuidado com o Excesso de Arquitetura !

Page 49: SETEMBRO, 2010 | SÃO PAULO. Otavio Pecego Coelho Arquiteto Chefe Microsoft Brasil  otavioc@microsoft.com Projetando Aplicativos

Capacidades da plataforma Windows Azure

Compute

Storage

Data SQL Azure Data Sync

Connectivity

Project “Sydney”

Security “Geneva”

Application ServicesFrameworks

“Dublin” “Velocity”

Service Bus

Access Control

Table Storage

Blob Storage Queue Drive

Content Delivery Network

COS302 | SQL Azure - Cenários de Uso, Migraçao e Operaçao

COS401 | Trace, Log, Provisionamento e Monitoraçao

no Azure

COS201 | Plataforma Azure AppFabric - utilizando o Service Bus e o Access Control Services

COS303 | Movendo Aplicativos para a Nuvem

COS304 | Projetando Aplicativos para a Escalabilidade - Tirando o melhor da

Plataforma Windows Azure

SIA305 | Segurança no Desenvolvimento para

Windows Azure

DBP308 | Sincronizando dados com a nuvem através

do SQL Azure Data Sync e Sync Framework 2.0

INT303 | Integrando Moodle com plataforma Microsoft

COS301 | Desenvolvendo para o Azure

Page 50: SETEMBRO, 2010 | SÃO PAULO. Otavio Pecego Coelho Arquiteto Chefe Microsoft Brasil  otavioc@microsoft.com Projetando Aplicativos
Page 51: SETEMBRO, 2010 | SÃO PAULO. Otavio Pecego Coelho Arquiteto Chefe Microsoft Brasil  otavioc@microsoft.com Projetando Aplicativos

© 2008 Microsoft Corporation. Todos os direitos reservados. Microsoft, Windows, Windows Vista e outros nomes de produtos são ou podem ser marcas registradas e/ou marcas comerciais nos EUA e/ou outros países.Este documento é meramente informativo e representa a visão atual da Microsoft Corporation a partir da data desta apresentação. Como a Microsoft deve atender a condições de mercado em constante alteração, este

documento não deve ser interpretado como um compromisso por parte da Microsoft, e a Microsoft não pode garantir a precisão de qualquer informação fornecida após a data desta apresentação. A MICROSOFT NÃO DÁ QUALQUER GARANTIA, SEJA ELA EXPRESSA, IMPLÍCITA OU ESTATUTÁRIA, REFERENTE ÀS INFORMAÇÕES DESTA APRESENTAÇÃO.

Page 52: SETEMBRO, 2010 | SÃO PAULO. Otavio Pecego Coelho Arquiteto Chefe Microsoft Brasil  otavioc@microsoft.com Projetando Aplicativos

Por favor preencha a avaliação