Este documento ajuda você a escolher entre o Pub/Sub e o Serviço gerenciado do Google Cloud para Apache Kafka. O Pub/Sub e o Serviço Gerenciado para Apache Kafka são serviços de mensagens gerenciados e escalonáveis horizontalmente, capazes de lidar com cargas de trabalho de alto volume.
Este documento é destinado a desenvolvedores, arquitetos ou tomadores de decisão que buscam um serviço gerenciado para processar dados de streaming e cargas de trabalho de mensagens.
Há várias opções para executar o Apache Kafka, incluindo serviços de parceiros e software de código aberto autogerenciado. Este documento não aborda essas opções.
Para uma visão geral dos conceitos do Pub/Sub, consulte Visão geral do serviço do Pub/Sub.
Para uma visão geral dos conceitos do Serviço gerenciado para Apache Kafka, consulte Visão geral do Serviço gerenciado para Apache Kafka.
Facilidade operacional x portabilidade
A escolha entre o Pub/Sub e o Serviço Gerenciado para Apache Kafka é uma troca entre simplicidade operacional e portabilidade.
Simplicidade operacional do Pub/Sub
O Pub/Sub é um serviço totalmente gerenciado, sem servidor e distribuído globalmente que usa a infraestrutura do Google Cloud . Ele é escalonado automaticamente para processar sua carga de trabalho, então você não precisa se preocupar com o gerenciamento da infraestrutura. O Pub/Sub ajusta dinamicamente a capacidade de tópicos e assinaturas individuais. Editores e assinantes podem ser escalonados de forma independente, não apenas em diferentes tópicos e assinaturas, mas também nos mesmos.
O Pub/Sub também move dados entre várias regiões sem problemas. Isso significa que editores e assinantes podem se conectar à região mais próxima, e o serviço cuida do restante.
O Serviço Gerenciado para Apache Kafka também pode processar grandes volumes de dados. No entanto, é necessário gerenciar o tamanho do cluster e configurar várias outras propriedades com base nas necessidades de escalonamento dos seus tópicos. E o mais importante: considere o número de partições a serem atribuídas aos seus tópicos. Muitas partições podem desperdiçar recursos. Poucas partições podem sobrecarregar os agentes no cluster do Kafka. Também é preciso considerar o número de réplicas que você precisa configurar por partição, dependendo dos requisitos de latência e fan-out do consumidor.
Como uma implantação do Kafka está vinculada a uma região específica, se você mover dados entre regiões, essa movimentação precisará acontecer fora do serviço. Garantir a integridade contínua da movimentação de dados e atender às necessidades dos tópicos no cluster do Kafka aumenta seu trabalho operacional.
Portabilidade do Serviço gerenciado para Apache Kafka
Embora o escalonamento automático e a distribuição global de dados do Pub/Sub facilitem a operação, as APIs do Apache Kafka são muito mais amplamente adotadas.
Se você planeja usar sistemas de mensagens independentes em diferentes ambientes locais ou de provedores de nuvem, o Serviço Gerenciado para Apache Kafka pode oferecer uma experiência mais consistente em todos os seus aplicativos. Isso porque é possível padronizar o Kafka e usar a mesma API para se comunicar com o serviço em cada ambiente.
Embora seja possível usar o Pub/Sub como um sistema central de mensagens em todos os seus ambientes, é importante lembrar que ele é um serviço distinto com uma API própria. Se você precisar interagir com um sistema de mensagens para um ambiente específico, usar o Serviço Gerenciado para Apache Kafka pode oferecer uma experiência de desenvolvimento mais unificada.
Qual serviço é ideal para você
Se uma experiência consistente em diversos ambientes for fundamental, escolha o Serviço gerenciado para Apache Kafka. Se o foco for a configuração mínima para escalonamento de cargas de trabalho ou movimentação de dados entre regiões, o Pub/Sub oferece uma vantagem interessante.
Escolha o Pub/Sub se os seguintes fatores descreverem seus requisitos:
Você prioriza a simplicidade operacional no Google Cloud.
Você precisa de uma solução escalonável e sem servidor com gerenciamento de sobrecarga mínima.
Você tem tamanhos de carga de trabalho imprevisíveis ou variáveis. O Pub/Sub também funciona muito bem quando a taxa de transferência da carga de trabalho é estável.
Você precisa de um rastreamento de processamento por mensagem para minimizar os efeitos do pipeline devido a mensagens incorretas. O Pub/Sub, com as filas de mensagens mortas (DLQs) integradas e o suporte para processamento de mensagens fora de ordem, permite que seu sistema permaneça operacional mesmo ao encontrar mensagens problemáticas.
Você precisa de agregação de dados entre regiões.
Você precisa de escalonamento independente de editores e assinantes.
Escolha o Serviço gerenciado para Apache Kafka se os seguintes fatores descreverem seus requisitos:
A portabilidade entre vários provedores de nuvem ou ambientes locais é essencial.
Você tem cargas de trabalho do Kafka que quer migrar para o Google Cloud. Para mais informações, consulte Escolher com base na configuração atual do Kafka.
Você tem um volume de tráfego consistente sem muita variação.
Você quer gerenciar a capacidade.
Você precisa de ordenação de mensagens com alta capacidade de processamento por chave.
Você quer usar o padrão de origem de eventos com um registro de eventos como fonte da verdade.
Escolha com base na configuração atual do Kafka
Se você já usa o Kafka e busca uma solução gerenciada, segura e confiável no Google Cloud, o Managed Service para Apache Kafka é a opção recomendada.
Se você já estiver executando o Kafka e quiser reescrever seus aplicativos para aproveitar os benefícios de um serviço global altamente escalonável e com escalonamento automático, o Pub/Sub é uma boa recomendação. Para migrar do Kafka para o Pub/Sub, consulte Migrar do Kafka para o Pub/Sub.
Para novas cargas de trabalho ou usuários que não conhecem o streaming no Google Cloud, recomendamos o Pub/Sub devido à facilidade de uso. Se você quiser mover suas cargas de trabalho do Kafka para a nuvem com o mínimo de mudanças no código, o Serviço Gerenciado para Apache Kafka é a escolha ideal.
Integração com produtos do Cloud
O Serviço Gerenciado para Apache Kafka e o Pub/Sub do Google se integram a vários serviços do Google Cloud , como Dataflow, BigQuery, Cloud Storage e muito mais.
Se você precisa de uma estratégia multicloud e prioriza a portabilidade entre diferentes provedores de nuvem, o Managed Service para Apache Kafka oferece mais flexibilidade. Isso acontece porque o Kafka se integra a uma variedade maior de sistemas fora do Google Cloud em comparação com o Pub/Sub.
Comparação dos recursos
Se esses critérios de decisão de alto nível nas seções anteriores não ajudarem, você poderá fazer uma escolha com base no suporte a recursos específicos. Para uma comparação detalhada entre os dois produtos, consulte a tabela a seguir.
| Recurso | Pub/Sub | Serviço gerenciado para Apache Kafka |
|---|---|---|
| Facilidade de uso | Mais fácil de configurar e manter | Exige mais esforço operacional |
| Modelo de custo | Pagamento por uso | Pagar pela capacidade de computação Pague pelo uso de rede e armazenamento. |
| Processamento único | Oferece suporte a uma única entrega simultânea e semântica de confirmação forte. | Oferece suporte a efeitos colaterais exatamente uma vez ao ler de um tópico e gravar em outro. |
| Escalonamento | Escalonamento automático sem interrupções de KBs a GBs por segundo por tópico que funciona até mesmo para cargas de trabalho imprevisíveis. | Requer configuração manual |
| Entrega solicitada | É possível fazer a ordenação com chaves. Capacidade de 1 MBps por chave de ordenação refinada |
Oferece ordenação em partições. Ordenação por partição até a capacidade de transmissão de uma partição. |
| Retenção de dados | 31 dias | Retenção indefinida |
| Latência de ponta a ponta | Latência de ponta a ponta geralmente na ordem de 100 milissegundos | Normalmente, da ordem de 10 milissegundos para assinantes que se comportam bem. |
| Compatibilidade com Kafka de código aberto para lift and shift | Não | Sim |
| Identity and Access Management e segurança | Sim | Sim |
| Configuração automática de rede | Sim | Sim |
| Multicloud: idêntico em todas as nuvens | Não | Sim |
| SLA de tempo de atividade | Sim | Sim |
| SLA do plano de dados | Sim | Não neste momento |
| Geração de registros e monitoramento | Sim | Sim |
| Reequilíbrio de partições entre agentes | Não relevante | Sim |
| Capacidade automática | O Pub/Sub ajusta dinamicamente a capacidade com base na taxa de mensagens recebidas e na demanda dos assinantes. | O serviço gerencia a infraestrutura subjacente, como VMs e armazenamento. Você controla aspectos como o número de partições e o fator de replicação. |
| Gerenciamento automático de armazenamento | Sim | Sim |
| Upgrades automáticos de software | Sim | Sim |
| Suporte ao cliente | Sim | Sim |
| Serviço do Kafka Connect | Não relevante | Com serviços do Connect fornecidos pelo usuário |
| Suporte a esquemas | Sim | Com um registro de esquema fornecido pelo usuário |
| Compatível com ks qIDB, KSQL | Não | Sim |
| Suporte para conectores OSS | Sim, para conectores do Kafka e do Flink | Não |
| Integração com data lake e data warehouse | Sim | Sim |