Armazenamento mínimo – Feed de alterações para replicar dados

Porta da frente do Azure
Serviço de aplicativo do Azure
Funções do Azure
Azure Cosmos DB
Armazenamento de Tabelas do Azure

Este artigo apresenta uma solução de alta disponibilidade para um aplicativo Web que usa grandes quantidades de dados que devem estar disponíveis por um período de tempo específico. Ele armazena os dados no Azure Cosmos DB e usa o feed de alterações do Azure Cosmos DB para replicar os dados para o armazenamento secundário. Após o período de tempo especificado, o Azure Functions é usado para excluir os dados do Azure Cosmos DB.

Arquitetura

Arquitetura de um sistema resiliente que utiliza dois tipos de armazenamento para reduzir custos.

Baixe um Arquivo Visio dessa arquitetura.

Fluxo de dados

  1. O cliente se autentica com o Microsoft Entra ID e recebe acesso a aplicativos Web hospedados no Serviço de Aplicativo do Azure.
  2. O Azure Front Door, um firewall e balanceador de carga de camada 7, alternará o tráfego do usuário para a região em espera se houver uma interrupção regional.
  3. O Serviço de Aplicativo hospeda sites e APIs Web RESTful. Os clientes de navegador executam aplicativos AJAX que usam as APIs.
  4. As APIs da Web delegam responsabilidade ao código hospedado pelo Functions para tratar tarefas em segundo plano. As tarefas são enfileiradas nas filas do Armazenamento de Filas do Azure.
  5. As mensagens enfileiradas acionam as funções, que executam as tarefas em segundo plano.
  6. O Cache do Azure para Redis armazena em cache os dados do banco de dados para as funções. Usando o cache, a solução descarrega a atividade do banco de dados e acelera os aplicativos de função e os aplicativos Web.
  7. O Azure Cosmos DB contém dados recém-gerados.
  8. O Azure Cosmos DB emite um feed de alterações que pode ser usado para replicar alterações.
  9. Um aplicativo de função lê o feed de alterações e replica as alterações nas tabelas do Armazenamento de Tabela do Azure. Outro aplicativo de função remove periodicamente dados expirados do Azure Cosmos DB.
  10. O armazenamento de tabela fornece armazenamento de baixo custo.

Componentes

  • O Azure Microsoft Entra ID é um serviço de gerenciamento de identidade e acesso multilocatário que pode sincronizar com um diretório local.
  • ODNS do Azure é um serviço de hospedagem de alta disponibilidade para domínios DNS que fornece aplicativos com consultas DNS e atualizações rápidas para registros DNS. Gerenciar o DNS do Azure é como gerenciar outros serviços do Azure, com as mesmas credenciais, APIs, ferramentas e cobrança.
  • O Azure Front Door é uma CDN (rede de entrega de conteúdo) segura e um balanceador de carga com failover instantâneo. Ele opera na borda perto dos usuários, acelerando a entrega de conteúdo enquanto protege aplicativos, APIs e sites contra ameaças cibernéticas.
  • O Serviço de Aplicativo é um serviço totalmente gerenciado para criar, implantar e colocar em escala aplicativos Web. É possível compilar aplicativos usando .NET, .NET Core, Node.js, Java, Python ou PHP. Os aplicativos podem ser executados em contêineres ou em Windows ou Linux. Em uma migração de mainframe, as telas de front-end ou a interface da Web podem ser codificadas como APIs REST baseadas em HTTP. Eles podem ser segregados e podem ser sem monitoração de estado para orquestrar um sistema baseado em microsserviços. Para saber mais sobre APIs da Web, confira Design de API da Web RESTful.
  • O Functions fornece um ambiente para executar pequenos trechos de código, denominados funções, sem precisar estabelecer uma infraestrutura de aplicativo. É possível usá-lo para processar dados em massa, integrar sistemas, trabalhar com dispositivos IoT (Internet das Coisas), além de criar APIs simples e microsserviços. Com os microsserviços, é possível criar servidores que se conectam aos serviços do Azure e estão sempre atualizados.
  • O Armazenamento do Microsoft Azure é um conjunto de serviços de nuvem extremamente escalonáveis e seguros para dados, aplicativos e cargas de trabalho. Ele inclui Arquivos do Azure, Armazenamento de Tabelas e Armazenamento de Filas. Geralmente, os Arquivos do Azure são uma ferramenta eficaz para migrar cargas de trabalho de mainframe.
  • O Armazenamento de Filas fornece filas de mensagens simples, econômicas e duráveis para cargas de trabalho grandes.
  • O Armazenamento de Tabelas é um armazenamento de valor-chave NoSQL para desenvolvimento rápido que usa conjuntos de dados semiestruturados em massa. As tabelas são sem esquema e se adaptam prontamente, conforme as necessidades. O acesso é rápido e econômico para muitos tipos de aplicativos e, em geral, com menor custo do que outros tipos de armazenamento com chave.
  • O Cache do Azure para Redis é um serviço de cache na memória e corretor de mensagens totalmente gerenciado para compartilhar dados e estados entre recursos de computação. Ele inclui ambos, o Redis de código aberto e um produto comercializado do Redis Labs como serviços gerenciados. Você pode melhorar o desempenho de aplicativos de processamento de transações on-line de alta taxa de transferência, projetando-os em grande escala e usando um armazenamento de dados na memória, como o Cache do Azure para Redis.
  • O Azure Cosmos DB é um serviço de banco de dados de vários modelos distribuído globalmente da Microsoft, que permite dimensionar soluções de forma elástica e independente a taxa de transferência e armazenamento em qualquer número de regiões geográficas. Ele oferece garantias de taxa de transferência, disponibilidade, latência e consistência com contratos de nível de serviço (SLAs) abrangentes.

Alternativas

  • O Gerenciador de Tráfego do Azure direciona solicitações de DNS recebidas nas regiões globais do Azure com base na sua escolha de métodos de roteamento de tráfego. Ele também fornece failover automático e roteamento de desempenho.
  • A Rede de Distribuição de Conteúdo do Azure armazena em cache o conteúdo estático em servidores de borda para resposta rápida e usa otimizações de rede para melhorar a resposta para conteúdo dinâmico. A Rede de Distribuição de Conteúdo é especialmente útil quando a base de usuários é global.
  • O AKS (Serviço de Kubernetes do Azure) é o serviço Kubernetes totalmente gerenciado para implantar e gerenciar aplicativos conteinerizados. Você pode usá-lo para implementar uma arquitetura de microsserviços cujos componentes são dimensionados de forma independente sob demanda.
  • As Instâncias de Contêiner do Azure apresentam uma forma rápida e simples de executar tarefas sem precisar gerenciar a infraestrutura. Isso é útil durante o desenvolvimento ou para executar tarefas não agendadas.
  • O Barramento de Serviço do Azure é um serviço de mensagem de nuvem confiável para integração híbrida simples. Ele pode ser usado em vez de Armazenamento em Fila nessa arquitetura. Para saber mais, confira Filas do Armazenamento e filas do Barramento de Serviço – comparações e diferenças.

Detalhes do cenário

Essa solução usa o Azure Cosmos DB para armazenar o grande volume de dados que o aplicativo Web usa. Os aplicativos Web que manuseiam grandes volumes de dados aproveitam a capacidade do Azure Cosmos DB de dimensionar de forma elástica e independente a taxa de transferência e o armazenamento.

Outro componente importante da solução é o feed de alterações do Azure Cosmos DB. Quando são feitas alterações no banco de dados, o fluxo de feed de alterações é enviado para um gatilho do Functions orientado a eventos. Uma função executa e replica as alterações em tabelas de Armazenamento de Tabela, que fornecem uma solução de armazenamento de baixo custo.

O aplicativo Web precisa dos dados por apenas um período limitado de tempo. A solução aproveita esse fato para reduzir ainda mais os custos. Outra função específica executa e exclui periodicamente dados expirados do Azure Cosmos DB. Além de serem disparadas, as funções também podem ser agendadas para execução em horários definidos.

Possíveis casos de uso

A arquitetura é apropriada para qualquer aplicativo que:

  • Use um grande volume de dados.
  • Exija que os dados estejam sempre disponíveis quando forem necessários.
  • Use dados que expirem.

Exemplos incluem aplicativos que:

  • Acompanham os hábitos de consumo e o comportamento de compra dos clientes.
  • Fazem previsão do tempo.
  • Oferecem sistemas de tráfego inteligentes, implementam sistemas de tráfego inteligentes ou usam tecnologia inteligente para monitorar o tráfego.
  • Analisam dados de IoT de fabricação.
  • Exibem dados de medidores inteligentes ou usam tecnologia inteligente para monitorar dados de medidores.

Considerações

Estas considerações implementam os pilares do Azure Well-Architected Framework, que é um conjunto de princípios de orientação que podem ser usados para aprimorar a qualidade de uma carga de trabalho. Para obter mais informações, consulte Microsoft Azure Well-Architected Framework.

  • Ao implementar e manter essa solução, você incorre em custos extras.
  • Usar o feed de alterações para replicação exige menos manutenção de código do que fazer a replicação no aplicativo principal.
  • Você precisa migrar os dados existentes. O processo de migração exige scripts ou rotinas ad-hoc para copiar dados antigos para contas de armazenamento. Ao migrar os dados, use carimbos de data/hora e sinalizadores de cópia para acompanhar o progresso da migração.
  • Para evitar a exclusão de entradas do armazenamento secundário da Tabela do Azure, ignore os feeds de exclusão gerados quando suas funções excluem entradas do Azure Cosmos DB.

Colaboradores

Esse artigo é mantido pela Microsoft. Ele foi originalmente escrito pelos colaboradores a seguir.

Autor principal:

  • Nabil Siddiqui | Arquiteto de Soluções na Nuvem - Inovação Digital e de Aplicativos

Próximas etapas