Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo apresenta uma solução de alta disponibilidade para um aplicativo Web que gerencia grandes volumes de dados que precisam ser acessíveis dentro de um período específico. A solução usa Azure Cosmos DB como o armazenamento de dados primário e usa o feed de alterações Azure Cosmos DB para replicar dados para o armazenamento secundário de baixo custo. Após o período de tempo especificado, a solução usa Azure Functions para excluir os dados de Azure Cosmos DB. Os dados no 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 fornece alta durabilidade.
Arquitetura
Baixe um arquivo do Visio dessa arquitetura.
Fluxo de dados
O fluxo de dados a seguir corresponde ao diagrama anterior:
O cliente é autenticado usando Microsoft Entra ID e recebe acesso a aplicativos Web hospedados no Serviço de Aplicativo do Azure.
Azure Front Door, que é um firewall e balanceador de carga de camada 7, alterna o tráfego do usuário para a região em espera se houver uma interrupção regional.
O Serviço de Aplicativo hospeda sites e APIs Web RESTful. Os clientes do navegador executam aplicativos JavaScript e XML assíncronos que usam as APIs.
As APIs 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.
As mensagens enfileiradas acionam as funções, que executam as tarefas em segundo plano.
O Redis Gerenciado do Azure armazena em cache dados de banco de dados para as funções. A solução descarrega as operações de leitura do banco de dados para dados que mudam lentamente e acelera os aplicativos de função e os aplicativos web usando o cache.
O Azure Cosmos DB contém dados recém-gerados.
O Azure Cosmos DB emite um feed de alterações que pode ser usado para replicar alterações.
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.
O armazenamento de tabela 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 os usuários e concede acesso a aplicativos Web hospedados no Serviço de Aplicativo.
O Azure Front Door é uma rede de distribuição de conteúdo segura e um balanceador de carga. Nessa arquitetura, ela acelera a entrega de conteúdo, fornece recursos de failover e protege os aplicativos contra ameaças cibernéticas.
O Serviço de Aplicativo é um serviço totalmente gerenciado que os desenvolvedores usam para criar, implantar, hospedar e dimensionar aplicativos Web. Você pode criar aplicativos usando .NET, Node.js, Java, Python ou PHP. Os aplicativos podem ser executados em contêineres ou em Windows ou Linux. Nessa arquitetura, o Serviço de Aplicativo hospeda a interface da Web e as APIs REST para o aplicativo. Para obter mais informações sobre APIs Web, consulte o design da API Web RESTful.
O Functions fornece um ambiente para executar pequenas partes de código, chamadas 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. Você pode usar microsserviços para criar servidores que se conectam a serviços Azure e sempre permanecem atualizados. Nessa arquitetura, o Functions executa tarefas em segundo plano, como replicação de dados e exclusão de registro expirada.
O Armazenamento do Azure é um conjunto de serviços de nuvem escalonáveis e seguros para dados, aplicativos e cargas de trabalho. Nessa arquitetura, o Armazenamento fornece Armazenamento de Filas para mensagens de tarefa e Armazenamento de Tabelas para armazenamento de dados replicados de baixo custo.
O Armazenamento de Filas fornece filas de mensagens simples, com boa relação custo-benefício e duráveis para trabalhos em larga escala. Essa arquitetura usa o Armazenamento de Filas para mensagens de tarefa.
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 de acordo com a necessidade. O acesso é rápido e econômico para muitos aplicativos. Essa arquitetura usa o Armazenamento de Tabelas 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 gerenciado e um corretor de mensagens para compartilhamento de dados e de estado entre recursos de computação. Para melhorar o desempenho de aplicativos de processamento de transações online de alto volume, projete-os para escalar usando um repositório de dados em memória, como o Azure Managed Redis. Nessa arquitetura, o Azure Redis Gerenciado acelera o acesso a dados usados com frequência, o que melhora o desempenho de aplicativos de funções e aplicativos Web.
Azure Cosmos DB é um banco de dados multimodel distribuído globalmente que capacita suas soluções a dimensionar 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 garantias de vazão, latência, disponibilidade e consistência com acordos de nível de serviço abrangentes. Nessa arquitetura, Azure Cosmos DB armazena dados recentes e emite um feed de alterações que você pode usar para replicar atualizações no Armazenamento de Tabelas.
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 baseado em desempenho.
Aplicativos de Contêiner do Azure é um serviço de contêiner totalmente gerenciado e sem servidor que os desenvolvedores usam para criar e implantar aplicativos modernos em escala.
AKS (Serviço de Kubernetes do Azure) é um serviço kubernetes totalmente gerenciado para implantação e gerenciamento de aplicativos em contêineres. Você pode usá-la para implementar uma arquitetura de microsserviços com componentes que são dimensionados de forma independente e sob demanda.
Instâncias de Contêiner do Azure executa tarefas sem a necessidade de gerenciamento de infraestrutura. É útil durante o desenvolvimento e executar tarefas não programadas.
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 mais informações, veja Filas de Armazenamento e Filas do Barramento de Serviço – comparação e contraste.
Detalhes do cenário
Essa solução armazena grandes volumes de dados de aplicativos Web em Azure Cosmos DB. Aplicativos Web que lidam com grandes quantidades de dados usam Azure Cosmos DB para dimensionar de forma elástica e independente a taxa de transferência e o armazenamento.
Quando alterações são feitas no banco de dados, o feed de alterações do Azure Cosmos DB é enviado para um gatilho do Azure Functions orientado por eventos. Uma função é executada e replica as alterações nas tabelas do Azure Table Storage, que oferecem uma solução de armazenamento de baixo custo. Você também pode orquestrar uma movimentação mais ampla de dados para etapas posteriores usando pipelines do Azure Data Factory ou do Fabric Data Factory para carregar dados em zonas analíticas.
O aplicativo Web precisa dos dados por apenas um período limitado de tempo. Essa solução executa e exclui periodicamente dados expirados de Azure Cosmos DB, o que reduz os custos. Você pode disparar funções sob demanda ou agendá-las para serem executadas em horários específicos.
Possíveis casos de uso
Essa solução é apropriada para qualquer aplicativo que:
- Use um grande volume de dados.
- Requer que os dados estão disponíveis em um período específico.
- Use dados que expirem.
Exemplos incluem aplicativos que:
Personalize a experiência do cliente e impulsione o envolvimento usando feeds de dados dinâmicos e sensores em locais físicos.
Acompanham os hábitos de consumo e o comportamento de compra dos clientes.
Acompanhe as frotas de veículos e melhore a eficiência e a segurança usando dados de localização, desempenho e comportamento do motorista do veículo.
Prever o tempo.
Monitorar e gerenciar sistemas de tráfego.
Analisam dados de IoT de fabricação.
Monitore os dados do medidor inteligente.
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ê faz aos seus clientes. Para obter mais informações, consulte Lista de verificação para revisão do design de confiabilidade.
O feed de alterações Azure Cosmos DB garante uma entrega pelo menos uma vez. Crie 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 fornece failover regional automático. Se a região primária ficar indisponível, o tráfego será roteado para a região em espera sem intervenção manual.
Otimização de custos
A Otimização de Custos concentra-se em maneiras de reduzir despesas desnecessárias e melhorar a eficiência operacional. Para obter mais informações, consulte a Lista de verificação para revisão de design para Otimização de Custos.
O benefício de custo primário vem da movimentação de dados expirados de Azure Cosmos DB, que é cobrado por RU (unidade de solicitação), para o Armazenamento de Tabelas, que é cobrado por transação e por GB armazenado. Esse processo é mais barato para dados acessados com pouca frequência.
Se sua carga de trabalho tiver requisitos previsíveis de taxa de transferência, considere capacidade reservada para o Azure Cosmos DB.
Use o feed de alterações para replicação. Esse método reduz a manutenção de código quando comparado com a replicação no aplicativo principal.
Essa solução gera custos extras para o armazenamento secundário e para as funções que gerenciam a replicação e a expiração de dados.
Excelência operacional
A Excelência Operacional abrange os processos de operações que implantam um aplicativo e o mantêm em execução em produção. Para obter mais informações, consulte a Lista de verificação de revisão de design para Excelência Operacional.
Você precisa migrar os 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, use carimbos de data/hora e copie sinalizadores para acompanhar o progresso da migração.
Ignore os feeds de exclusão gerados por suas funções ao excluir entradas de Azure Cosmos DB. Essa abordagem impede a remoção de entradas do armazenamento secundário da tabela Azure.
Eficiência de desempenho
A Eficiência de Desempenho refere-se à capacidade da carga de trabalho de dimensionar para atender às demandas do usuário com eficiência. Para obter mais informações, consulte a Lista de Verificação de Design para Eficiência de Desempenho.
A latência de processamento do feed de alterações afeta a rapidez com que os dados ficam disponíveis no Armazenamento de Tabelas. Para atender aos requisitos de latência, ajuste o plano do aplicativo de funções e as configurações de lote.
Para evitar partições sobrecarregadas, escolha uma chave de partição do Azure Cosmos DB que distribua a taxa de transferência de gravação uniformemente entre as partições lógicas.
Azure Managed Redis reduz a pressão de leitura no Azure Cosmos DB para dados que mudam lentamente, o que diminui a latência e o consumo de RUs.
Colaboradores
A Microsoft mantém este artigo. Os colaboradores a seguir escreveram este artigo.
Autor principal:
- Nabil Siddiqui | Arquiteto de Soluções na Nuvem - Inovação Digital e de Aplicativos
Outro colaborador:
- Filipe Moreira | Arquiteto de Soluções na Nuvem
Para ver perfis de LinkedIn não públicos, entre em LinkedIn.
Próximas etapas
- Azure Front Door e documentação da rede de distribuição de conteúdo na nuvem
- Use Azure Cosmos DB
- Escolher a API apropriada para o Azure Cosmos DB
- Desenvolva soluções usando o Azure Cosmos DB
- Migre grandes volumes de dados para o Azure Cosmos DB
- Como modelar e particionar dados usando um exemplo do mundo real
- Padrões de design de fluxo de alterações no Azure Cosmos DB
- Criar uma arquitetura baseada em evento sem servidor usando Azure Cosmos DB e funções
- O que é Fabric Data Factory?
- Orquestre a movimentação e a transformação de dados usando o Azure Data Factory
- Documentação do Fabric Data Factory