Este artigo foi traduzido por máquina.

Windows Azure

Dicas para migrar seus aplicativos para a nuvem

Jorge Huguinho

Um dos nossos Favoritos aspectos da tecnologia é que ele está em constante evolução e continuamente a alteração, sempre há muito mais para saber! Como os alunos e concorrentes da nuvem de computação, estamos muito entusiasmados com a plataforma Windows Azure. Como técnicos defensores da Microsoft, temos a excelente fortuna para trabalhar com os clientes a adoção da tecnologia nova. Como resultado, vimos uma série de maneiras diferentes de aplicação Azure do Windows.

No início, George tinha um pessoal motivo para querer usar Azure do Windows. Jorge está envolvido em várias atividades da comunidade e a capacidade de aplicativos temporários de rotação e girá-los quando não mais necessárias rapidamente provou bastante útil. Para os desenvolvedores com experiência em escrever código do Microsoft .NET Framework, não há dificilmente qualquer curva de aprendizado — criar seu aplicativo, implantá-lo e executá-lo.

Por causa dos juros, muitos de nossos clientes corporativos expressam ­ ed no Windows Azure, decidimos armazenar um conjunto de laboratórios de migração do Windows Azure em centros de tecnologia da Microsoft. A intenção era que os clientes levam seus aplicativos para o laboratório e, na verdade, migrá-los para o Windows Azure. Esse processo, cada cliente conseguiu migrar com êxito seus aplicativos da Web e bancos de dados SQL para a plataforma Windows Azure.

Nós não estavam surpresos — nós já havia muita experiência com o Windows Azure e estava certo de nossos clientes atenderia com êxito. Mas, no curso de ajudar os participantes do laboratório migrar seus aplicativos de vários, aprendemos muito alguns truques que ajudam as migrações ocorram sem problemas. Este artigo Compartilharemos algumas dessas dicas e truques, descobrimos que trabalhar com os clientes sobre migrações do mundo real.

Conceitos básicos de migração

Ao decidir migrar um aplicativo no local da nuvem (ou para criar um novo aplicativo em um serviço de nuvem), há vários aspectos da arquitetura do aplicativo que precisam ser considerados:

  • Gerenciamento de aplicativos
  • Segurança de aplicativos
  • Compatibilidade de aplicativos
  • Compatibilidade do banco de dados

As perguntas e nós ouvimos com mais freqüência durante os laboratórios de migração de preocupações tendia para giram em torno dessas quatro áreas. Como resultado, nos concentraremos nossa discussão sobre esses tópicos.

Um equívoco nós geralmente encontrado era a idéia de que, ao usar o Windows Azure, os desenvolvedores Don precisam se preocupar sobre padrões de arquiteturais comuns devido a problemas, como disponibilidade, escalabilidade, confiabilidade e segurança ao mover para ou a criação de aplicativos na nuvem. A verdade é que os padrões arquitetônicos no contexto da computação distribuída igualmente válidos para a arquitetura em instalações implantação ou implantação do Windows Azure de aplicativos.

Gerenciamento de aplicativos

Não importa se o seu aplicativo estiver sendo executado no local ou na nuvem, a equipe de gerenciamento de operações necessita dados irão ativá-las a tomar decisões eficazes. Os problemas que você precisará considerar incluem contratos de serviço, planejamento de capacidade, cliente faturamento, auditoria, aplicativos de monitoramento, análise de tráfego e gerenciamento de custos (saber quando escalar para cima ou para baixo). Eles precisam ser resolvidos antes que o aplicativo é implantado em produção — ­ e para obter melhores resultados, muitas vezes antes do aplicativo é criado.

Elas eram apenas alguns dos problemas que foram considerados durante os laboratórios de migração do Windows Azure. Utilizando a API do Windows Azure diagnóstico fornecido no Windows Azure SDK (Microsoft.WindowsAzure.Diagnostics), os clientes foram capazes de expor os despejos de memória de aplicativo, falha na solicitação de rastreamento, o Windows os logs de eventos, IIS logs, logs do Windows Azure e contadores de desempenho.

Isso é muito mais simples que você poderia esperar. Informe o monitor de diagnóstico que tipos de informações de diagnóstico para coletar (consulte do Figura 1 para obter um exemplo) e defina o agendamento de transferência de dados para obter as informações sejam transferidas para um local de armazenamento central Azure do Windows.

Figura 1 de definição de diagnóstico

public class WebRole : RoleEntryPoint {
  public override bool OnStart() {
    DiagnosticMonitorConfiguration config = 
      DiagnosticMonitor.GetDefaultInitialConfiguration();

    // To see which counters you can capture, type
    // "typeperf.exe /q" in a command window.

    // Capture CPU utilization.
    PerformanceCounterConfiguration procUtilization = 
      new PerformanceCounterConfiguration();
    procUtilization.CounterSpecifier = 
      @"Processor(*)\% Processor Time";
    procUtilization.SampleRate = 
      System.TimeSpan.FromSeconds(30.0);  
    config.PerformanceCounters.DataSources.Add(procUtilization);

    // Monitor available memory.
    PerformanceCounterConfiguration procAvailMemory = 
      new PerformanceCounterConfiguration();
    procAvailMemory.CounterSpecifier = @"\Memory\Avail MBytes";
    procAvailMemory.SampleRate = 
      System.TimeSpan.FromSeconds(30.0);  
    config.PerformanceCounters.DataSources.Add(procAvailMemory);

    // Add event collection from Windows Event Log 
    // (System and Application event logs).
    config.WindowsEventLog.DataSources.Add("System!*");
    config.WindowsEventLog.DataSources.Add("Application!*");

    // All of the information monitored so far is being stored locally. 
    // Tell diagnostic monitor what schedule period should be used when 
    // transfering the events. 
    config.Directories.ScheduledTransferPeriod = 
      TimeSpan.FromMinutes(1);
    config.Logs.ScheduledTransferPeriod = 
      TimeSpan.FromMinutes(1);

    // Start the diagnostics monitor.
    DiagnosticMonitor.Start("DiagnosticsConnectionString", config);

    // True gives full crash dumps. False gives small crash dumps.
    CrashDumps.EnableCollection(false); 

    System.Diagnostics.Trace.TraceInformation("OnStart Completed");

    RoleEnvironment.Changing += RoleEnvironmentChanging;

    return base.OnStart();
  }
...

Para obter mais informações sobre o diagnóstico do Windows Azure, consulte o artigo “ Cloud Diagnostics: Assumir controle de log e rastreamento no Windows Azure ” por Mike Kelley, na edição de junho de 2010 da MSDN Magazine.

Segurança de aplicativos

Uma grande preocupação de qualquer organização movendo na nuvem é segurança. A maioria das empresas investiu uma grande quantidade de tempo, dinheiro e engenharia para projetar e desenvolver um modelo de segurança e ele é importante que eles são capazes de aproveitar os investimentos existentes, como firewalls, soluções de sign-on única e armazenamentos de identidade.

Embora existam muitas formas de uma empresa de proteção de aplicativos baseados em nuvem, um padrão de cada vez mais popular é uma abordagem baseada em declarações.

Esse processo é mostrado na Figura 2. Em ordem para um aplicativo para ser capaz de processar os tokens de segurança de um Security Token Service (STS), uma relação de confiança deve ser estabelecida entre o STS e o aplicativo.

image: Claims-Based Identity in an Application Context

Do baseada em declarações de identidade em um contexto de aplicativo, a Figura 2

As regras de controle de acesso (etapa 1) são definidas para atender aos requisitos de negócios (quem podem efetuar logon no aplicativo). Essas regras são armazenadas com o STS. Quando um usuário tenta acessar o aplicativo, ela será redirecionada para o STS para que ela possa receber um token válido (etapa 2). O usuário fornece um conjunto de entrada declarações (por exemplo, um Live ID ou uma conta de domínio) para o STS para fins de autenticação. O STS irá mapear essas declarações de um conjunto de declarações de saída quando o usuário é autenticado (etapa 3). Na etapa 4, as declarações de saída são empacotadas em um token SAML (Security asserções Markup Language) assinadas pelo STS e retornadas ao usuário para ser encaminhada para o aplicativo (o terceira parte confiável parceiro na etapa 5). O aplicativo confirma que o token SAML é válido e do STS confiável (etapa 6). Depois que o token for validado, o aplicativo verifica as declarações no token e o envia de volta a resposta apropriada (etapa 7). Muito simples! A vantagem dessa abordagem é que ele caiba extremamente bem dentro do modelo de provedor asp.net. O processo de tornar seu aplicativo asp.net com reconhecimento de declarações é realmente bem simples.

Para facilitar a vida útil para desenvolvedores, a Microsoft introduziu o SDK do Windows Identity Foundation (WIF). Isso faz todo o trabalho pesado de analisar os tokens SAML 2. 0, permitindo que o desenvolvedor se concentrar em seu aplicativo sem precisar se preocupar com a tecnologia de segurança subjacente.

A primeira coisa a fazer é Baixar WIF e do WIF SDK. Quando estiver instalados, você terá que precisa fazer seu aplicativo compatível com declarações.

Na solução do Visual Studio com o seu aplicativo da Web do asp.net, o botão direito do mouse e selecione Add | Add New Web Site. Selecione o modelo do asp.NET Security Token Service Web Site. Isso permitirá que você configure um STS para seu ambiente de desenvolvimento.

Depois de ter o seu STS criados, você pode adicionar uma referência para o STS clicando com o botão direito em seu aplicativo e clicando em “ Adicionar referência do STS ”. Isso inicia um assistente que orienta você pelo processo de estabelecimento de uma relação entre seu aplicativo e o STS. Aponte para o arquivo do aplicativo Web. config para seu site e especificar o URI de aplicativo (consulte do Figura 3).

image: Starting the Federation Utility Wizard

De Iniciar o Assistente de utilitário de federação, a Figura 3

Na próxima etapa, escolha a opção “ usar um STS existente ” e, em seguida, especifique o local do arquivo FederationMetadata.xml no projeto do STS (consulte do Figura 4). Escolha os padrões para o restante do processo.

Figure 4 Configuring the STS

De Configurando o STS, a Figura 4

Dê uma olhada no seu arquivo Web. config. Você verá que o Assistente de Util.exe ­ alimentadas alterado uma quantidade considerável de código. As alterações mais importantes foram feitas ao nó microsoft.identityModel do arquivo Web. config. Aqui você verá as referências ao seu projeto do STS, juntamente com os tipos de declaração esperado pelo aplicativo. Para garantir que seu aplicativo está adequadamente recebendo as declarações de seu STS, colocados o código a seguir em sua página default. aspx (Observe que você terá que adicionar uma referência para o Microsoft.IdentityModel do WIF SDK):

IClaimsIdentity ici = 
  (IClaimsIdentity)Thread.CurrentPrincipal.Identity;

foreach (Claim c in ici.Claims) {
  Response.Write(c.ClaimType + " - " + c.Value + "<br/>");
}

Quando seu aplicativo é executado em seguida, você será redirecionado automaticamente para o seu STS. Por padrão, o STS permite autenticar como “ Adam Carter ”. Basta clicar no botão de login (Don é necessário uma senha).

Depois que o STS autentica o logon, você será redirecionado para seu aplicativo da Web, juntamente com um token SAML necessário para autenticação. Seu aplicativo será o token de aceitar e a página default. aspx ser executado. Como os módulos WIF interceptam suas credenciais de segurança, você é capaz de converter o objeto de identidade como um IClaimsIdentity e, conseqüentemente, é possível extrair as declarações (consulte do Figura 5) de objeto de tipo e valor de identidade.

image: The Claims Type and Value of an Identity Object

Das reivindicações de tipo e valor de um objeto identidade, a Figura 5

Agora que o aplicativo da Web é compatível com declarações, é fácil de adaptar-se ao seu modelo de identidade existentes. Basta atualizar o arquivo de configuração para que ele aponte para o STS de produção e certifique-se de que você configurou seu aplicativo como uma terceira parte confiável. Além disso, você pode usar essas informações para criar um provedor de função personalizado que você pode traduzir os tipos de declarações em funções.

Essa é uma técnica extremamente poderosa e permitirá que você a mover seus aplicativos para praticamente qualquer ambiente — no local, na nuvem ou até mesmo um data center parceiro — e ainda validar contra seus armazenamentos de identidade por meio de um STS expostos publicamente.

compatibilidade do aplicativo

Windows Azure é uma plataforma de aplicativo, portanto, é importante compreender os tipos de aplicativos apropriados para a plataforma Windows Azure. Enquanto você tem a capacidade de executar o código nativo e você pode executar aplicativos com confiança total, você deve empacotar o aplicativo antes de implantá-lo na nuvem, o que significa que é importante avaliar o seu aplicativo para verificar se ele é um bom ajuste.

Eis aqui um exemplo. Um de nossos clientes a Labs de migração do Windows Azure tinha um aplicativo consiste em um back-end do SQL Server 2005, uma camada de acesso a dados do SQL do LINQ e um front-end usando a MVC Framework 1. 0 e o asp.NET 3. 5 SP1 em execução no IIS.

O aplicativo-se em uma Web farm com um balanceador de carga do tráfego de roteamento. O próprio aplicativo estava sem monitoração de estado para que ele não importa para qual servidor o usuário, por fim, foi direcionado.

Um detalhe interessante sobre este aplicativo foi que o aplicativo do MVC gerencia mais de 220 sites da Web separados. A empresa usou uma combinação de roteamento do MVC e informações armazenadas no banco de dados do SQL Server para determinar qual conteúdo deve ser carregado para cada site. Havia cinco servidores Web por trás do balanceador de carga que atende a visitantes de página mais de 4 milhões por mês para a coleção de sites da Web.

O principal desafio que a empresa enfrentada foi a quantidade de tempo gasto para configurar um novo servidor Web para seu ambiente: meses! Quando a empresa considerado migrar o aplicativo para Windows Azure, sua principal motivação estava salvando uma enorme quantidade de tempo. Dimensionar seria um detalhe de configuração em vez de um pesadelo demorada do quarto.

O processo de migração para o Windows Azure é realmente bem simples. Este é o processo genérico que usamos:

  1. Verifique se o aplicativo estiver executando corretamente no ambiente de desenvolvimento.
  2. Migre o SQL Server back-end para Azure do SQL usando o Assistente de migração do SQL Azure (discutiremos detalhes posteriormente neste artigo).
  3. Atualize o aplicativo local para trabalhar com o banco de dados SQL Azure. Isso foi tão simples quanto a seqüência de caracteres de conexão com a alteração.
  4. Converta o aplicativo em um projeto da função.
  5. Valide que o aplicativo ser executado em um local desenvolver ­ entário malha.
  6. A função da Web de pacote e implantá-lo para o Windows Azure.
  7. Valide que o aplicativo é executado a partir do Windows Azure.

Para reduzir o tamanho do pacote da Web de função, nós acabamos Extraindo as imagens e arquivos CSS de suas pastas de conteúdo e colocando-as em um armazenamento de blob Azure do Windows.

Como era de todo o conteúdo no armazenamento do Windows Azure blob, GGP foi capaz de aproveitar a rede de entrega de conteúdo do Windows Azure (CDN). Isso permitiu que os caches de dados para ficar mais próximo para os usuários finais.

Para obter uma visão geral de desenvolvimento, teste e implantação do Windows Azure, consulte o artigo “ Windows Azure: Problema de desenvolvimento e implantação Windows Azure aplicativos no Visual Studio 2010 ” 2010 de abril da MSDN Magazine. Para uma visão mais profunda de problemas de armazenamento, consulte “ armazenamento nuvem: Mecanismo do seu aplicativo com o Windows Azure Storage impulsiona ” de janeiro de 2010 emite.

Compatibilidade do banco de dados

Quando o SQL Azure surgiram pela primeira vez, migramos alguns de nossos bancos de dados do SQL Server para ele. Juntamente com a nossa experiência, mantendo os laboratórios de migração do Windows Azure, aprendemos alguns pontos importantes que devem ser consideradas antes de embarcar em processo de migração.

Primeiro, é importante verificar o tamanho do seu banco de dados e como ele se ajuste dentro de bonificações de banco de dados usadas pelo SQL Azure. Atualmente, o SQL Azure oferece Web Editions nas edições de negócios e tamanhos de 1 GB e de 5 GB em tamanhos de 10, 20, 30, 40 e 50 GB. Você precisa verificar se seu banco de dados e verifique se não estiver mais de 50 GB. Se seu banco de dados é maior do que 50 GB, em seguida, você precisará examinar seu banco de dados e ver se ele pode ser dividido em bancos de dados menores (sharding em outras palavras, o banco de dados) ou a movimentação de dados grandes bolhas.

SQL Azure oferece suporte somente a autenticação do SQL, portanto, você precisará considerar se as alterações são necessárias para o esquema de autenticação usado pelo seu aplicativo. Acima disso, o SQL Azure possui um acelerador de recursos que limita o tempo de conexão. Abordaremos esses dois problemas um pouco mais adiante no artigo.

A versão do banco de dados do SQL Server é outro item que você precisa levar em consideração antes de migrar seu banco de dados para SQL Azure. SQL Azure baseia-se na parte superior do SQL Server 2008. Isso significa que, se você quiser migrar seus bancos de dados do SQL Server 2000 ou SQL Server 2005 para SQL Azure, você precisa certificar-se de que seus bancos de dados são compatíveis com o SQL Server 2008. Por exemplo, as versões anteriores do SQL Server aceita as junções TSQL estilo antigas, como * = e = * operadores na cláusula WHERE. O SQL Server 2008 só oferece suporte a associações de estilo ANSI. Por exemplo:

SELECT ProcessClassTypeName
       , bpa.PropertyMetadata AS PropertyMetadataOverride
       , act.PropertyMetadata AS PropertyMetadataDefault
  FROM dbo.BusinessProcessActivities bpa
  LEFT JOIN dbo.Activities act ON act.Activity_ID = bpa.Activity_ID

Quando o nível de compatibilidade do banco de dados é definido para o SQL Server 2005 ou SQL Server 2008, o antigo estilo TSQL associações (* = e = *) não são suportados. Isso é apenas um exemplo de problemas de compatibilidade, você encontrará durante a migração para o SQL Server 2008.

Está além do escopo deste artigo para se discutir em detalhes o processo de migração para o SQL Server 2008. Se você estiver interessado em práticas recomendadas de migração de banco de dados, por favor, confira a “ do Guia do Ultimate para atualizar para o SQL Server 2008 ”. Há também uma ampla gama de recursos disponíveis a partir do Centro do desenvolvedor do SQL Server do MSDN .

Você encontrará que o melhor caminho é a migração de um SQL Server 2008-­ compatível com banco para SQL Azure. Isso significa que se deseja migrar o SQL Server 2000 ou o banco de dados de 2005 para SQL Azure, você pode ir através de uma atualização no local para o SQL Server 2008 antes de migrar para o SQL Azure.

A Microsoft oferece uma excelente ferramenta chamada Supervisor de atualização do SQL Server analisa instâncias do SQL Server 2000 e SQL Server 2005 para identificar recursos e alterações de configuração que podem afetar seu upgarde. Fornece links para a documentação que descreve cada uma identificada problema e como resolvê-lo. Depois de verificar se seu banco de dados é compatível com o SQL Server 2008, você pode Avançar para migrar o banco de dados para o SQL Azure.

Dito isso, você também precisa estar ciente que SQL Azure não dá suporte a 100 por cento dos novos recursos do SQL Server 2008. Por exemplo, fluxo não é suportado atualmente em SQL Azure. Existem algumas maneiras de procurar por problemas de compatibilidade ao ir para o SQL Azure.

O método de força rude é simplesmente propagar o lado selvagem — executem seus scripts TSQL SQL Azure e procure por erros. Corrija quaisquer erros que ocorrem e execute novamente. Repita até que tenham êxito. Talvez não é o melhor é usar parte do tempo, mas que é para que você decida.

Você pode usar o Assistente de gerador de script do SQL Server Management Studio para gerar o script TSQL. Observe que, ao percorrer o assistente, certifique-se de selecionar a opção avançada de script e selecione o banco de dados do SQL Azure para a propriedade “ script para o tipo de mecanismo de banco de dados ”. Se você esquecer desta etapa, o SQL Server irá gerar TSQL não é compatível com SQL Azure.

Outra opção é fazer o download de Assistente de migração do SQL Azure (SQLAzureMW) de sqlazuremw.codeplex.com . SQLAzureMW fará o melhor desempenho para identificar problemas de compatibilidade, corrigi-los sempre que possível e notificá-lo de todos os problemas que ele conhece.

Para compreender melhor as diretrizes gerais e limitações para SQL Azure, consulte msdn.microsoft.com/library/ee336245 de .

Depois de ter seu esquema de banco de dados (tabelas, modos de exibição, procedimentos armazenados e assim por diante) no SQL Azure, será necessário carregar os dados. Estas são as maneiras mais comuns:

  • SQL Server Integration Services
  • Programa de cópia em massa (BCP)
  • SqlBulkCopy para migração de dados
  • Assistente de migração do SQL Azure (que usa BCP em segundo plano)

Usando SQLAzureMW

Jorge criado SQLAzureMW para ajudar os clientes com o processo de migração do banco de dados SQL. Figura 6 mostra SQLAzureMW em ação.

image: Using SQLAzureMW

Figura 6 usando SQLAzureMW

SQLAzureMW analisa bancos de dados do SQL Server para problemas de compatibilidade com SQL Azure. Ele também permite que a migração de dados e objetos de banco de dados do banco de dados de origem para o SQL Azure.

Usando SQLAzureMW, os desenvolvedores de banco de dados podem ter uma idéia de quanto trabalho deverão migrar seus bancos de dados para o SQL Azure. Se SQLAzureMW sinalizadores de muitos problemas de compatibilidade com um SQL Server 2000 ou o banco de dados de 2005, recomendamos atualizar seu banco de dados para o SQL Server 2008 em primeiro lugar, em seguida, migrando para o SQL Azure. O processo de migração para o SQL Server 2008 é bem documentado e há muitas diretrizes e a experiência que você pode utilizar. Para obter mais informações sobre a migração para o SQL Server 2008, consulte o SQL Server 2008 Upgrade Technical Reference Guide (de microsoft.com/downloads/details.aspx?FamilyID=66d3e6f5-6902-4fdd-af75-9975aea5bea7 ). Há também uma ampla gama de recursos disponíveis do Centro de desenvolvedores do SQL Server do MSDN (msdn.microsoft.com/sqlserver ).

Observe que se você Don tiver o SQL Server 2008 R2, isso Don impedirão de passar pelo processo de atualização. Basta baixar o SQL Server 2008 R2 Express Edition e percorrer o processo de atualização do lado a lado.

Outras boas fontes para os desenvolvedores de banco de dados entender as diferenças entre o SQL Server e SQL Azure — o que é compatível e não, o que é e orientações gerais e limitações — incluem a referência do Transact-SQL (banco de dados SQL Azure) de msdn.microsoft.com/library/ee336281 e as diretrizes gerais e limitações (banco de dados SQL Azure) em msdn.microsoft.com/library/ee336245 de .

Não importa se você decide atualizar para SQL Server 2008 pela primeira vez ou simplesmente migrar diretamente a partir do SQL Server 2000 ou 2005, você ainda precisa dar um jeito para analisar problemas de compatibilidade do banco de dados e gerar compatível com o SQL Azure SQL. Isso é onde SQL ­ AzureMW realmente ajuda. Não só SQLAzureMW pode analisar o banco de dados, ele também analisará os arquivos de rastreamento de SQL Profiler quando você deseja verificar SQL dinâmico para problemas de compatibilidade.

Durante os laboratórios de migração, conseguimos migrar todos os bancos de dados SQL (SQL Server 2000 e SQL Server 2005) para o SQL Azure com pouca ou nenhuma modificação. Os dois problemas restantes que precisavam ser abordada eram de autenticação e a otimização de recursos do SQL Azure.

O problema de autenticação foi devido ao fato de que apenas autenticação SQL, autenticação do Windows não oferece suporte a SQL Azure. No caso de um cliente, tinham que modificar a seqüência de conexão para refletir o nome de usuário e senha em vez de uma conexão confiável. Por exemplo, podemos iniciou com algo assim:

<add key="ConStr" 
  value="server=DbSvr;database=CRMDB;Trusted_Connection=yes" />
We simply changed the connection string to something like this:
<add key="ConStr" 
  value="Server=avl6qnn22s.database.windows.net;Database=CRMDB;User ID=WebSvrAdmin@avl6qnn22s;Password=password;Trusted_Connection=False;" />
To get more information on connecting to SQL Azure using ADO.NET, see msdn.microsoft.com/library/ee336243.

A otimização do recurso

Endereçamento de otimização de recursos do SQL Azure levou um pouco mais trabalho para alguns aplicativos.Para os aplicativos obedeceu às práticas recomendadas na obtenção de uma conexão para um banco de dados SQL, somente quando necessário e no último segundo possível, fazer todas as transações de maneira rápida e eficiente e permitindo que vão da tão logo seja possível, a conexão SQL Azure de otimização não era um problema.Por outro lado, os aplicativos que são capturados uma conexão com um banco de dados SQL durante a inicialização e mantido para a conexão durante a vida útil do programa, ou por longos períodos de tempo, tinham de ser modificadas para implementar a lógica de repetição ou refatorado deve seguir as práticas recomendadas e não contenham recursos.

Um equívoco que executamos em um lote foi que SQL Azure só seriam Desconecte a conexão se a conexão se ociosa por cinco minutos.SQL Azure leva em consideração diversos fatores determinar quando a desconexão de um aplicativo, incluindo o uso excessivo de recursos, as consultas de execução demorada, transações de longa execução única e conexões ociosas.

A equipe do SQL Azure continuará a ajustar o recurso de otimização de parâmetros, mas o resultado é que o aplicativo deve ter uma lógica de novas tentativas internos pois SQL Azure forçará uma desconexão em qualquer aplicativo que excedem seus parâmetros de utilização do recurso.

Em geral, SQL Azure fornecerá mensagens de erro específica se ela regula nunca a conexão.Para obter uma lista completa de erros, consulte msdn.microsoft.com/library/ff394106 de .

Se você tiver um grande volume de transações pequenas, você deve usar o seguinte padrão:

  1. Use o pool de conexão.O Gerenciador de pool de conexão manterá as conexões abertas para você e não haverá pouco para nenhum impacto no desempenho do aplicativo abrir e fechar as conexões.
  2. Manter a conexão para a menor duração quanto possível.Abrir a conexão, execute a transação e fechar a conexão.
  3. Use o padrão de try-catch em torno de sua atividade de banco de dados.
  4. Capturar exceções e tente novamente a transação, se apropriado.
  5. Log de falhas e exceções para ajudar a facilitar a resolução de problemas.Certifique-se obter um carimbo de hora UTC (ou fornecer a hora e fuso horário), a identificação do contexto de conexão e o número de exceções.

SQLAzureMW é um bom exemplo de um aplicativo que teve que lidar com o recurso de otimização de SQL Azure.Como mencionamos anteriormente, SQLAzureMW pode migrar um banco de dados do SQL em suas instalações para SQL Azure.Se você estiver migrando um banco de dados que possui mais de 1000 tabelas, 1500 procedimentos armazenados e milhões de linhas de dados, pode facilmente levar mais de cinco horas de acordo com a quantidade real de dados que precisam ser carregadas.

Nesse cenário, SQLAzureMW teria bem mais de 2500 instruções TSQL para executar contra SQL Azure, bem como os dados para migrar via BCP.Executar mais de 2500 TSQL declarações em uma única instrução (ou transação) provavelmente excederia parâmetros, assim, resultando em uma conexão terminada a otimização de recursos de SQL Azure.

Como uma solução SQLAzureMW quebras pressionada as transações em muitas menores e é executado até que o SQL Azure encerra a conexão.Quando o SQL ­ AzureMW encontra um erro de conexão, ele restabelece uma nova conexão com o SQL Azure e pega o processamento após o último comando bem-sucedido.Da mesma forma, ao usar o BCP para carregar os dados para SQL Azure, SQLAzureMW blocos de dados em seções menores e usa a lógica de descobrir o último registro bem-sucedido carregado antes que a conexão foi fechada de repetição.Em seguida, ele tem BCP reiniciar a transferência de dados com o próximo conjunto de registros.

A equipe do produto SQL Azure fez grandes aperfeiçoamentos SQL Azure, pois o SQL Azure foi lançado pela primeira vez.Por exemplo, muitos dos problemas de otimização que teve durante os laboratórios de migração passaram imediatamente — embora ainda recomendamos que os aplicativos usam lógica de novas tentativas para lidar com finalizado normalmente conexões.

Próximas etapas

Como você pode ver, apesar de haver uma série de problemas, que você precisa considerar no planejamento de uma suave migração do Windows Azure, na prática, que descobrimos que a quantidade de trabalho necessárias para migrar de um aplicativo no local para o Windows Azure é normalmente mínimo.Obviamente, isso vai ser diferente para cada aplicativo.

Você precisará fazer sua própria análise para determinar se ele faz sentido migrar para o Windows Azure e quais os problemas que você precisará de endereço.Durante os laboratórios de migração do Windows Azure, nossos clientes encontrado conseguiu migrar seus aplicativos com pouca ou nenhuma modificação e foram capazes de utilizar a plataforma Windows Azure com muito pouco a curva de aprendizado e o investimento.As informações fornecidas aqui, juntamente com ferramentas como SQLAzureMW, devem ajudar você alcançar um resultado de êxito da mesma forma.

George Huey é um arquiteto principal para desenvolvedores de & grupo do Platform Evangelism na Microsoft. Huey trabalha com empresas para ajudá-los a compreender as novas tecnologias emergentes e como essas tecnologias podem ser aplicadas para resolver seus problemas comerciais. Também é autor do Assistente de migração do SQL Azure (SQLAzureMW).

Wade Wegner trabalha para a Microsoft e é o divulgador técnico da plataforma Windows Azure. Você pode contatá-lo pelo seu blog em wegner.com blog.wade ou em Twitter no twitter.com/wadewegner de.

*Meus agradecimentos aos seguinte especialista técnico para revisar este artigo:*Jim Nakashimi