Este artigo foi traduzido por máquina.

Computação de nuvem

Padrões para alta disponibilidade, escalabilidade E computação avançados com Windows Azure

Joshy Joseph

Download do código disponível na Galeria de código do MSDN
Procure o código on-line

Este artigo se baseia em uma versão de pré-lançamento do Windows Azure.Detalhes estão sujeitos a alterações.

Este artigo discute:

  • Arquitetura de computação de nuvem
  • Windows Azure
  • Nuvem de padrões e práticas recomendadas
Este artigo usa as seguintes tecnologias:
Windows Azure

Conteúdo

Computação de nuvem
Windows implementação Azure
Tipos de aplicativos de nuvem e padrões
Um exemplo do mundo real
Design de aplicativo e desenvolvimento
Implantando o serviço
Administração
Conclusão

durante a última década , a separação das interfaces da implementação, escalonável hospedar modelos, orientação de serviço, com base em assinatura de computação e maior colaboração social se tornou as metas de sistemas distribuídos.Agora, hospedado Internet aplicativos distribuídos com conectividade com aplicativos internos — geralmente chamado de software e serviços (S + S) — estão ganhando popularidade.As organizações estão aproveitando datacenters hospedados por terceiros para minimizar questões sobre hardware, software, confiabilidade e escalabilidade.Esses são apenas alguns da nova arquitetura tendências que ajudá-lo criarem aplicativos interoperáveis que aumentar, reduzem gastos de capital e melhorar a confiabilidade.Nuvem computação oferece muitas desses benefícios.

Uma plataforma de computação nuvem permite que aplicativos ser hospedados em um ambiente virtual podem ser acessados da Internet que fornece as capacidades de hardware, software, rede e armazenamento necessárias e fornece segurança e confiabilidade, removendo muita a carga de compra e manutenção de hardware e software internamente.Na nuvem, você pode desenvolver, implantar e gerenciar aplicativos como que no passado e integrar esses serviços para seus aplicativos em premissa.Você paga somente o tempo, recursos, e você usar durante a adição de hardware para acomodar o negócio de alteração de capacidade precisa.

Neste artigo, eu examinará a arquitetura de plataforma de nuvem típica e alguns padrões comuns de arquiteturais, junto com sua implementação no Azure Windows oferecendo da Microsoft.

Computação de nuvem

A Figura 1 ilustra a nuvem típica arquitetura da plataforma de computação.

fig01.gif

A Figura 1 arquitetura em camadas de uma plataforma de nuvem (clique na imagem para aumentar a exibição)

Nesse modelo, cada camada abstrai a camada abaixo dele, expor interfaces que criar camadas acima no.Não há nenhuma dependência difícil entre camadas e cada camada fornece composta ou Plug and Play arquitetura com os serviços de outras camadas.Cada camada fornece escalabilidade horizontal conforme necessário.

Como você pode ver, uma plataforma de nuvem é composta de um número de subsistemas.Vamos examinar cada uma em seguida.

Uma plataforma de hospedagem A plataforma de hospedagem fornece o físicos, virtuais e ativos de software.Esses ativos incluem máquinas físicas, sistemas operacionais, sistemas de rede, sistemas de armazenamento, gerenciamento de energia e software de virtualização.Metal simples e outros recursos operacionais são abstraídos como recursos virtuais para as camadas superiores.

Serviços de infra-estrutura que a função mais importante dessa camada é abstrair a plataforma de hospedagem como um conjunto de recursos virtuais e gerenciem esses recursos com base nas necessidades de escalabilidade e disponibilidade de nuvem.Fundamentalmente, essa camada oferece três tipos de recursos abstratos: calcular, armazenamento e rede e expõe um conjunto de APIs para acessar e gerenciar essas abstrações de recurso.Assim você obter acesso aos recursos físicos subjacentes sem saber os detalhes do hardware e software subjacente e pode controlar esses sistemas com eficiência por meio de configuração.Serviços oferecidos por esse subsistema geralmente são conhecidos como infra-estrutura como um serviço (IaaS).

Plataforma de nuvem serviços de desenvolvimento e gerenciamento de software para nuvem de computação é complexa.Ele se torna muito complexo quando você integrar o software em instalações com serviços hospedados.Serviços de plataforma fornecem um conjunto de recursos expostos como serviços para ajudar com tal integração.Por exemplo, na plataforma de serviços Azure, barramento de serviço do Microsoft .NET ajuda com descoberta e acesso enquanto o serviço de controle de acesso do Microsoft .NET ajuda a transformação de declarações baseadas em função e regra e mapeamento.Disponibilidade de serviços de plataforma pode diferenciar um provedor de nuvem de outro.Serviços fornecidos por essa camada são chamados como plataforma como um serviço (PaaS).

Aplicativos de nuvem que esta camada hospeda aplicativos que são criados para nuvem de computação.Esses aplicativos expõem interfaces da Web e Web Services para usuários finais, habilitando multitenant modelos de hospedagem.Algumas funções incluem conectar sistemas diferentes e aproveitando nuvem infra-estrutura de armazenamento para armazenar documentos.Esses serviços identificados o guarda-sol do software como um serviço (SaaS).

Serviços de segurança serviços de segurança garantir token provisionamento, federação de identidades e transformação de declarações.Esses serviços sejam criados sobre os padrões abertos, WS-Security, WS-Trust, WS-Federation, SAML protocolos e OpenID, para fins de interoperabilidade maior.

Gerenciamento de serviços de interfaces de gerenciamento Recortar em todas as camadas descritas acima.A plataforma de hospedagem utiliza interfaces de gerenciamento e agentes para escalabilidade automatizada e administração de disponibilidade.Embora a nuvem é hospedada e gerenciada em um data center, os clientes pode ser necessário funções que permitem que elas facilmente controlar seus aplicativos e lançar as configurações de implantação, obter análises sobre o uso do serviço e se conectar a seus sistemas de gerenciamento da empresa.

Ferramentas de ferramentas ajudá-lo Criar, testar e implantar aplicativos na nuvem.Essas ferramentas podem ser extensões para ferramentas existentes (Visual Studio Tools for Windows Azure, por exemplo) ou hospedados Ferramentas de um provedor de nuvem específico.

Usuários e provedores de nuvem computação há três categorias de usuários na nuvem de computação: provedores de plataforma de nuvem, consumidores de nuvem e usuários finais.Provedores de plataforma de nuvem oferecem os serviços de infra-estrutura de plataforma e nuvem hospedagem.Os consumidores de nuvem utilizam a plataforma de nuvem e desenvolver aplicativos e serviços para ser consumida pelos usuários finais.Os consumidores de nuvem configurar aplicativos para necessidades de segurança, disponibilidade e escalabilidade.Os usuários finais aproveitar os serviços oferecidos pelo consumidores de nuvem.Esses usuários poderia ser humanos, organização ou máquina e podem ser hospedados em qualquer lugar.

Nesse contexto, Azure fornece uma plataforma de nuvem enquanto os consumidores de nuvem (ou os ISVs Criando soluções de nuvem integrado ou empresas) aproveitar essa plataforma a criação de aplicativos.Por exemplo a plataforma de sincronização de dados do Live malha aproveita de plataforma de serviços de Azure e Azure do Windows para desenvolver e hospedar serviços S + S para usuários finais.

a Figura 2 mapeia a plataforma de serviços de Azure para a arquitetura em camadas na Figura 1 .Esta plataforma fornece um conjunto de serviços para os desenvolvedores de aplicativos.Esses serviços podem ser usados por aplicativos executados na nuvem e por aplicativos executados em sistemas locais.Windows Azure, sistema operacional para a nuvem, é a base da plataforma de nuvem da Microsoft oferecer.Conforme mostrado na Figura 2 , plataforma de serviços Azure fornece um conjunto de serviços compartilhados: SQL Data Services, serviços do .NET e Live Services, que pode ser usado individual ou coletivamente.Além disso, a Microsoft oferece vários aplicativos de nuvem concluído incluindo Exchange online, on-line do SharePoint e CRM online.Aqui, entretanto, VOU me concentrar no somente Windows Azure operacional sistema e padrões relacionados.

fig02.gif

A Figura 2 Azure plataforma de serviços mapeada para em camadas de arquitetura

Windows implementação Azure

Windows Azure fornece on-demand compute e o armazenamento de recursos para hospedar, escala e gerenciar aplicativos e serviços na Internet hospedado em data centers do Microsoft.

Windows Azure fornece recursos que exigem os consumidores de serviços de nuvem.Por exemplo, os recursos de hardware físico são abstraídos fora e expostos como calcular recursos prontos para ser consumida pelos aplicativos de nuvem.Armazenamento físico é abstraído com recursos de armazenamento e exposto por meio de interfaces de armazenamento bem definido.Uma malha Windows comuns abstrai a plataforma de hardware e software física e expõe recursos de computação e armazenamento virtualizados.Além disso, cada instância do aplicativo é monitorada para disponibilidade e escalonabilidade e gerenciada automaticamente.Por exemplo, se um aplicativo em uma instância for desligado, o controlador de malha (mostrado na Figura 3 ) será notificado e outra instância em outra virtual machine (VM) será instanciada com impacto limitado aos usuários finais.Devido à quantidade de virtualização, ao escrever seu código, você precisa garantir que você não fizer suposições sobre o estado do computador que hospeda o aplicativo.No Windows Azure seu serviço facilmente puderam ser movido para uma máquina virtual da nova.Windows Azure segue um design de gerenciamento de serviço controladas por modelos com Azure estrutura controlador responsável por mapeando as especificações de serviço declarativa para recursos disponíveis e gerenciar o ciclo de vida dos serviços.

fig03.gif

A Figura 3 Windows Azure e funções

Por padrão maioria dos aplicativos desenvolvidos em .NET pode ser hospedada em Azure com algumas restrições específicas sobre modelos de confiança parcial, armazenamento de dados/acesso e comunicação inter-application.Um desenvolvedor rich SDK e ferramentas de programação ajudá obter orientado para esta plataforma.

Botão direito do mouse agora você pode criar .NET aplicativos, aplicativos ASP.NET e serviços da Web com o WCF, usando ferramentas de suporte no Visual Studio.

Windows Azure atualmente oferece dois métodos de processamento, da função e a função de trabalho (veja a Figura 3 ).Cada função executa em uma VM. separada e se comunica com Azure estrutura por meio de um agente.O agente de coleta métricas de recurso e métricas de nó incluindo uso VM, status do aplicativo, logs, uso de recursos, exceções e condições de falha.Devemos observar que cada VM pode ser executado em um único host físico ou em um hypervisor de Windows 2008 máquina virtual.A configuração de host específico em tempo de execução é ditada pelo Windows Azure, conforme no contrato de nível de serviço e outros negócios/técnico precisa.Uma função Web hospeda aplicativos da Web interativos e fornece conexões em vinculados e out-bound (padrões de solicitação-resposta).Chamadas de limite são roteadas pelo balanceadores de carga Azure-fornecidos para proporcionar alta disponibilidade.Como você ter observado, isso exige que cada instância de função da Web esteja sem monitoração de estado para que o tecido pode rotear as solicitações para nenhuma função da Web no cluster.

A função de trabalho é um aplicativo especializado executar um aplicativo .NET no plano de fundo.Esses aplicativos não tem conectividade de limite de aplicativos externos.No entanto, eles podem enviar mensagens para serviços externos.Ao interagir com as funções da Web, funções de trabalho envio/recebem mensagens usando o serviço de armazenamento Windows Azure fila.Outro aspecto interessante é a capacidade de escalabilidade das funções.Um administrador de implantação do aplicativo pode declarar quantas instâncias de qualquer função podem ser necessárias na configuração e a estrutura será decidir como executar essas instâncias dependendo das necessidades sistema fora de escala.Em resumo, Azure do Windows fornece implantação sempre, por demanda e manipulação de falha.

Até agora, abordei os conceitos gerais em torno de nuvem plataformas e recursos específicos do Windows Azure.Depois apresentará alguns tipos de aplicativos nuvem principais, padrões de arquitetura e práticas recomendadas que você deve estar familiarizado ao desenvolver aplicativos para plataformas de nuvem.

Tipos de aplicativos de nuvem e padrões

Há um número de arquitetura e projeto padrões e práticas recomendadas que ajudá-lo a selecionar uma plataforma de nuvem e implementar nuvem serviços e aplicativos.Em geral, esses padrões se enquadram quatro categorias: computação, armazenamento, comunicação e gerenciamento.

Padrões de computação depois que você sabe qual aplicativo tipo você estão lidando com, você deve selecionar o padrão de computadores apropriadas.Como mencionei, a função da Web é usada para criar padrões de aplicativos interativos, enquanto a função de trabalho é adequada para a criação de plano de fundo e o Agendador de tarefas.Em alguns casos você pode precisar ambos os recursos.Uma consideração importante ao planejar suas tarefas de computação é que se lembrar de executar essas tarefas de modo a evitar a movimentação de grandes quantidades de dados ao redor.

Armazenamento de nuvem de padrões de armazenamento fornece armazenamento remoto e abstrai a mídia de armazenamento fora dos usuários.O projeto é suficientemente flexível para oferecer suporte a uma grande variedade de requisitos do aplicativo.Azure aborda dois padrões de armazenamento de nuvem: armazenamento de tabela e armazenamento de blob.O padrão de armazenamento de tabela permite que os aplicativos armazenar pares chave/valor após uma estrutura de tabela, enquanto o padrão de armazenamento do blob pode ser usado para armazenar quaisquer dados.

Comunicação padrões de troca de mensagens esses padrões endereço.Tecnologia azure aproveita o WCF (Windows Communication Foundation) e APIs de REST para comunicação de serviço da Web.Você deve considerar os modelos de confiança parcial e a natureza sem monitoração de estado do aplicativo durante a implementação de padrões de comunicação.

Padrões de administração padrões de administração diferenciar dois principais aspectos do gerenciamento de serviços: serviço de implantação e gerenciamento de nível de serviço.Padrões de implantação organizar a definição de serviço, configuração e monitoramento, enquanto outros padrões abordam o gerenciamento de nível de serviço e a manutenção operacional regular.

Agora vamos examinar a nuvem tipos de aplicativos em detalhes.Irá classificar tipos de aplicativos de nuvem em três categorias com base nos tipos de cenários que cada endereços.A primeira categoria é aplicativos da Web.Eles incluem aplicativos da Web hospedados tradicionais, emergentes composto de aplicativos que podem utilizar dois ou mais fontes de dados e serviços.Esses aplicativos precisam de recursos de escalabilidade e para baixo de escala automáticos.Um aplicativo como Facebook é um bom exemplo.Em tais situações da organização pode ser uma inicialização que deseja gastar pequena maiúscula na infra-estrutura ao ser capaz de manipular a demanda crescente.

Em seguida não existem os aplicativos analíticos cuja função principal é executar operações intensivas do processador e dados mineração, com freqüência sobre os mesmos dados várias vezes e, portanto, eles exigem acesso a um grande volume de armazenamento de capacidade e processador disponibilidade todas ao mesmo tempo.Não é necessário pagar por tal capacidade grande vinte e quatro horas por dia, sete dias uma semana, no entanto, para serviços de nuvem sejam atraentes.

Finalmente, há o paralelo computação aplicativos que precisam executar várias tarefas em paralelo para que um grande projeto pode ser executado em um período curto de tempo.Novamente, o pagamento para a um período--somente grande capacidade cloud computação pode fornecer é uma solução econômica.

Nem todos os aplicativos são adequados para a execução na plataforma de nuvem.Os fatores de limitação óbvios são possível bloqueio com um provedor de nuvem, interfaces abertas para comunicações, limitações do modelo de confiança, eficiência da movimentação de dados e saia da nuvem, integração com os existentes serviços fora da plataforma de nuvem e questões legais/privacidade, segurança de dados.a Figura 4 lista alguns cenários que são adequados para nuvem de computação e Figura 5 lista padrões adequados, cenários e recursos.

A Figura 4 tipos de aplicativo apropriados para computação de nuvem
Tipo de aplicativo de nuvem Contexto Exemplo de cenário
Os aplicativos da Web Aplicativos da Web tradicionais do host e aplicativos interativos que compõem a dois ou mais fontes de dados e serviços. Uma empresa de inicialização criar um aplicativo de colaboração da Web esperando gastar pequena maiúscula na infra-estrutura.
Computação paralela Em grande escala execução paralela de tarefas de computação.Normalmente, essas tarefas executar por um curto período de tempo utilizando mais recursos de computação e armazenamento. Um jornal decide digitization de relatórios para melhor o consumo da Web.
Aplicativos analíticos Processamento analítico executa várias analítico e algoritmos de mineração de dados sobre os mesmos dados várias vezes. Financeira empresa executar simulações Monte Carlo em dados financeiros para avaliar os riscos periodicamente.
Figura 5 padrões, recursos e seus cenários correspondentes
Considerações sobre sistema Categorias padrão Contexto Recurso do Windows Azure Exemplo de cenário
Calcular Instância do aplicativo sob demanda Aplicativos que precisam de recursos de escalabilidade e para baixo de escala. Gerenciamento automatizado de Web e funções de trabalho Permitir que sites de armazenamento de varejo esteja disponível durante eventos especiais.
  Operador Executar trabalhos em lotes paralela ou aplicativos de plano de fundo. Aproveitando várias instâncias de funções de trabalho para executar tarefas em segundo plano Usando agendadores para análise processamento executando tarefas em segundo plano em paralelo.
Armazenamento Armazenamento de blob Armazenamento de grande quantidade de dados não estruturados. Aproveitando Azure blob de armazenamento Empresa Armazenando relatórios de conformidade legal no armazenamento de backup.
  Armazenamento estruturado Armazenar dados em uma estrutura de tabela ao não exigindo semântica relacional completo. Armazenamento de tabela azure Um armazenamento estruturado para manter state—i.e um aplicativo da Web.armazenamento de ordem de compra ou informações de carrinho de compras.
Comunicação Serviço de interface (Web e Web service API) Expor recursos de aplicativos pelos serviços de interface do usuário e da Web. Suporte azure para criar aplicativos usando ASP.NET, Silverlight, o WCF Web Services Empresa compilar solução de gerenciamento de ativos digitais expor APIs para outros serviços.
  Integração orientado a serviços Chamando serviços Web externos usando protocolos padrão da Web. Plataforma azure oferece suporte a clientes do WCF e APIs de REST Aplicativos da Web aproveitando os serviços de reunião ao vivo hospedado pela Microsoft para colaboração.
  Mensagens Compartilhar mensagens entre aplicativos de uma forma escalonável, confiável e assíncrono. Aproveitando o serviço de armazenamento Azure fila para Web a comunicação de função de trabalho Aplicativo da Web informando um Agendador para executar uma tarefa específica.
Administração Implantação de nuvem Implantação de aplicativos com configurações desejadas, como requisitos de escalabilidade e alta disponibilidade. Separação de definição de serviço, configuração de serviços e empacotamento para ajudar as funções apropriadas Um varejo armazenar Web Configurando portal para automaticamente escalabilidade quando uso excede o limite e escala-para baixo conforme necessário.
  Design de operações Como fazer meu aplicativo pronto de operações fornecendo o status da integridade e log. Usando a API do Windows Azure RoleManger.WriteToLog e substituindo RoleEntrypoint.GetHealthStatus() na função de trabalho Os desenvolvedores a criar aplicativos sejam operações amigáveis através de instrumentação de nuvem.
  Gerenciamento de instância do serviço Iniciar, Parar e suspender aplicativos de nuvem.Gerencie configurações de serviço. Manipulação automática de alterações de configuração dinâmica e condições de falha Um administrador de aplicativo da Web usando o portal Azure para gerenciar o estado do aplicativo.
  Gerenciamento de alertas Enviando mensagens instantâneas, email ou alertas sobre recursos e informações de faturamento. Fornecida através de integração ao vivo Ativar aplicativos para enviar IMs.Notificação de padrão sobre o uso do recurso.
  Gerenciamento de nível de serviço Obter informações sobre o consumo de recurso do aplicativo como tempo de processador, largura de banda. Gerenciamento de serviço automatizado por meio de abordagem com base em modelo ISV procurando informações de uso de cobrança e recursos sobre o aplicativo implantado.

No Windows Azure, funções da Web são adequadas para executar aplicativos da Web interativos enquanto as funções de trabalho são adequadas para aplicativos de plano de fundo.Dados são armazenados nos serviços de armazenamento Azure do blob e tabela.Comunicação inter-Role está habilitada por meio de um serviço de fila, que fornece uma troca de mensagens assíncronas.A plataforma oferece suporte a com base em WCF Web services e clientes com ligação HTTP básica e WS *.Serviços de armazenamento são expostos através de interfaces REST-estilo para consumo mais fácil por outros aplicativos e provedores de nuvem.

Como você sabe, padrões oferecem soluções flexíveis para problemas comuns no desenvolvimento de software.Em seguida identificará categorias comuns do padrão correspondente aos tipos de aplicativos acima.

Em vez de tentar descrever cada padrão individual em camadas, VOU enfatizar áreas problemáticas ampla e categorias padrão associado e mostrar como esses padrões são implementados no contexto de desenvolvimento Azure.

Um exemplo do mundo real

Deixe-me apresentar uma situação que irá ajudar a ilustrar algumas desses conceitos.A Fabrikam, um ISV, gostaria de criar um gerenciamento de ativos digitais hospedado aplicativo da Web.Este aplicativo permite aos usuários finais armazenar imagens digitais na nuvem.Os usuários devem poderá visualizar as imagens enviadas, marca-los e anotá-los com informações de local.O aplicativo deve permitir que usuários usem seus próprios aplicativos de área de trabalho acessar essas imagens diretamente do armazenamento.a Figura 6 represente uma exibição arquitetura geral das serviços expostos por Fabrikam.Como mostra o diagrama, a Fabrikam expõe um aplicativo da Web e o serviço da Web para os usuários finais para gerenciar seus ativos digitais.Esses serviços armazenam e recuperar ativos digitais de armazenamento de ativo implementado na parte superior de serviços do Windows Azure blob.A Fabrikam implementa um processador de plano de fundo para executar tarefas como marcação, geração de miniatura e assim por diante.

fig04.gif

A Figura 6 Fabrikam hospedados em Azure do Windows

Vamos ver como criar, desenvolver e implantar um aplicativo para a plataforma de serviços Azure.As discussões que seguem demonstram principais conceitos e recursos disponíveis no Windows Azure.Você pode baixar o código e documentação para saber como o cenário inteiro é implementado e hospedado em Azure do Windows.

Design de aplicativo e desenvolvimento

A primeira etapa é compreender os cenários de aplicativos, selecione apropriados padrões, práticas recomendadas e modelos de programação.Durante esse processo, você identificará o tipo do aplicativo e cargas de trabalho de direcionamento Azure do Windows.Além disso, você descobrirá os padrões de armazenamento de mensagens e dados inter-application.Aqui, considerarei que a Fabrikam está criando um aplicativo da Web interativo com necessidades de escalabilidade e processer um plano de fundo para gerar os metadados de ativos digitais.O cenário acima precisa funções Azure Web e o trabalho, respectivamente.Além disso, a Fabrikam precisa de armazenamento de blob para armazenar ativos digitais e metadados, interfaces de serviço para expor ativos e padrões de mensagens para comunicação.

Para facilitar o desenvolvimento, o SDK do Azure Windows vem com um ambiente de desenvolvimento que simula Azure do Windows na máquina local, habilitando assim off-line de desenvolvimento e depuração.O SDK oferece suporte a funções da Web e o trabalho, armazenamento, modelos do Visual Studio, ferramentas para embalagem, exibindo e gerenciamento de instâncias da função, como um suplemento do Visual Studio que permite que a experiência F5.Você pode baixar o SDK do Centro de Download da Microsoft.

Para começar, use as ferramentas de Azure do Windows para o Microsoft Visual Studio para criar um novo projeto usando os modelos de projeto serviço nuvem.Você pode adicionar interface de usuário necessárias, lógica do aplicativo e processamento para o aplicativo da Web de entrada.Como alternativa, você pode iniciar de um aplicativo da Web do ASP.NET existente.Porque o aplicativo será executado em confiança parcial, evite chamar APIs que violam essa restrição.Para obter detalhes sobre essa restrição, por favor, consulte oWindows SDK Azure confiar em referência de diretiva.

Em seguida, importar Microsoft.ServiceHosting.ServiceRuntime assembly e usar as APIs respectivas para habilitar log, ler a configuração de ambiente local e ler seções de configuração de aplicativo arquivo de definição de serviço, como mostrado abaixo.

 // Writing log information
 RoleManager.WriteLog ("Information", "message to show in the log file"); 
 // Getting service configuration information 
 RoleManager.GetConfigurationSetting("MyConfigSection"); 

// Getting local environment; code snippet below shows getting a pointer
//to a local file 
ILocalResource resource = RoleManager.GetLocalResource(    "ComputeLocalStorage")

A propósito, é uma prática recomendada programação substituir o log acima e código de acesso com reutilizável de aplicativo ao recurso bloqueia (blocos de log e de configuração), como blocos de aplicativos Microsoft Enterprise Library. Você pode implementar provedores específicos para o Windows Azure gerenciamento de configuração e de log e conecte o tempo de execução. Essas práticas recomendadas dissociar aplicativos de APIs específico da plataforma e ajudam a reutilização maior entre o ambiente em premissa e nuvem.

Necessidades de armazenamento de seu aplicativo precisará ser reescrito para aproveitar os padrões de armazenamento Azure suporte. Resolverá isso em breve.

Em seguida, adicionar um projeto de função do trabalho em seu projeto e, em seguida, abra WorkRole.cs. Esse arquivo inclui uma classe chamada WorkerRole deriva da classe RoleEntryPoint. Essa classe fornece métodos para gerenciar a inicialização, iniciar e parar de um serviço de função de trabalho, bem como para monitorar a integridade do serviço.

Nesta etapa você normalmente substituir dois métodos, conforme mostrado na A Figura 7 .

A Figura 7 WorkerRole

public class WorkerRole : RoleEntryPoint
{
  public override void Start()
  {
      RoleManager.WriteToLog("Information", "Generating metadata from digital assets");

      while (true)
      { 
            RoleManager.WriteToLog("Information", "background task is executing thumbnail extraction");
            Thread.Sleep (1000);  
      }
  }

  public override RoleStatus GetHealthStatus()
  {
            return RoleStatus.Healthy;
  }
}

Agora execute o aplicativo no desenvolvimento local tecido, pressionar F5. Você verá logs escritos nas instâncias de console da Web e funções de trabalho.

Agora vamos configurar um armazenamento de blob e acessá-lo da função da Web.

Primeiro você precisará definir até o blob de armazenamento conta information.You precisará especificar os seguintes parâmetros:

AccountName: Especifica o nome da sua conta Windows Azure.

AccountSharedKey: Especifica a chave usada para autenticar uma solicitação feita armazenamento Azure do Windows. Para autenticar uma solicitação, você deve entrar a solicitação com a chave para a conta que está fazendo a solicitação.

BlobStorageEndpoint: Especifica o URI base do serviço de armazenamento blob.

ContainerName: Especifica o nome do recipiente blob usado para armazenar imagens para este aplicativo.

Por exemplo, dê uma olhada nas seguintes configurações:

  <ConfigurationSettings>
   <Setting name="AccountName" value="fabrikamAccount" />
   <Setting name="AccountSharedKey" value="Eby111M02xNOcqFlqUwJPLlmEtlCD
   XJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBekso45Gw==" />
   <Setting name="BlobStorageEndpoint" value="http://127.0.0.1:10000"/>
   <Setting name="ContainerName" value="fabrikamImagegallery"/>
  </ConfigurationSettings>

A API de REST para o armazenamento de blob expõe dois recursos: recipientes e blobs. Um recipiente é um conjunto de blobs; cada blob deve pertencer a um recipiente. BLOBs são gravadas usando operações de PUT como definido pela API REST. Usando essas APIs que você pode criar um namespace hierárquico para organizar ativos como fabrikamImagegallery/imagens e fabrikamImagegallery/documentos, onde fabrikamImagegallery é o nome do recipiente e das imagens faz referência ao nome de blob. Devemos observar que cada blob pôde ser construído de blocos de um máximo de 4MB de tamanho para o gerenciamento eficiente.

Trabalhar com a API de REST é bastante complicado e, portanto, o SDK vem acompanhado de uma biblioteca de exemplo que abstrai as chamadas REST e expõe os padrões de acesso conhecida através das classes BlobContainer e StorageAccountInfo.

A Figura 8 mostra como trabalhar com o armazenamento de blob.

A Figura 8 usando o armazenamento de blob

BlobStorage blobStorage = BlobStorage.Create(StorageAccountInfo.GetDefaultBlobStorageAccountFromConfiguration());

BlobContainer newContainer = blobStorage.GetBlobContainer("ContainerName");

newContainer.CreateContainer(null, ContainerAccessControl.Public);

this.container.ListBlobs(String.Empty, false);

BlobProperties properties = new 
 BlobProperties(string.Format(CultureInfo.InvariantCulture, "image_{0}", "idenitifier1"));

NameValueCollection metadata = new NameValueCollection();
metadata["Id"] = id;
metadata["Filename"] = "filename";
metadata["Tags"] = "Image";

properties.Metadata = metadata;

this.container.CreateBlob(properties, imageBlob, true);

Agora, vamos criar um serviço de armazenamento de fila para enviar a mensagem de uma função da Web para uma função de trabalho. O serviço Windows Azure fila fornece confiável e persistente mensagens dentro e entre serviços. A API de REST para o serviço de fila expõe dois recursos: filas e mensagens. É possível criar um número ilimitado de filas de cada identificado usando um nome exclusivo. O tamanho máximo da mensagem é restrito a 8 KB. Você é responsável por excluir a mensagem após a leitura; caso contrário, a mensagem permanecerão na fila para o horário especificado.

A Figura 9 Mostra como acessar o armazenamento de fila e mensagens em uma função de trabalho.

Figura 9 as operações de armazenamento de fila

public class WorkerRole : RoleEntryPoint
{
        public override void Start()
        {
            Uri baseUri = new               
                 Uri(RoleManager.GetConfigurationSetting("QueueEndpoint"));
            string accountName = RoleManager.GetConfigurationSetting("AccountName");
            string accountKey =  
                RoleManager.GetConfigurationSetting("AccountSharedKey");

           StorageAccountInfo account = new StorageAccountInfo(
           baseUri,
                null,
                accountName,
                accountKey);

            QueueStorage service = QueueStorage.Create(account);
            MessageQueue queue = service.GetQueue("fabrikamimageprocessingqueue");

            while (true)
            {
                Thread.Sleep(10000);
                if (queue.DoesQueueExist())
                {
                   Message msg = queue.GetMessage();
                   if (msg != null)
                   {

                      queue.DeleteMessage(msg);
                   }
                }
            }
        }
….
}

Agora você está pronto para experimentar este aplicativo na malha de desenvolvimento local, acertando em F5. Você verá entradas de recebimento de funções da Web e envio de mensagens para funções de trabalho por meio de filas. Agora você concluiu todas as atividades necessárias de desenvolvimento necessárias e está pronto para publicar o aplicativo Azure.

Implantando o serviço

A implantação de serviços para Windows Azure é relativamente simples. No entanto, você primeiro precisará decidir quais informações para incluir no arquivo de definição (informações de configuração de aplicativo) de serviço e configuração do serviço arquivo (requisitos de ambiente), como empacotar o aplicativo, se você pode utilizar ferramentas existentes para criar e carregar pacotes e como armazenar seus pacotes no armazenamento de nuvem e depois implantar Azure.

Eis como eu tratará esses requisitos para o aplicativo de exemplo.

A Fabrikam ISV tem desenvolvedor, implantação e funções operacionais para gerenciar seus aplicativos de nuvem. Os desenvolvedores criar um arquivo de definição de serviço que contém informações sobre o aplicativo. O arquivo de definição de serviço (.csdef) define as funções disponíveis para um serviço, especifica os pontos de extremidade de serviço e estabelece os parâmetros de configuração para o serviço. As configurações de definição de serviço não podem ser alteradas após a implantação de um serviço. Esse arquivo se torna parte do arquivo de pacote de serviço durante o processo de embalagem.

Os desenvolvedores também criar um arquivo de configuração de serviço (especificando o número de instâncias necessárias e informações de conta Azure) para depuração local e Azure preparação de implantação. O arquivo de configuração de serviço (.cscfg) Especifica valores para as definições de configuração para um ou mais instâncias de função dentro do serviço em execução. Equipe operacional dinamicamente pode modificar essas configurações de serviço sem reimplantar o serviço. O arquivo de configuração do serviço não é fornecido com o serviço, mas é carregado para a estrutura de Azure Windows como um arquivo separado.

A equipe de implantação atualiza o arquivo de configuração serviços antes da implantação de produção com informações de específicas a contas Azure e requisitos operacionais (número de instâncias de produção necessárias).

Os desenvolvedores ou a equipe de implantação criar pacotes de implantação Azure usando ferramentas do Visual Studio ou a ferramenta de CSPack que vem com o SDK Azure.

É possível armazenar pacotes de implantação no armazenamento de blob Azure e recuperar ao implantar para a plataforma de nuvem Azure

O arquivo de pacote de serviço (.cspkg) é um arquivo zipado que contém definições de função e todos os arquivos (binários, imagens e config) empacotados em um artefato de relacionados de função. Você pode gerar esses pacotes usando o Visual Studio ou usando a ferramenta CSPack. Quando você usar o Visual Studio para executar no tecido desenvolvimento o pacote criado será têm uma extensão de .CSx. No entanto quando você usa o recurso "Publish", ele cria um arquivo .cspkg, que é uma versão (zipada) e criptografada do arquivo .CSx. Isso criptografadas e versão (zipada) com extensão .cspkg for carregado para a nuvem.

Agora você pode carregar seu arquivo de configuração do serviço (.cscfg) e o arquivo de pacote (.cspkg) para Windows Azure. Para isso, primeiro você precisará obter contas de computadores e de armazenamento Windows Azure do Portal do desenvolvedor Azure serviços. Depois de obter essas contas pode implantar o pacote para a nuvem Entretanto o portal do desenvolvedor Azure. Quando arquivos são carregados, vai ser fornecidas a você com uma URL interna de teste que você pode usar para testar o serviço na estrutura de Azure do Windows. Quando você move para a produção, você receberá a URL de produção.

Administração

Funções administrativas abrangem o gerenciamento, governança e aspectos operacionais dos aplicativos implantados em um ambiente de nuvem. Aproveitando as plataformas de nuvem para hospedagem de aplicativos assume que os serviços de implantação são em um ambiente controlado com gerenciamento de nível de serviço apropriadas, gerenciamento de recursos, a configuração de serviço, modelos de segurança/relação de confiança e monitoramento. Você deve estar familiarizado com os recursos funcionais chaves necessários para gerenciamento de serviços. Eles incluem:

  • Desenvolvimento de serviços com recomendações de implementação de operações-amigável, incluindo instrumentação adequada.
  • Monitorando a integridade e disponibilidade dos aplicativos de nuvem e serviços.
  • Coleta as métricas e relatórios sobre o uso do serviço, o desempenho e de faturamento.
  • Ativando automatizado de configuração de serviços e atualizar configurações de serviço.

No Windows Azure, agentes monitoram cada instância de máquina virtual para condições de falha e reunir métricas sobre falhas, medidas de desempenho e métricas de uso.

Estrutura azure automatiza o aspecto de provisionamento e gerenciamento com a entrada humana limitado. Pessoas e processo são erro sujeito. Essa automação ajuda a evitar erros humanos. No Windows Azure, aplicativos executados em uma proteção de confiança parcial, as solicitações são balanceada de carga e condições de falha são automaticamente gerenciadas.

Como desenvolvedor, você deve estar familiarizado com os comportamentos de operação do serviço. Esses comportamentos são documentados como parte de modelos de definição e configuração do serviço e comunicados para a plataforma nuvem para facilitar a automação.

Além disso, siga estas práticas recomendadas:

Adicionar informações de log no código

RoleManager.WriteLog ("Information", "message to show in the log file"); 
  • Método Overiding GetHeatlthStatus
public override RoleStatus GetHealthStatus()
{
      // return the health status of worker role.
      return RoleStatus.Healthy;
 }
  • Obtendo arquivos de log para analisar os estados de aplicativo

Gerenciamento de serviços Azure do Windows

Em Windows Azure, gerenciamento de serviços segue uma abordagem controlado por modelos onde os modelos são usados para coletar informações de configuração desejada de desenvolvedores e implantadores.Estrutura azure usa esses modelos para gerenciar o ciclo de vida serviço, incluindo atualizações de configuração dinâmica, tratamento de falhas automatizada e monitoramento de serviço.Windows Azure evita ponto único de falhas (hardware ou software) apresentando falhas domínios onde cada função é isolada em vários calcular nós ou máquina racks.Além disso, Windows Azure garante serviços são até e em execução durante a atualização (rolante Avançar ou retroceder um subconjunto de serviço), solicitando a atualização de domínios porém configurações.

Você deve usar a opção de "Configurar" e a opção de log de cópia no portal Azure para copiar as mensagens de log para o armazenamento de blob.

Quando a cópia for concluída você poderia acessar os logs do armazenamento de blob usando o modelo de programação descrito anteriormente.

No futuro Windows Azure irá expor interfaces de gerenciamento para o acesso e gerenciamento de controle e atividades operacionais.Isso ajuda em locais serviço gerenciamento ferramentas para monitorar e gerenciar aplicativos de nuvem.

Conclusão

Noções básicas sobre a nuvem de modelos de arquitetura de computação, localizando padrões relevantes, Decidindo sobre o modelo de programação e habilitar o gerenciamento automatizado são fundamentais para o sucesso da nuvem computação evolução.Windows Azure foi projetado com desenvolvedores em mente, permitindo que os desenvolvedores rápida e facilmente criar, implantar, gerenciar e distribuir aplicativos da Web e serviços.

Como desenvolvedor, você deve acumular um conjunto principal de padrões que ajudará a desenvolver aplicativos de nuvem com mais eficiência.Além disso, você deve se lembrar capturar e compartilhar recorrentes soluções para problemas e outros padrões emergentes, que nosso soluções e produtos o serviço de podem de mensagens fornecem melhor suporte de configuração-a-inicial para a nuvem principais padrões de computação.

Eu gostaria de agradecer a Steve Marx, Jason Hogg, David Hill, Fred Chong, Eugenio Pace e Nataraja Koduru para seus comentários valiosos sobre este artigo.

Joseph joshy é um arquiteto principal com Microsoft Services Managed Solutions grupo.Suas habilidades principais e especialização incluem computação distribuída, computação de grade e serviços da Web.Ele é autor do livro Grid Computing (Prentice Hall, 2004) e um inventor prolific, com mais de 35 patentes no arquivo.Além disso, ele escreveu vários artigos técnicos sobre computação distribuída e desenvolvimento do processo comercial.Joshy pode ser contatado pelojojoseph@Microsoft.com.