Processamento de fluxo com mecanismos de dados de código aberto totalmente gerenciados

Hubs de eventos do Azure
AKS (Serviço de Kubernetes do Azure)
Azure Cosmos DB
Banco de Dados do Azure para PostgreSQL
Cache do Azure para Redis

Este artigo apresenta um exemplo de uma solução de streaming que usa serviços de dados do Azure totalmente gerenciados.

Arquitetura

Diagrama de arquitetura mostrando como os dados de streaming fluem através de um sistema. Os componentes Kafka, Kubernetes, Cassandra, PostgreSQL e Redis compõem o sistema.

Baixe um Arquivo Visio dessa arquitetura.

Workflow

  1. Os Hubs de Eventos para o recurso do Apache Kafka transmitem eventos de produtores Kafkas.

  2. O Apache Spark consome eventos. O AKS fornece um ambiente gerenciado para os trabalhos de Apache Spark.

  3. Um aplicativo que usa o Azure Cosmos DB para Apache Cassandra grava eventos em Cassandra. Esse banco de dados serve como uma plataforma de armazenamento para eventos. AKS hospeda os microsserviços que gravam no Cassandra.

  4. O recurso de feed de alterações do Azure Cosmos DB processa eventos em tempo real.

  5. Os aplicativos agendados executam o processamento orientado por lote em eventos armazenados no Cassandra.

  6. Os armazenamentos de dados de referência enriquecem informações de evento. Os aplicativos orientados em lote gravam as informações de evento aprimorado no PostgreSQL. Os armazenamentos de dados de referência típicos incluem:

  7. Um aplicativo orientado por lote processa dados do Cassandra. Esse aplicativo armazena os dados processados no Banco de Dado do Azure para PostgreSQL. Esse repositório de dados relacional fornece dados para aplicativos downstream que exigem informações aprimoradas.

  8. Aplicativos e ferramentas de relatórios analisam os dados do banco de dados PostgreSQL. Por exemplo, o Power BI se conecta ao banco de dados usando o conector do Banco de Dados do Azure para PostgreSQL. Esse serviço de relatório exibe visuais avançados dos dados.

  9. O Cache do Azure para Redis fornece um cache na memória. Nesta solução, o cache contém dados sobre eventos críticos. Um aplicativo armazena dados no cache e recupera dados do cache.

  10. Os sites e outros aplicativos usam os dados armazenados em cache para melhorar os tempos de resposta. Às vezes, os dados não estão disponíveis no cache. Nesses casos, esses aplicativos usam o padrão de reserva de cache ou uma estratégia semelhante para recuperar dados do Cassandra no Azure Cosmos DB.

Componentes

  • Os Hubs de Eventos são uma plataforma de streaming totalmente gerenciada que pode processar milhões de eventos por segundo. Os Hubs de Eventos fornecem um ponto de extremidade para Apache Kafka, uma plataforma de processamento de fluxo de código aberto amplamente usada. Quando as organizações usam o recurso de ponto de extremidade, elas não precisam criar e manter clusters Kafka para processamento de fluxo. Em vez disso, elas podem se beneficiar da implementação Kafka totalmente gerenciada que os Hubs de Eventos oferecem.

  • O Azure Cosmos DB é um banco de dados relacional e NoSQL totalmente gerenciado que oferece replicação de vários mestres. O Azure Cosmos DB dá suporte a APIs de software livre para vários bancos de dados, linguagens e plataformas. Os exemplos incluem:

    Por meio do Azure Cosmos DB para Apache Cassandra, você pode acessar os dados do Azure Cosmos DB usando ferramentas, idiomas e drivers do Apache Cassandra. O Apache Cassandra é um banco de dados NoSQL de software livre que é adequado para cargas de trabalho pesadas de gravação intensa.

  • O AKs é um serviço de Kubernetes altamente disponível, seguro e totalmente gerenciado. O Kubernetes é uma plataforma de software livre em rápida evolução para gerenciar cargas de trabalho em contêineres. O AKs hospeda mecanismos de processamento de Big Data de código aberto, como Apache Spark. Usando o AKS, você pode executar trabalhos de processamento de fluxo em larga escala em um ambiente gerenciado.

  • O Banco de Dados do Azure para PostgreSQL é um serviço de banco de dados relacional totalmente gerenciado. Ele fornece alta disponibilidade, dimensionamento elástico, aplicação de patches e outros recursos de gerenciamento para PostgreSQL. O PostgreSQL é um sistema de gerenciamento de banco de dados relacional de software livre amplamente adotado.

  • O Cache do Azure para Redis fornece um armazenamento de dados na memória com base no software Redis. O Redis é um armazenamento popular de dados de software livre na memória. Armazenamentos de sessão, caches de conteúdo e outros componentes de armazenamento usam o Redis para melhorar o desempenho e a escalabilidade. O Cache do Azure para Redis fornece recursos de Redis de código aberto como uma oferta totalmente gerenciada.

Alternativas

Você pode substituir os produtos e serviços compatíveis com o código aberto nesta solução por outros. Para obter detalhes sobre os serviços de software livre disponíveis no Azure, consulte Código aberto no Azure.

Detalhes do cenário

Os serviços de dados do Azure totalmente gerenciados que executam mecanismos de código aberto compõem esta solução de streaming:

  • Os Hubs de Eventos do Azure oferecem uma implementação Kafka para a ingestão de fluxo.
  • O Azure Cosmos DB dá suporte ao armazenamento de eventos no Cassandra.
  • O AKS (Serviço de Kubernetes do Azure) hospeda os microsserviços Kubernetes para processamento de fluxo.
  • O Banco de Dados do Azure para PostgreSQL gerencia o armazenamento de dado relacional no PostgreSQL.
  • O Cache do Azure para Redis gerencia os armazenamentos de dados na memória do Redis.

As tecnologias de software livre oferecem muitos benefícios. Por exemplo, as organizações podem usar tecnologias de código aberto para:

  • Migrar cargas de trabalho existentes
  • Aproveitar a ampla comunidade de código aberto.
  • Limitar o bloqueio de fornecedor.

Ao tornar as tecnologias de software livre acessíveis, as ferramentas e os serviços do Azure ajudam as organizações a aproveitar esses benefícios e desenvolver as soluções de sua escolha.

Essa solução usa serviços de PaaS (plataforma como serviço) totalmente gerenciados. Como resultado, a Microsoft lida com aplicação de patches, manutenção de contrato de nível de serviço (SLA) e outras tarefas de gerenciamento. Outro benefício é a integração nativa com a infraestrutura de segurança do Azure.

Possíveis casos de uso

Essa solução se aplica a vários cenários:

  • Ao usar os serviços de PaaS do Azure para criar soluções de streaming modernas que usam tecnologias de código aberto
  • Ao migrar soluções de processamento de fluxo de código aberto para o Azure

Considerações

Essas 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, confira Microsoft Azure Well-Architected Framework.

Projete e implemente cada serviço com as práticas recomendadas em mente. Para obter diretrizes sobre cada serviço, consulte o site de documentação da Microsoft. Analise também as informações nas seguintes seções:

Desempenho

  • Implemente o pool de conexões para o Banco de Dados do Azure para PostgreSQL. Você pode usar uma biblioteca de pooling de conexão dentro do aplicativo. Ou você pode usar um pooler de conexões, como PgBouncer ou Pgpool. Estabelecer uma conexão com PostgreSQL é uma operação cara. Com o pool de conexões, você pode evitar a degradação do desempenho do aplicativo. O PgBouncer é interno no Banco de Dados do Azure para PostgreSQL Flexible Server.

  • Configure o Azure Cosmos DB para Apache Cassandra para obter o melhor desempenho usando uma estratégia de particionamento apropriada. Decida se deseja usar uma chave primária de campo único, uma chave primária composta ou uma chave de partição composta ao particionar tabelas.

Escalabilidade

  • Leve em conta seus requisitos de streaming ao escolher uma Camada de Hubs de Eventos:

    • Para requisitos de taxa de transferência de intervalo médio de menos de 120 MBps, considere a camada de Premium. Essa camada é dimensionada de forma elástica para atender aos requisitos de streaming.
    • Para cargas de trabalho de streaming de ponta com uma entrada de gigabytes de dados, considere a camada Dedicada. Essa camada é uma oferta de locatário único com uma capacidade garantida. Você pode dimensionar os clusters dedicados para cima e para baixo.
  • Considere a taxa de transferência provisionada com dimensionamento automático para Azure Cosmos DB, se suas cargas de trabalho forem imprevisíveis e com picos. Você pode configurar o Azure Cosmos DB para usar a taxa de transferência provisionada manualmente ou a taxa de transferência provisionada com dimensionamento automático. Com o dimensionamento automático, o Azure dimensiona automaticamente e instantaneamente as unidades de solicitação por segundo, de acordo com seu uso.

Segurança

A segurança fornece garantias contra ataques deliberados e o abuso de seus dados e sistemas valiosos. Para saber mais, confira Visão geral do pilar de segurança.

  • Use o Link Privado do Azure para tornar os serviços do Azure parte da sua rede virtual. Quando você usa o Link Privado, o tráfego entre os serviços e a rede flui pelo backbone do Azure sem atravessar a Internet pública. Os serviços do Azure nesta solução dão suporte ao Link Privado para SKUs selecionadas.

  • Verifique as políticas de segurança da sua organização. Com o Azure Cosmos DB para Apache Cassandra, as chaves fornecem acesso a recursos como espaços de chave e tabelas. A instância de Azure Cosmos DB armazena essas chaves. Suas políticas de segurança podem exigir que você propague essas chaves para um serviço de gerenciamento de chaves, como Azure Key Vault. Além disso, lembre-se de girar as chaves de acordo com as políticas da sua organização.

Resiliência

Considere o uso de Zonas de disponibilidade para proteger aplicativos críticos para os negócios contra falhas do datacenter. Os serviços desta solução dão suporte a zonas de disponibilidade para SKUs selecionadas em regiões habilitadas para zona de disponibilidade. Para obter informações atualizadas, examine a lista de serviços que dão suporte a zonas de disponibilidade.

Otimização de custo

A otimização de custos é a análise de maneiras de reduzir as despesas desnecessárias e melhorar a eficiência operacional. Para obter mais informações, confira Visão geral do pilar de otimização de custo.

Para estimar o custo da implantação, consulte a Calculadora de Preços do Azure. Além disso, tenha estes pontos em mente:

  • Hubs de Eventos estão disponíveis nas camadas Básica, Standard, Premium e Dedicada. A camada Premium ou Dedicada é melhor para cargas de trabalho de streaming em larga escala. Você pode dimensionar a taxa de transferência, portanto, considere iniciar de forma pequena e, em seguida, escalar verticalmente conforme a demanda aumenta.

  • Azure Cosmos DB oferece dois modelos:

    • Um modelo de taxa de transferência provisionado ideal para cargas de trabalho exigentes. Esse modelo está disponível em duas opções de gerenciamento de capacidade: padrão e dimensionamento automático.
    • Um modelo sem servidor que é adequado para executar cargas de trabalho pequenas e com picoss.
  • Um cluster AKS consiste em um conjunto de nós ou máquinas virtuais (VMS) executado no Azure. O custo dos componentes de computação, armazenamento e rede compõe os custos primários de um cluster.

  • O Banco de Dados do Azure para PostgreSQL está disponível nas camadas Servidor Único e Servidor Flexível. Diferentes camadas atendem a cenários diferentes, como cargas de trabalho previsíveis, com capacidade de intermitência e de alto desempenho. Os custos dependem principalmente da escolha dos nós de computação e da capacidade de armazenamento. Para novas cargas de trabalho, considere escolher a camada Servidor Flexível, pois ela tem uma gama maior de recursos com suporte na camada Servidor Único. Observe também que o Single Server está no caminho para a preterição.

  • O Cache do Azure para Redis está disponível em várias camadas. Essas camadas acomodam caches que variam de 250 megabytes a vários terabytes. Além do tamanho, outros requisitos também afetam a escolha da camada:

    • Clustering
    • Persistência
    • Replicação geográfica ativa

Implantar este cenário

Tenha esses pontos em mente ao implantar essa solução:

Colaboradores

Este artigo está sendo atualizado e mantido pela Microsoft. Ele foi originalmente escrito pelos colaboradores a seguir.

Autor principal:

Próximas etapas

Para saber mais sobre as soluções relacionadas, consulte as seguintes informações: