51
SETEMBRO, 2010 | SÃO PAULO

SETEMBRO, 2010 | SÃO PAULO. Instruções gerais (hidden slide): Título: Nível Técnico: Audiência foco: Objetivos (quais são as três principais mensagens

Embed Size (px)

Citation preview

Page 1: SETEMBRO, 2010 | SÃO PAULO. Instruções gerais (hidden slide): Título: Nível Técnico: Audiência foco: Objetivos (quais são as três principais mensagens

SETEMBRO, 2010 | SÃO PAULO

Page 2: SETEMBRO, 2010 | SÃO PAULO. Instruções gerais (hidden slide): Título: Nível Técnico: Audiência foco: Objetivos (quais são as três principais mensagens

Alex Schulz – http://blogs.msdn.com/alexschulzMicrosoft Brasil

Movendo Aplicativos para a Nuvem

CÓDIGO DA SESSÃO: COS303

Melhores Práticas para Desenvolvimento - Azure

Page 3: SETEMBRO, 2010 | SÃO PAULO. Instruções gerais (hidden slide): Título: Nível Técnico: Audiência foco: Objetivos (quais são as três principais mensagens

4

Objetivo da Sessão

Fornecer um guia e as melhores práticas no desenvolvimento para Windows Azure Roles para auxilia-los no processo de migração de aplicativos para a nuvem

Page 4: SETEMBRO, 2010 | SÃO PAULO. Instruções gerais (hidden slide): Título: Nível Técnico: Audiência foco: Objetivos (quais são as três principais mensagens

5

Agenda

Melhores práticas para AzureWeb RolesWorker RoleAzure StorageSession StateTeste de escalabilidadeEscalabilidadeGerenciamento do ciclo de vida de aplicações

Page 5: SETEMBRO, 2010 | SÃO PAULO. Instruções gerais (hidden slide): Título: Nível Técnico: Audiência foco: Objetivos (quais são as três principais mensagens

6

Melhores práticas para Azure

Page 6: SETEMBRO, 2010 | SÃO PAULO. Instruções gerais (hidden slide): Título: Nível Técnico: Audiência foco: Objetivos (quais são as três principais mensagens

7

Melhores práticas gerais

Role Entry PointPolítica de Re-try e tratamento de ErroExponential Back off

Todas APIs expostas do AzureSQL Azure

Diagnóstico

Page 7: SETEMBRO, 2010 | SÃO PAULO. Instruções gerais (hidden slide): Título: Nível Técnico: Audiência foco: Objetivos (quais são as três principais mensagens

8

Worker Role Entry PointOnStart()

Chamado pelo Windows Azure p/ inicializar a instância da role.

Configurar DiagnósticoConfigurar retardo na inicialização (p/ 20+ nós) Declarar Event Handlers p/ mudanças de configuraçãoMantenha o mais enxuto possível

Run()Thread principal da execução.Retry / Try-Catch / Insira o código da aplicação aqui

OnStop()Chamado pelo Windows Azure quando a instância da role está parandoDesalocar recursos / Diagnostics.Stop();

Page 8: SETEMBRO, 2010 | SÃO PAULO. Instruções gerais (hidden slide): Título: Nível Técnico: Audiência foco: Objetivos (quais são as três principais mensagens

9

Worker Entry Point

Page 9: SETEMBRO, 2010 | SÃO PAULO. Instruções gerais (hidden slide): Título: Nível Técnico: Audiência foco: Objetivos (quais são as três principais mensagens

10

Worker: Política de RetryRetry Loop em todas as chamadas a ServiçosEnvolva todas as chamadas a serviços com Try-CatchCapture exceções específicasTraceListener em todas as exceçõesPolítica de Retry recomendada:

API de DiagnósticoAPI de GerenciamentoAPI de Armazenamento (já existe como parte da API, porém…)SQL Azure

Page 10: SETEMBRO, 2010 | SÃO PAULO. Instruções gerais (hidden slide): Título: Nível Técnico: Audiência foco: Objetivos (quais são as três principais mensagens

11

Worker: Política de Retry (Código)

Page 11: SETEMBRO, 2010 | SÃO PAULO. Instruções gerais (hidden slide): Título: Nível Técnico: Audiência foco: Objetivos (quais são as três principais mensagens

12

Exponential Backoff

Page 12: SETEMBRO, 2010 | SÃO PAULO. Instruções gerais (hidden slide): Título: Nível Técnico: Audiência foco: Objetivos (quais são as três principais mensagens

13

Gerenciamento de DiagnósticoDefinir configurações do Diagnóstico

Selecione o que para monitorarDefinir Taxa de transferência, agendamento e quota de armazenamento

Inicialize o DiagnósticoTry/Catch & Política de Retry Forçar RecycleContadores de Performance

Use variáveis no arquivo de configuraçãoTuning .NET Application Performance: http://msdn.microsoft.com/en-us/library/ff647813.aspx Azure Storage Queue Length% de Utilização de CPU

Page 13: SETEMBRO, 2010 | SÃO PAULO. Instruções gerais (hidden slide): Título: Nível Técnico: Audiência foco: Objetivos (quais são as três principais mensagens

14

Definição do Diagnóstico

Page 14: SETEMBRO, 2010 | SÃO PAULO. Instruções gerais (hidden slide): Título: Nível Técnico: Audiência foco: Objetivos (quais são as três principais mensagens

15

Começar a monitorar

Page 15: SETEMBRO, 2010 | SÃO PAULO. Instruções gerais (hidden slide): Título: Nível Técnico: Audiência foco: Objetivos (quais são as três principais mensagens

16

Configuração do Worker

Page 16: SETEMBRO, 2010 | SÃO PAULO. Instruções gerais (hidden slide): Título: Nível Técnico: Audiência foco: Objetivos (quais são as três principais mensagens

17

Melhores práticas - Web Roles

Page 17: SETEMBRO, 2010 | SÃO PAULO. Instruções gerais (hidden slide): Título: Nível Técnico: Audiência foco: Objetivos (quais são as três principais mensagens

18

Cenário 1

Migração de Aplicações ASP.NETAplicação Web: Tamanho 400+ Megabytes1000+ Páginas de Conteúdo10.000 imagens/videos/documentos

Page 18: SETEMBRO, 2010 | SÃO PAULO. Instruções gerais (hidden slide): Título: Nível Técnico: Audiência foco: Objetivos (quais são as três principais mensagens

19

Cenário 1: Melhores Práticas - Web RoleLimitação no tamanho do pacote p/ implantação em 400 MegabytesExtrair todos os arquivos de mídia do pacote

Mova os arquivos para o Blob storageCrie uma conta de Storage no mesmo Datacenter!Substituir midia não necessita um Re-deploy!Multiplos Web Roles utilizando os mesmos blobsBenefício Adicional -> CDN (Content Delivery Network)

Page 19: SETEMBRO, 2010 | SÃO PAULO. Instruções gerais (hidden slide): Título: Nível Técnico: Audiência foco: Objetivos (quais são as três principais mensagens

20

Cenário 1 : Web Roles

Alguma idéia sobre esse erro?ASP.NET Diretório temporário Limitado a 100MB

Page 20: SETEMBRO, 2010 | SÃO PAULO. Instruções gerais (hidden slide): Título: Nível Técnico: Audiência foco: Objetivos (quais são as três principais mensagens

21

Web Role: “Hostable Web Core”http://code.msdn.microsoft.com/hwcworker

Acesso a configurações avançadas do IISRodar multiplas aplicações e diretórios

virtuaisVideo: http://channel9.msdn.com/shows/Cloud+Cover/Cloud-Cover-Episode-11-Drives-and-IIS-Hostable-Worker-Core/

Definir o tamanho do diretório temporário do ASP.NET!!

Page 21: SETEMBRO, 2010 | SÃO PAULO. Instruções gerais (hidden slide): Título: Nível Técnico: Audiência foco: Objetivos (quais são as três principais mensagens

22

Web Role: Session StateSoluções Atuais

Azure Table StorageSQL Azure

Tabela Melhorada (Session: 64K Max)

Table Storage (Tabela + Blob)

SQL Azure

Nós adicionamos um Worker Role p/ limpar a Session!!!

Page 22: SETEMBRO, 2010 | SÃO PAULO. Instruções gerais (hidden slide): Título: Nível Técnico: Audiência foco: Objetivos (quais são as três principais mensagens

23

Worker Role

Page 23: SETEMBRO, 2010 | SÃO PAULO. Instruções gerais (hidden slide): Título: Nível Técnico: Audiência foco: Objetivos (quais são as três principais mensagens

24

Uso do Worker RoleComada de Serviços de NegócioServiços de ProcessamentoTambém é utilizado para:

Engine de Java ServletApache Web ServerAplicações PHPProcessos 32 BitProcessos WCF encapsulados

Page 24: SETEMBRO, 2010 | SÃO PAULO. Instruções gerais (hidden slide): Título: Nível Técnico: Audiência foco: Objetivos (quais são as três principais mensagens

25

Process Role: Melhores PráticasWorker Roles starting Processes

Política de Retry no Process.Start()Encapsule o processo com Try-CatchBloco Finally ->

Se Exception ThrownVerifique se há processos filho gerados pelo processo principal

Mate todos processos filhosMate o processo principal

Se contador de Retry atingiu o limiteForce o Recycle da Role

Page 25: SETEMBRO, 2010 | SÃO PAULO. Instruções gerais (hidden slide): Título: Nível Técnico: Audiência foco: Objetivos (quais são as três principais mensagens

26

Process Role: Encapsulamento Defensivo

Page 26: SETEMBRO, 2010 | SÃO PAULO. Instruções gerais (hidden slide): Título: Nível Técnico: Audiência foco: Objetivos (quais são as três principais mensagens

27

Cenário 2: Melhores Práticas - Worker Role

Utilizando Tomcat Servlet Engine + JRE 1.6Upload um arquivo WAR.

http://code.msdn.microsoft.com/winazuretomcat

Page 27: SETEMBRO, 2010 | SÃO PAULO. Instruções gerais (hidden slide): Título: Nível Técnico: Audiência foco: Objetivos (quais são as três principais mensagens

28

Process Role: Melhores Práticas

Copiar arquivos do pacote para o HD local na VMTOMCATJRE

Modificar o arquivo de configuração do Tomcat com o caminho e Porta/IP na VM

Criar as variáveis de ambiente para o processoUpload do arquivo WAR no diretório da aplicaçãoIniciar o processo

Page 28: SETEMBRO, 2010 | SÃO PAULO. Instruções gerais (hidden slide): Título: Nível Técnico: Audiência foco: Objetivos (quais são as três principais mensagens

29

Melhores Práticas - Azure Storage

Page 29: SETEMBRO, 2010 | SÃO PAULO. Instruções gerais (hidden slide): Título: Nível Técnico: Audiência foco: Objetivos (quais são as três principais mensagens

30

Storage: Melhores PráticasFila

Input / Output ~500 operações/segundo.Melhores Práticas de Mensagens

IserializableIdempotencyPoison Messages

Blob StorageBlock Blob p/ fazer o upload em paralelo

Table StorageUploads em Massa -> O mais próximo possível do DCExclusão em massa -> Exclua a Tabela!

Page 30: SETEMBRO, 2010 | SÃO PAULO. Instruções gerais (hidden slide): Título: Nível Técnico: Audiência foco: Objetivos (quais são as três principais mensagens

31

Teste de escalabilidade

Page 31: SETEMBRO, 2010 | SÃO PAULO. Instruções gerais (hidden slide): Título: Nível Técnico: Audiência foco: Objetivos (quais são as três principais mensagens

32

Testando a escalabilidade

Page 32: SETEMBRO, 2010 | SÃO PAULO. Instruções gerais (hidden slide): Título: Nível Técnico: Audiência foco: Objetivos (quais são as três principais mensagens

33

Escalabilidade

Page 33: SETEMBRO, 2010 | SÃO PAULO. Instruções gerais (hidden slide): Título: Nível Técnico: Audiência foco: Objetivos (quais são as três principais mensagens

34

Muitas mãos fazem o trabalho mais leve

Page 34: SETEMBRO, 2010 | SÃO PAULO. Instruções gerais (hidden slide): Título: Nível Técnico: Audiência foco: Objetivos (quais são as três principais mensagens

35

Escale por Serviços Hospedados“Scale unit” pattern

Page 35: SETEMBRO, 2010 | SÃO PAULO. Instruções gerais (hidden slide): Título: Nível Técnico: Audiência foco: Objetivos (quais são as três principais mensagens

36

Escale por Role no serviço

1 1

222 2

3

“role unit” pattern

Page 36: SETEMBRO, 2010 | SÃO PAULO. Instruções gerais (hidden slide): Título: Nível Técnico: Audiência foco: Objetivos (quais são as três principais mensagens

37

Gerenciamento do Ciclo de Vida da Aplicação

Page 37: SETEMBRO, 2010 | SÃO PAULO. Instruções gerais (hidden slide): Título: Nível Técnico: Audiência foco: Objetivos (quais são as três principais mensagens

38

Versionando implantações

20100726 20100727 20100728 20100729

Page 38: SETEMBRO, 2010 | SÃO PAULO. Instruções gerais (hidden slide): Título: Nível Técnico: Audiência foco: Objetivos (quais são as três principais mensagens

39

Implantação automatizada

Get filesfrom Version

Control

Select Environment(Dev / Test / QA

/ Prod)

Compile Configure Deployment

Package(cspack)

Upload to Blob Storage

Deploy to Azure

(csmanage)

Page 39: SETEMBRO, 2010 | SÃO PAULO. Instruções gerais (hidden slide): Título: Nível Técnico: Audiência foco: Objetivos (quais são as três principais mensagens

40

Implantação Automatizada

<Target Name="BeforeDropBuild" Condition=" '$(IsDesktopBuild)'!='true' "> <Message Text="use cspack create a package for deployment"/> <Exec Command="$(PackageCommand)" WorkingDirectory="$(SolutionDir)" /> <Message Text="run program to place package in blob storage"/> <Exec Command="$(DeployToBlobStorageCommand) $(SolutionDir)\package.cspkg"/> <Message Text="suspend the current running cloud application"/> <Exec Command="$(SuspendCommand)" ContinueOnError="true"/> <Message Text="delete the currently deployed cloud application"/> <Exec Command="$(DeleteCommand)" ContinueOnError="true"/> <Message Text="create a azure service using the package placed in blob storage"/> <Exec Command="$(CreateCommand)" WorkingDirectory="$(SolutionRoot)"/> <Message Text="run the created application"/> <Exec Command="$(RunCommand)" /></Target>

http://domgreen.com/2009/09/29/deploying-to-the-cloud-as-part-of-your-daily-build/

Processo de build

Page 40: SETEMBRO, 2010 | SÃO PAULO. Instruções gerais (hidden slide): Título: Nível Técnico: Audiência foco: Objetivos (quais são as três principais mensagens

41

Implantação AutomatizadaEmpacotando

cspack.exe \ServiceDefinition.csdef /role:WebRole1;\CloudService.WebRole /role:WorkerRole1;\CloudService.WorkerRole\bin\

Release;domgreen.CloudService.WorkerRole.dll

/out:CloudService.cspkg

http://domgreen.com/2009/09/29/deploying-to-the-cloud-as-part-of-your-daily-build/

Page 41: SETEMBRO, 2010 | SÃO PAULO. Instruções gerais (hidden slide): Título: Nível Técnico: Audiência foco: Objetivos (quais são as três principais mensagens

42

Implantação AutomatizadaCriando um implantação utilizando csmanage.exe

csmanage.exe /create-deployment /hosted-service:domgreen /slot:production /name:domgreen

/label:domgreenLabel /package: $

(BlobStorageEndpoint)packages/ $(version)/CloudService.cspkg

/config:$(SolutionDir)\CloudService

\ServiceConfiguration.cscfg

http://domgreen.com/2009/09/29/deploying-to-the-cloud-as-part-of-your-daily-build/

Page 42: SETEMBRO, 2010 | SÃO PAULO. Instruções gerais (hidden slide): Título: Nível Técnico: Audiência foco: Objetivos (quais são as três principais mensagens

43

Implantação AutomatizadaImplantação no Azure utilizando CmdLets

<Target Name="Deploy“ DependsOnTargets="SetConnectionStrings;Build"><MSBuild Projects="$(AzureProjectPath)\$(AzureProjectName)" Targets="CorePublish" Properties="Configuration=$(BuildType)"/><Exec WorkingDirectory="$(MSBuildProjectDirectory)" Command=“

$(windir)\system32\WindowsPowerShell\v1.0\powershell.exe -f deploy.ps1

$(PackageLocation) $(PackageName) $(ServiceConfigName) $(HostedServiceName)"/>

</Target>

Fonte - Scott Densmore (http://scottdensmore.typepad.com/ )

Page 43: SETEMBRO, 2010 | SÃO PAULO. Instruções gerais (hidden slide): Título: Nível Técnico: Audiência foco: Objetivos (quais são as três principais mensagens

44

Implantação Automatizadascript deploy.ps1 utilizando CmdLets

if ((Get-PSSnapin | ?{$_.Name -eq "AzureManagementToolsSnapIn"}) -eq $null){ Add-PSSnapin AzureManagementToolsSnapIn}

$hostedService = Get-HostedService $servicename -Certificate $cert -SubscriptionId $sub | Get-Deployment -Slot Staging

if ($hostedService.Status -ne $null){ $hostedService | Set-DeploymentStatus 'Suspended' | Get-OperationStatus -WaitToComplete $hostedService | Remove-Deployment | Get-OperationStatus -WaitToComplete}

Get-HostedService $servicename -Certificate $cert -SubscriptionId $sub | New-Deployment Staging -package $package -configuration $config -label $buildLabel -serviceName $servicename | Get-OperationStatus -WaitToComplete

Get-HostedService $servicename -Certificate $cert -SubscriptionId $sub | Get-Deployment -Slot Staging | Set-DeploymentStatus 'Running' | Get-OperationStatus -WaitToComplete

Source - Scott Densmore (http://scottdensmore.typepad.com/ )

Page 44: SETEMBRO, 2010 | SÃO PAULO. Instruções gerais (hidden slide): Título: Nível Técnico: Audiência foco: Objetivos (quais são as três principais mensagens

45

Pagando pela implantação

PagandoSem Pagar

Page 45: SETEMBRO, 2010 | SÃO PAULO. Instruções gerais (hidden slide): Título: Nível Técnico: Audiência foco: Objetivos (quais são as três principais mensagens

46

ResumoMelhores práticas para Azure

Role Entry PointPolítica de Re-try e tratamento de ErroExponential Back offDiagnóstico

Web RolesWorker Role ProcessAzure StorageSession StateTeste de escalabilidadeEscalabilidadeGerenciamento do ciclo de vida de aplicações

Page 46: SETEMBRO, 2010 | SÃO PAULO. Instruções gerais (hidden slide): Título: Nível Técnico: Audiência foco: Objetivos (quais são as três principais mensagens

47

Windows Azure Architecture Guide Part 1Link: http://msdn.microsoft.com/en-us/library/ff728592.aspx

Cloud Cover Show: Link: http://channel9.msdn.com/shows/Cloud+Cover/

Windows Azure Platform: Articles from the Trenches Volume One Link: http://geekswithblogs.net/iupdateable/articles/windows-azure-platform-articles-from-the-trenches-volume-1.aspx

CodePlex Link: http://www.codeplex.com/site/search?query=azure&ac=8

MSDN Code GalleryLink: http://code.msdn.microsoft.com/Project/ProjectDirectory.aspx?ProjectSearchText=azure

Recursos

Page 47: SETEMBRO, 2010 | SÃO PAULO. Instruções gerais (hidden slide): Título: Nível Técnico: Audiência foco: Objetivos (quais são as três principais mensagens

48

Desafio: HelloCloudMinha primeira aplicação na nuvem• Construa e publique sua aplicação no Windows Azure• Mostre sua aplicação no estande Windows Azure• Preencha o formulário• Concorra a 10 assinaturas MSDN Premium

Visite o estande de Windows Azure e saiba

todos os detalhes deste Desafio!

Page 48: SETEMBRO, 2010 | SÃO PAULO. Instruções gerais (hidden slide): Título: Nível Técnico: Audiência foco: Objetivos (quais são as três principais mensagens

49

Page 49: SETEMBRO, 2010 | SÃO PAULO. Instruções gerais (hidden slide): Título: Nível Técnico: Audiência foco: Objetivos (quais são as três principais mensagens

50

Conteúdo relacionado

Sessões temáticas

Sessões temáticas

Sessões temáticas

Sessões temáticas

Page 50: SETEMBRO, 2010 | SÃO PAULO. Instruções gerais (hidden slide): Título: Nível Técnico: Audiência foco: Objetivos (quais são as três principais mensagens

© 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 51: SETEMBRO, 2010 | SÃO PAULO. Instruções gerais (hidden slide): Título: Nível Técnico: Audiência foco: Objetivos (quais são as três principais mensagens

Por favor preencha a avaliação