Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouRicardo Calistro Alterado mais de 9 anos atrás
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
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.