A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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.

Apresentações semelhantes


Apresentação em tema: "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."— Transcrição da apresentação:

1 SETEMBRO, 2010 | SÃO PAULO

2 Instruções gerais (hidden slide): Título: Nível Técnico: Audiência foco: Objetivos (quais são as três principais mensagens que você gostaria que a audiência absorva): 1 2 3 Sequência da sua apresentação (incluindo as demos): Instruções aos palestrantes: Complete este slide para que o Track Owner avalie a sequência da sua apresentação, tópicos cobertos, integração das demos e alinhamento do conteúdo com a descrição e nível da sessão.

3 Alex Schulz – http://blogs.msdn.com/alexschulz Microsoft Brasil Movendo Aplicativos para a Nuvem C Ó DIGO DA SESS Ã O: COS303 Melhores Práticas para Desenvolvimento - Azure

4 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

5 5 Agenda Melhores práticas para Azure Web Roles Worker Role Azure Storage Session State Teste de escalabilidade Escalabilidade Gerenciamento do ciclo de vida de aplicações

6 6

7 7 Melhores práticas gerais Role Entry Point Política de Re-try e tratamento de Erro Exponential Back off Todas APIs expostas do Azure SQL Azure Diagnóstico

8 8 Worker Role Entry Point OnStart() Chamado pelo Windows Azure p/ inicializar a instância da role. Configurar Diagnóstico Configurar retardo na inicialização (p/ 20+ nós) Declarar Event Handlers p/ mudanças de configuração Mantenha 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á parando Desalocar recursos / Diagnostics.Stop();

9 9 Worker Entry Point

10 10 Worker: Política de Retry Retry Loop em todas as chamadas a Serviços Envolva todas as chamadas a serviços com Try-Catch Capture exceções específicas TraceListener em todas as exceções Política de Retry recomendada: API de Diagnóstico API de Gerenciamento API de Armazenamento (já existe como parte da API, porém…) SQL Azure

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

12 12 Exponential Backoff

13 13 Gerenciamento de Diagnóstico Definir configurações do Diagnóstico Selecione o que para monitorar Definir Taxa de transferência, agendamento e quota de armazenamento Inicialize o Diagnóstico Try/Catch & Política de Retry Forçar Recycle Contadores de Performance Use variáveis no arquivo de configuração Tuning.NET Application Performance: http://msdn.microsoft.com/en-us/library/ff647813.aspx http://msdn.microsoft.com/en-us/library/ff647813.aspx Azure Storage Queue Length % de Utilização de CPU

14 14

15 15

16 16

17 17

18 18 Cenário 1 Migração de Aplicações ASP.NET Aplicação Web: Tamanho 400+ Megabytes 1000+ Páginas de Conteúdo 10.000 imagens/videos/documentos

19 19 Cenário 1: Melhores Práticas - Web Role Limitação no tamanho do pacote p/ implantação em 400 Megabytes Extrair todos os arquivos de mídia do pacote Mova os arquivos para o Blob storage Crie uma conta de Storage no mesmo Datacenter! Substituir midia não necessita um Re-deploy! Multiplos Web Roles utilizando os mesmos blobs Benefício Adicional -> CDN (Content Delivery Network)

20 20 Cenário 1 : Web Roles Alguma idéia sobre esse erro? ASP.NET Diretório temporário Limitado a 100MB

21 21 Web Role: “Hostable Web Core” http://code.msdn.microsoft.com/hwcworker Acesso a configurações avançadas do IIS Rodar multiplas aplicações e diretórios virtuais Video: http://channel9.msdn.com/shows/Cloud+Cover/Cloud-Cover- Episode-11-Drives-and-IIS-Hostable-Worker-Core/ 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!!

22 22 Web Role: Session State Soluções Atuais Azure Table Storage SQL Azure Tabela Melhorada (Session: 64K Max) Table Storage (Tabela + Blob) SQL Azure Nós adicionamos um Worker Role p/ limpar a Session!!!

23 23

24 24 Uso do Worker Role Comada de Serviços de Negócio Serviços de Processamento Também é utilizado para: Engine de Java Servlet Apache Web Server Aplicações PHP Processos 32 Bit Processos WCF encapsulados

25 25 Process Role: Melhores Práticas Worker Roles starting Processes Política de Retry no Process.Start() Encapsule o processo com Try-Catch Bloco Finally -> Se Exception Thrown Verifique se há processos filho gerados pelo processo principal Mate todos processos filhos Mate o processo principal Se contador de Retry atingiu o limite Force o Recycle da Role

26 26 Process Role: Encapsulamento Defensivo

27 27 Cenário 2: Melhores Práticas - Worker Role Utilizando Tomcat Servlet Engine + JRE 1.6 Upload um arquivo WAR. http://code.msdn.microsoft.com/winazuretomcat

28 28 Process Role: Melhores Práticas Copiar arquivos do pacote para o HD local na VM TOMCAT JRE Modificar o arquivo de configuração do Tomcat com o caminho e Porta/IP na VM Criar as variáveis de ambiente para o processo Upload do arquivo WAR no diretório da aplicação Iniciar o processo

29 29

30 30 Storage: Melhores Práticas Fila Input / Output ~500 operações/segundo. Melhores Práticas de Mensagens Iserializable Idempotency Poison Messages Blob Storage Block Blob p/ fazer o upload em paralelo Table Storage Uploads em Massa -> O mais próximo possível do DC Exclusão em massa -> Exclua a Tabela!

31 31

32 32 Testando a escalabilidade

33 33

34 34 Muitas mãos fazem o trabalho mais leve

35 35 Escale por Serviços Hospedados “Scale unit” pattern

36 36 Escale por Role no serviço 11 2222 3 “role unit” pattern

37 37

38 38 Versionando implantações 2010072620100727 2010072820100729

39 39 Implantação automatizada Get files from Version Control Select Environment (Dev / Test / QA / Prod) Compile Configure Deployment Package (cspack) Upload to Blob Storage Deploy to Azure (csmanage)

40 40 Implantação Automatizada http://domgreen.com/2009/09/29/deploying-to-the-cloud-as-part-of-your-daily-build/ Processo de build

41 41 Implantação Automatizada Empacotando 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/

42 42 Implantação Automatizada Criando 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/

43 43 Implantação Automatizada Implantação no Azure utilizando CmdLets <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)"/> Fonte - Scott Densmore (http://scottdensmore.typepad.com/ )http://scottdensmore.typepad.com/

44 44 Implantação Automatizada script 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/ )http://scottdensmore.typepad.com/

45 45 Pagando pela implantação Pagando Sem Pagar

46 46 Resumo Melhores práticas para Azure Role Entry Point Política de Re-try e tratamento de Erro Exponential Back off Diagnóstico Web Roles Worker Role Process Azure Storage Session State Teste de escalabilidade Escalabilidade Gerenciamento do ciclo de vida de aplicações

47 47 Recursos

48 48 Desafio: HelloCloud Minha 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! deste Desafio!

49 49

50 50 Conteúdo relacionado Sessões temáticas

51 © 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.

52 Por favor preencha a avaliação


Carregar ppt "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."

Apresentações semelhantes


Anúncios Google