Partilhar via


Armazenamento mínimo – altere o feed para replicar dados

Azure Front Door
Serviço de Aplicações 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 lida com grandes volumes de dados que precisam ser acessíveis dentro de um período de tempo específico. A solução envolve usar o Azure Cosmos DB como o armazenamento de dados primário e usar o feed de alterações do Azure Cosmos DB para replicar dados para armazenamento secundário de baixo custo. Quando o período de tempo especificado expira, o Azure Functions é usado para excluir os dados do Azure Cosmos DB. Os dados no armazenamento secundário permanecem disponíveis por um longo período de tempo para permitir outras soluções para fins de auditoria e análise. A solução também oferece alta durabilidade ao replicar dados para diferentes serviços de dados.

Arquitetura

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

Transfira um ficheiro do Visio desta arquitetura.

Fluxo de dados

  1. O cliente se autentica com a ID do Microsoft Entra 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, alterna o tráfego do usuário para a região de espera se houver uma interrupção regional.
  3. O Serviço de Aplicativo hospeda sites e APIs da Web RESTful. Os clientes do navegador executam aplicativos JavaScript e XML assíncronos (AJAX) que usam as APIs.
  4. As APIs da Web delegam a responsabilidade ao código hospedado pelo Functions para lidar com 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 Redis do Azure armazena em cache dados de 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 gerados recentemente.
  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 tabelas fornece armazenamento de baixo custo.

Componentes

  • O Microsoft Entra ID é um serviço de gerenciamento de identidade e acesso que pode ser sincronizado com um diretório local. Nessa arquitetura, ele autentica usuários e concede acesso a aplicativos Web hospedados no Serviço de Aplicativo.
  • O DNS do Azure é um serviço de hospedagem de alta disponibilidade para domínios DNS (Sistema de Nomes de Domínio). Nessa arquitetura, o DNS do Azure fornece resolução DNS e para o aplicativo Web exposto por meio da Porta da Frente do Azure.
  • O Azure Front Door é uma rede segura de entrega de conteúdo e balanceador de carga. Nessa arquitetura, ele acelera a entrega de conteúdo, fornece recursos de failover e protege aplicativos contra ameaças cibernéticas.
  • O Serviço de Aplicativo é um serviço totalmente gerenciado para criar, implantar, hospedar e dimensionar aplicativos Web. Você pode criar aplicativos usando .NET, .NET Core, Node.js, Java, Python ou PHP. Os aplicativos podem ser executados em contêineres ou no Windows ou Linux. Em uma migração de mainframe, você pode codificar as telas front-end ou a interface da Web como APIs REST baseadas em HTTP. Você pode separá-los e torná-los apátridas para orquestrar um sistema baseado em microsserviços. Para obter mais informações sobre APIs da Web, consulte Design da API da Web RESTful. Nessa arquitetura, o Serviço de Aplicativo hospeda a interface Web e as APIs REST para o aplicativo.
  • Functions fornece um ambiente para executar pequenas partes de código, chamadas funções, sem ter que estabelecer uma infraestrutura de aplicativo. Você pode usá-lo para processar dados em massa, integrar sistemas, trabalhar com dispositivos de Internet das Coisas (IoT) e criar APIs e microsserviços simples. Com os microsserviços, você pode criar servidores que se conectam aos serviços do Azure e permanecem sempre atualizados. Nessa arquitetura, o Functions lida com tarefas em segundo plano, como replicar dados e excluir registros expirados.
  • O Armazenamento do Azure é um conjunto de serviços de nuvem massivamente escaláveis e seguros para dados, aplicativos e cargas de trabalho. Ele inclui o Azure Files, que serve como uma ferramenta eficaz para migrar cargas de trabalho de mainframe.
    • O armazenamento em fila fornece filas de mensagens simples, econômicas e duráveis para grandes cargas de trabalho. Essa arquitetura usa o Armazenamento em Fila para mensagens de tarefas.
    • O Armazenamento de Tabela é um armazenamento de chave-valor NoSQL para desenvolvimento rápido que usa conjuntos de dados semiestruturados maciços. As tabelas não têm esquema e adaptam-se prontamente à medida que as necessidades mudam. O acesso é rápido e econômico para muitos tipos de aplicativos, e normalmente custa menos do que outros tipos de armazenamento com chave. Essa arquitetura usa o Armazenamento de Tabela para armazenar uma cópia sincronizada e reestruturada dos dados no Azure Cosmos DB.
  • O Cache Redis do Azure é um serviço de cache na memória totalmente gerenciado e um agente de mensagens para compartilhar dados e estado entre recursos de computação. Inclui o Redis de código aberto e um produto comercial da Redis Labs como serviços gerenciados. Você pode melhorar o desempenho de aplicativos OLTP (processamento de transações online) de alta taxa de transferência projetando-os para dimensionar e usar um armazenamento de dados na memória, como o Cache do Azure para Redis. Nessa arquitetura, o Cache Redis do Azure acelera o acesso a dados usados com frequência, o que melhora o desempenho de aplicativos funcionais e aplicativos Web.
  • O Azure Cosmos DB é um banco de dados multimodelo distribuído globalmente que permite que suas soluções dimensionem de forma elástica e independente a taxa de transferência e o armazenamento em qualquer número de regiões geográficas. Ele fornece garantia de throughput, latência, disponibilidade e consistência com SLAs (Service Level Agreements, contratos de nível de serviço) abrangentes. Nessa arquitetura, o Azure Cosmos DB armazena dados recentes e emite um feed de alterações usado para replicar atualizações para o Armazenamento de Tabelas.

Alternativas

  • O Azure Traffic Manager direciona solicitações DNS de entrada nas regiões globais do Azure com base em sua escolha de métodos de roteamento de tráfego. Ele também fornece failover automático e roteamento de desempenho.
  • A Rede de Entrega de Conteúdo do Azure armazena em cache 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.
  • Os Aplicativos de Contêiner do Azure são um serviço de contêiner totalmente gerenciado e sem servidor usado para criar e implantar aplicativos modernos em escala.
  • O Serviço Kubernetes do Azure (AKS) é um serviço Kubernetes totalmente gerenciado para implantar e gerenciar aplicativos em contêineres. Você pode usá-lo para implementar uma arquitetura de microsserviços cujos componentes são dimensionados independentemente sob demanda.
  • As Instâncias de Contêiner do Azure fornecem uma maneira rápida e simples de executar tarefas sem precisar gerenciar a infraestrutura. É útil durante o desenvolvimento ou para executar tarefas não programadas.
  • O Barramento de Serviço do Azure é um serviço de mensagens na nuvem confiável para integração híbrida simples. Ele pode ser usado em vez de armazenamento em fila nesta arquitetura. Para obter mais informações, consulte Filas de armazenamento e filas do Service Bus - comparadas e contrastadas.

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 lidam com grandes quantidades de dados se beneficiam da capacidade do Azure Cosmos DB de dimensionar de forma elástica e independente a taxa de transferência e o armazenamento.

Outro componente de solução importante é 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 de Funções controlado por eventos. Em seguida, uma função executa e replica as alterações nas tabelas de armazenamento de tabelas, 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 facto para reduzir ainda mais os custos. Especificamente, outra função executa e exclui periodicamente dados expirados do Azure Cosmos DB. Além de serem acionadas, as funções também podem ser programadas para serem executadas em horários definidos.

Potenciais casos de utilização

A arquitetura é apropriada para qualquer aplicativo que:

  • Utiliza uma enorme quantidade de dados.
  • Requer que os dados estejam sempre disponíveis quando são necessários.
  • Usa dados que expiram.

Os exemplos incluem aplicações que:

  • Personalize a experiência do cliente e impulsione o envolvimento por meio de feeds de dados e sensores em tempo real em locais físicos.
  • Acompanhe os hábitos de consumo e o comportamento de compra dos clientes.
  • Rastreie frotas de veículos coletando dados sobre localização, desempenho e comportamento do motorista para melhorar a eficiência e a segurança.
  • Previsão do tempo.
  • Oferecer sistemas de tráfego inteligentes ou implementar sistemas de tráfego inteligentes ou utilizar tecnologia inteligente para monitorizar o tráfego.
  • Analise dados de IoT de fabricação.
  • Exiba dados de medidores inteligentes ou use tecnologia inteligente para monitorar dados de medidores.

Considerações

Essas considerações implementam os pilares do Azure Well-Architected Framework, que é um conjunto de princípios orientadores que podem ser usados para melhorar 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 requer menos manutenção de código do que fazer a replicação no aplicativo principal.
  • Você precisa migrar dados existentes. O processo de migração requer scripts ou rotinas ad hoc para copiar dados antigos para contas de armazenamento. Ao migrar os dados, certifique-se de usar carimbos de data/hora e copiar sinalizadores para acompanhar o progresso da migração.
  • Para evitar excluir entradas do armazenamento secundário da Tabela do Azure, ignore excluir feeds gerados quando suas funções excluem entradas do Azure Cosmos DB.

Contribuidores

Este artigo é mantido pela Microsoft. Foi originalmente escrito pelos seguintes contribuidores.

Autor principal:

  • Nabil Siddiqui - Brasil | Arquiteto de Soluções Cloud - Inovação Digital e de Aplicações

Próximos passos