Armazenamento mínimo – Alterar 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 uma aplicação web que gere grandes volumes de dados que precisam de ser acessíveis num prazo específico. A solução utiliza o Azure Cosmos DB como armazenamento principal de dados e utiliza o feed de alterações do Azure Cosmos DB para replicar dados para armazenamento secundário de baixo custo. Após o período especificado, a solução utiliza o Funções do Azure para eliminar os dados do Azure Cosmos DB. Os dados em armazenamento secundário permanecem disponíveis por mais tempo para auditoria e análise por outras soluções. A solução replica dados para diferentes serviços de dados, o que proporciona elevada durabilidade.

Arquitetura

Diagrama que mostra a arquitetura de armazenamento mínima.

Descarregue um ficheiro Visio desta arquitetura.

Fluxo de dados

O seguinte fluxo de dados corresponde ao diagrama anterior:

  1. O cliente autentica-se utilizando o Microsoft Entra ID e tem acesso a aplicações web alojadas no Serviço de Aplicações do Azure.

  2. O Azure Front Door, que é um firewall e um balanceador de carga de camada 7, muda o tráfego dos utilizadores para a região de espera se houver uma falha regional.

  3. O Serviço de Aplicativo hospeda sites e APIs da Web RESTful. Os clientes de navegador executam aplicações JavaScript e XML assíncronas que utilizam as APIs.

  4. As APIs Web delegam responsabilidade ao código alojado em Funções para tratar de 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 Azure Managed Redis armazena em cache os dados da base de dados para as funções. A solução descarrega as leituras da base de dados para dados que mudam lentamente e acelera as aplicações funcionais e aplicações web usando a cache.

  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. Uma aplicação de funções lê o feed de alterações e replica as alterações nas tabelas do Armazenamento de Tabelas 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. Nesta arquitetura, autentica os utilizadores e concede acesso a aplicações web alojadas no App Service.

  • 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.

  • App Service é um serviço totalmente gerido que os programadores usam para construir, implementar, alojar e escalar aplicações web. Podes construir aplicações usando .NET, Node.js, Java, Python ou PHP. Os aplicativos podem ser executados em contêineres ou no Windows ou Linux. Nessa arquitetura, o Serviço de Aplicativo hospeda a interface Web e as APIs REST para o aplicativo. Para obter mais informações sobre APIs da Web, consulte Design da API da Web RESTful.

  • 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. Pode usar microserviços para criar servidores que se ligam aos serviços do Azure e manter-se sempre atualizado. Nesta arquitetura, o Functions executa tarefas em segundo plano como replicação de dados e eliminação de registos expirados.

  • O Armazenamento do Azure é um conjunto de serviços cloud escaláveis e seguros para dados, aplicações e cargas de trabalho. Nesta arquitetura, o Armazenamento fornece Armazenamento em Fila para mensagens de tarefas e Armazenamento em Tabelas para armazenamento de dados replicados de baixo custo.

    • 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.

    • Armazenamento de Tabela é um armazenamento NoSQL de chave-valor para desenvolvimento rápido que utiliza conjuntos de dados semiestruturados maciços. As tabelas são sem esquemas e adaptam-se conforme as necessidades. O acesso é rápido e económico para muitas aplicações. Essa arquitetura usa o Armazenamento de Tabela para armazenar uma cópia sincronizada e reestruturada dos dados no Azure Cosmos DB.

  • Azure Managed Redis é um serviço de cache em memória totalmente gerido e um corredor de mensagens para partilha de dados e estados entre recursos de computação. Para melhorar o desempenho das aplicações de processamento de transações online de alto rendimento, desenhe-as para escalar utilizando um armazenamento de dados em memória, como o Azure Managed Redis. Nesta arquitetura, o Azure Managed Redis acelera o acesso a dados frequentemente utilizados, o que melhora o desempenho das aplicações funcionais e web.

  • Azure Cosmos DB é uma base de dados multimodelo distribuída globalmente que permite que as suas soluções escalem de forma elástica e independente o débito e armazenamento em qualquer número de regiões geográficas. Fornece garantias de rendimento, latência, disponibilidade e consistência com acordos abrangentes de nível de serviço. Nesta arquitetura, o Azure Cosmos DB armazena dados recentes e emite um feed de alterações que pode usar para replicar atualizações do Table Storage.

Alternativas

  • O Gestor de Tráfego do Azure 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 comutação automática e roteamento baseado em desempenho.

  • Azure Container Apps é um serviço de contentores totalmente gerido e serverless que os programadores utilizam para construir e implementar aplicações modernas em grande escala.

  • Azure Kubernetes Service (AKS) é um serviço Kubernetes totalmente gerido para implementação e gestão de aplicações containerizadas. Pode usá-lo para implementar uma arquitetura de microserviços com componentes que escalam de forma independente e sob demanda.

  • Azure Container Instances executa tarefas sem necessidade de gestão de infraestrutura. É útil durante o desenvolvimento e para executar tarefas não agendadas.

  • Azure Service Bus é 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

Esta solução armazena grandes volumes de dados de aplicações web no Azure Cosmos DB. As aplicações web que lidam com grandes quantidades de dados utilizam o Azure Cosmos DB para escalar, de forma elástica e independente, a capacidade de débito e o armazenamento.

Quando são feitas alterações à base de dados, o feed de alterações do Azure Cosmos DB é enviado para um gatilho de Funções orientado a 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. Também pode orquestrar a movimentação de dados subsequente em maior escala através de pipelines do Azure Data Factory ou do Fabric Data Factory para depositar dados em zonas analíticas.

O aplicativo Web precisa dos dados por apenas um período limitado de tempo. Esta solução corre periodicamente e elimina dados expirados do Azure Cosmos DB, o que reduz custos. Podes ativar funções a pedido ou agendar para que funcionem em horários específicos.

Potenciais casos de utilização

Esta solução é adequada para qualquer aplicação que:

  • Utiliza uma enorme quantidade de dados.
  • Exige que os dados estejam disponíveis num período de tempo específico.
  • Usa dados que expiram.

Os exemplos incluem aplicações que:

  • Personalize a experiência do cliente e promova o envolvimento utilizando fluxos de dados em tempo real e sensores em locais físicos.

  • Acompanhe os hábitos de consumo e o comportamento de compra dos clientes.

  • Acompanhar as frotas de veículos e melhorar a eficiência e segurança utilizando dados de localização, desempenho e comportamento do condutor do veículo.

  • Previsão do tempo.

  • Monitorizar e gerir sistemas de tráfego.

  • Analise dados de IoT na fabricação.

  • Monitorizar os dados dos contadores inteligentes.

Considerações

Essas considerações implementam os pilares do Azure Well-Architected Framework, que é um conjunto de princípios orientadores que você pode usar para melhorar a qualidade de uma carga de trabalho. Para obter mais informações, consulte Well-Architected Framework.

Reliability

A confiabilidade ajuda a garantir que seu aplicativo possa cumprir os compromissos que você assume com seus clientes. Para obter mais informações, consulte Lista de verificação de revisão de design para confiabilidade.

  • O feed de alterações do Azure Cosmos DB garante pelo menos uma entrega. Desenhe a sua função de replicação para ser idempotente para que eventos duplicados não gerem dados inconsistentes no Armazenamento de Tabelas.

  • O Azure Front Door oferece failover regional automático. Se a região principal ficar indisponível, o tráfego é encaminhado para a região de contingência sem intervenção manual.

Otimização de Custos

A Otimização de Custos concentra-se em formas de reduzir despesas desnecessárias e melhorar a eficiência operacional. Para obter mais informações, consulte Lista de verificação de revisão de projeto para Otimização de custos.

  • O principal benefício de custo provém da transferência de dados expirados do Azure Cosmos DB, que são faturados por unidade de pedido (RU), para o Table Storage, que é faturado por transação e por GB armazenados. Este processo é mais barato para dados de acesso pouco frequente.

  • Se a sua carga de trabalho tiver requisitos de débito previsíveis, considere capacidade reservada para Azure Cosmos DB.

  • Use o feed de alterações para replicação. Este método reduz a manutenção do código quando comparado com a replicação na aplicação principal.

  • Esta solução implica custos adicionais para armazenamento secundário e para as funções que gerem a replicação e expiração dos dados.

Excelência Operacional

A Excelência Operacional abrange os processos operacionais que implantam um aplicativo e o mantêm em execução na produção. Para obter mais informações, consulte Lista de verificação de revisão de design para excelência operacional.

  • Você precisa migrar dados existentes. O processo de migração requer scripts ou rotinas ad hoc para copiar dados antigos para contas de armazenamento. Quando migrar os dados, use carimbos de hora e indicadores de cópia para acompanhar o progresso da migração.

  • Ignore os feeds de eliminação que as suas funções geram quando eliminam entradas do Azure Cosmos DB. Esta abordagem impede a remoção de entradas do armazenamento secundário do Azure Table.

Eficiência de desempenho

A Eficiência de Desempenho refere-se à capacidade da sua carga de trabalho de escalar para atender às demandas dos usuários de forma eficiente. Para obter mais informações, consulte Lista de verificação de revisão de projeto para eficiência de desempenho.

  • A latência do processamento do fluxo de alterações afeta a rapidez com que os dados ficam disponíveis no Armazenamento de Tabelas. Para satisfazer os requisitos de latência, ajuste a escala do plano da aplicação de funções e das definições de processamento em lote.

  • Para evitar partições sobrecarregadas, escolha uma chave de partição do Azure Cosmos DB que distribua o débito de escrita uniformemente pelas partições lógicas.

  • O Azure Managed Redis reduz a pressão de leitura no Azure Cosmos DB para dados que mudam lentamente, o que reduz a latência e o consumo de RU.

Contribuidores

A Microsoft mantém este artigo. Os seguintes colaboradores escreveram este artigo.

Autor principal:

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

Outros contribuidores:

Para ver perfis não públicos do LinkedIn, faça login no LinkedIn.

Próximos passos