Este artigo apresenta uma solução de alta disponibilidade para um aplicativo Web que lida com grandes volumes de dados que precisam estar acessíveis em um período de tempo específico. A solução envolve o uso do Azure Cosmos DB como armazenamento de dados principal e o uso do feed de alterações do Azure Cosmos DB para replicar dados para o armazenamento secundário de baixo custo. Após a expiração do período de tempo especificado, as Funções do Azure são usadas 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 proporciona alta durabilidade, replicando dados para diversos serviços de dados.
Arquitetura
Baixe um Arquivo Visio dessa arquitetura.
Fluxo de dados
- O cliente se autentica com o Microsoft Entra ID 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, alternará 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 de navegador executam aplicativos Asynchronous JavaScript and XML (AJAX) que usam as APIs.
- 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.
- As mensagens enfileiradas acionam as funções, que executam as tarefas em segundo plano.
- 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.
- 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
- A ID do Microsoft Entra no Azure é um serviço de gerenciamento de identidade e acesso que pode ser sincronizado 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.
- 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 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:
- Personalize a experiência do cliente e promova o envolvimento por meio de feeds de dados em tempo real e sensores em locais físicos.
- Acompanham 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.
- 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 requer 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
- Estilo de arquitetura de trabalho de fila da Web
- Criar um aplicativo geograficamente distribuído
- Distribuir dados globalmente com o Azure Cosmos DB
- Escolher a API apropriada para o Azure Cosmos DB
- Armazenar e acessar dados NoSQL com o Azure Cosmos DB for Table
- Trabalhar com os dados NoSQL no Azure Cosmos DB
- Como modelar e particionar dados no Azure Cosmos DB usando um exemplo do mundo real
- Opções para migrar seus dados locais ou na nuvem para o Azure Cosmos DB
- Migrar centenas de terabytes de dados para o Azure Cosmos DB
- Padrões de design do feed de alterações 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
- Orquestrar a transformação e a movimentação de dados no Azure Data Factory ou no pipeline do Azure Synapse