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
Transfira um ficheiro do Visio desta arquitetura.
Fluxo de dados
- O cliente se autentica com a ID do Microsoft Entra e recebe acesso a aplicativos Web hospedados no Serviço de Aplicativo do Azure.
- 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.
- 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.
- 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.
- As mensagens enfileiradas acionam as funções, que executam as tarefas em segundo plano.
- 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.
- O Azure Cosmos DB contém dados gerados recentemente.
- 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 tabelas fornece armazenamento de baixo custo.
Componentes
- O Azure Microsoft Entra ID é um serviço de gerenciamento de identidade e acesso que pode ser sincronizado com um diretório local.
- O DNS do Azure é um serviço de hospedagem de alta disponibilidade para domínios DNS que fornece aplicativos com consultas DNS rápidas e atualizações rápidas para registros DNS. Gerenciar o DNS do Azure é como gerenciar outros serviços do Azure e usa as mesmas credenciais, APIs, ferramentas e cobrança.
- O Azure Front Door é uma rede de entrega de conteúdo (CDN) 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 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, as telas front-end ou a interface da Web podem ser codificadas como APIs REST baseadas em HTTP. Eles podem ser segregados e podem ser 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.
- O 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 estão sempre atualizados.
- O Armazenamento do Azure é um conjunto de serviços de nuvem massivamente escaláveis e seguros para dados, aplicativos e cargas de trabalho. Inclui Ficheiros do Azure, Armazenamento de Tabela e Armazenamento de Filas. Os Arquivos do Azure geralmente são 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.
- 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.
- 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 de 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.
- O Azure Cosmos DB é um banco de dados multimodelo distribuído globalmente da Microsoft 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 oferece garantia de rendimento, latência, disponibilidade e consistência com SLAs (Service Level Agreements, contratos de nível de serviço) abrangentes.
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
- Estilo de arquitetura Web-Queue-Worker
- Projetar um aplicativo distribuído geograficamente
- Distribuir dados globalmente com o Azure Cosmos DB
- Escolha a API apropriada para o Azure Cosmos DB
- Armazenar e acessar dados NoSQL com o Azure Cosmos DB for Table
- Trabalhar com dados NoSQL no Azure Cosmos DB
- Como modelar e criar partições de dados no Azure Cosmos DB com um exemplo do mundo real
- Opções para migrar os dados no local ou da cloud para o Azure Cosmos DB
- Migrar centenas de terabytes de dados para o Azure Cosmos DB
- Alterar padrões de design de feed no Azure Cosmos DB
- Arquiteturas baseadas em eventos sem servidor com o Azure Cosmos DB e o Azure Functions
- Introdução ao Azure Data Factory
- Orquestre a movimentação e a transformação de dados no Azure Data Factory ou no Azure Synapse Pipeline