Pular para o conteúdo principal

Pergunta 8 de 50

Kafka versus Google Pub/Sub

SêniorTech Lead

Pergunta

"Você conhece o Google Pub/Sub? Como ele se compara ao Kafka?"

O que o entrevistador quer avaliar

Menos comum que RabbitMQ/SQS, mas aparece em empresas com stack GCP. Avalia se você entende que "gerenciado" não é sinônimo de "idêntico ao Kafka" e se sabe onde a semântica diverge.

Resposta rápida

Google Pub/Sub é um serviço de pub/sub totalmente gerenciado, com retenção configurável (até 31 dias) e suporte a replay via seek. A diferença central é que ele não tem o conceito de partition/offset do Kafka — ordenação é opcional, via ordering key, e tem custo de throughput quando ativada. É operacionalmente o mais próximo de "Kafka sem operar cluster", mas com semântica diferente.

Resposta nível Sênior

Pub/Sub resolve boa parte do que o Kafka resolve — múltiplos assinantes independentes do mesmo tópico, retenção configurável, capacidade de reler mensagens — mas com um modelo de dados diferente. Não existe partition como unidade de paralelismo e ordenação; em vez disso, há uma ordering key opcional que garante ordem para mensagens com a mesma chave, às custas de throughput menor nesse fluxo. A operação é zero para o time — não há cluster para gerenciar, diferente do Kafka auto-hospedado. Na prática, para times já comprometidos com Java/Spring e o ecossistema de client do Kafka (Spring Kafka, Kafka Streams), migrar para Pub/Sub tem custo de reescrita; para times GCP-native, sem investimento prévio em Kafka, Pub/Sub remove a complexidade operacional de cluster, ao custo de menor controle sobre paralelismo/ordenação.

Explicação aprofundada

Veja a comparação completa no Capítulo 2.

Exemplo financeiro

Um sistema de conciliação bancária que precisa garantir ordem estrita de eventos por conta pagaria o custo de uma ordering key por contaId no Pub/Sub — equivalente conceitualmente a particionar por key no Kafka, mas com uma penalidade de throughput diferente e explícita no Pub/Sub.

"Pub/Sub e Kafka são intercambiáveis, é só trocar o client"

A ausência do conceito de partition/offset muda a semântica de ordenação e de paralelismo de consumo. Migrar entre eles não é uma troca trivial de biblioteca — exige redesenhar a estratégia de particionamento/ordenação.

Pode vir a seguir

Pode vir a seguir: "como funciona ordenação sem partition?" e "você usaria Pub/Sub para um sistema já maduro em Kafka?".

Capítulos relacionados