Kafka e Schema Registry Modelagem de eventos com robustez e segurança
Rodrigo Vieira Pinto
Sobre o livro
O Kafka se destaca como uma das ferramentas mais impactantes e versáteis na computação distribuída. Sua capacidade de lidar com grandes volumes de dados, em tempo real e com alta resiliência, transformou a maneira como sistemas modernos interagem, trocam informações e escalam suas operações. Desde pipelines de dados robustos até sistemas de eventos que conectam microsserviços, o Kafka se tornou um pilar essencial em arquiteturas contemporâneas.
No entanto, como em qualquer tecnologia poderosa, trabalhar com Kafka apresenta seus próprios desafios. Um dos mais comuns — e críticos — é a necessidade de garantir que os dados enviados e consumidos pelos tópicos mantenham consistência e estrutura ao longo do tempo. Imagine, por exemplo, uma aplicação que consome dados de um tópico e, de repente, recebe uma mensagem com um formato inesperado. Esse pequeno desvio pode causar erros imprevisíveis, comprometer integrações e até mesmo gerar indisponibilidade em sistemas downstream.
Um sistema downstream recebe dados ou depende de outro sistema para funcionar. Em uma arquitetura que possui o Kafka como um dos seus componentes, temos o sistema produtor de mensagens (que pode ser chamado de upstream) e o que consome as mensagens, chamado de downstream.
Ao confiar exclusivamente no Kafka para o transporte de mensagens, muitas equipes enfrentam dificuldades em gerenciar a evolução dos formatos de dados (schemas), assegurando compatibilidade entre versões e evitando quebras nos sistemas que dependem dessas informações. Esse cenário não apenas complica o desenvolvimento, como também adiciona complexidade à operação e manutenção de pipelines de dados.
É aqui que o Schema Registry entra em cena. Essa ferramenta permite que desenvolvedores, operadores e arquitetos registrem, validem e versionem os schemas de mensagens que trafegam nos tópicos Kafka. Com essa solução, as mensagens não são mais um "mistério" que depende de contratos informais ou comunicação verbal entre equipes. Em vez disso, o schema se torna uma fonte de verdade centralizada e confiável, trazendo ordem e previsibilidade para ambientes onde mudanças são inevitáveis.
Este livro foi pensado para ajudar você a compreender e aproveitar melhor o uso do Schema Registry e transformar a forma como trabalha com o Kafka. Ao longo das próximas páginas, você aprenderá a integrar essa poderosa ferramenta ao seu fluxo de trabalho, entenderá como evoluir schemas de forma segura e garantirá que a comunicação entre os serviços seja sempre consistente.
Seja você engenheiro(a) de dados, arquiteto(a) de sistemas ou desenvolvedor(a) back-end, este livro oferece o conhecimento necessário para resolver um dos maiores desafios ao trabalhar com sistemas distribuídos baseados em Kafka.
Bem-vindo(a) a esta jornada. Ao longo das páginas seguintes, você aprenderá como o Schema Registry fortalece as integrações com Kafka, trazendo mais previsibilidade e segurança para seus pipelines de dados. Com esse conhecimento, você estará preparado(a) para construir soluções escaláveis, resilientes e prontas para o futuro.
Sobre o autor
Rodrigo Vieira Pinto é mestre em Engenharia de Software pelo IPT-SP (Instituto de Pesquisas Tecnológicas de São Paulo) e pós-graduado em Engenharia de Software pela PUC-SP (Pontifícia Universidade Católica - SP). Possui cerca de 26 anos de experiência em desenvolvimento de sistemas em Java, PHP e Ruby, passando também pela linguagem C. Já trabalhou com servidores de aplicação como JBoss e Websphere, usando frameworks como EJB 2 e 3, JSP/Servlet, JSF e Hibernate (e ficou feliz quando o Spring Boot surgiu). Gosta muito de paradigmas de programação, padrões de projeto, testes automatizados, de código simples que funciona e de compartilhar conhecimento.
Ministra aulas de programação desde 2018, tanto em cursos livres quanto em faculdades, passando por Caelum, Grupo Alura, SPTech (São Paulo Tech School) e FIAP (Faculdade de Informática e Administração Paulista). Atualmente é Chapter Lead de Arquitetura e Backend da VR Benefícios e professor da disciplina de Domain-Driven Design with Java na FIAP.
Nas horas vagas, estuda tecnologias alternativas, história do Brasil e religião. Também pratica esportes como natação e corrida, e gosta de assistir a corridas de automóvel.
Amante de software bem escrito, entende que a tecnologia da informação tem muito a crescer e evoluir — e que nós, muito a contribuir.
Sumário
- 1 O Alura Eats - um novo delivery de comida
- 1.1 Ferramentas a serem instaladas
- 1.2 Códigos usados por todo o livro
- 2 Sem controle, sem garantia: a falta que o Schema Registry faz
- 2.1 Mensagens sem contrato definido e seus problemas
- 2.2 O Schema Registry
- 2.3 Inserindo o Schema Registry na nossa solução
- 2.4 Inserindo um schema para a mensagem
- 2.5 Inserindo um schema para a chave da mensagem
- 2.6 Assincronia dos testes de envio de mensagens e sua correção com Awaitility
- 2.7 Mas e o consumidor?
- 2.8 Diferenças entre o JsonSerializer e o KafkaJsonSchemaSerializer
- 2.9 Resumo
- 3 Explorando a API do Schema Registry: Endpoints, Subjects e Schemas
- 3.1 O subject e seus schemas
- 3.2 Cadastrando schemas
- 3.3 Listando schemas
- 3.4 Outras buscas
- 3.5 Remoção soft e hard de schemas
- 3.6 Remoção soft e hard de subjects
- 3.7 Resumo
- 4 Implementando Schema Registry no consumidor de mensagens
- 4.1 O ms-pedidos em detalhe
- 4.2 De JsonDeserializer para KafkaJsonSchemaDeserializer
- 4.3 As constantes JSON_KEY_TYPE e JSON_VALUE_TYPE de KafkaJsonSchemaDeserializerConfig
- 4.4 Corrigindo os testes
- 4.5 Tipos primitivos nos atributos das mensagens e seus problemas
- 4.6 Resumo
- 5 O Avro como formato de mensagens
- 5.1 Os problemas do formato JSON, e o Avro como solução
- 5.2 Realização de pedidos no ms-pedidos
- 5.3 Implementação do formato Avro na comunicação entre os microsserviços usando AVSC (Avro Schema)
- 5.4 O plugin avro-maven-plugin
- 5.5 O protocolo SOAP (Simple Object Access Protocol)
- 5.6 Cadastro de schemas no Schema Registry
- 5.7 Resumo
- 6 Consumidores de mensagens Avro e o AVDL
- 6.1 Automação do cadastro do schema do tópico de pedidos
- 6.2 Integração entre o ms-pedidos e o ms-entregadores
- 6.3 Geração de stubs Avro e implementação do consumidor de pedidos no ms-entregadores
- 6.4 O Avro IDL (Interface Definition Language)
- 6.5 Geração de stubs Avro a partir de schemas AVDL
- 6.6 Cadastro do schema no Schema Registry e o avro-tools
- 6.7 Implementação do produtor de mensagens
- 6.8 Resumo
- 7 Avançando com Schema Registry: Modos de compatibilidade, tipos lógicos do Avro e customizações
- 7.1 Idempotência das APIs do Schema Registry
- 7.2 Enviando mensagens sem aval do Schema Registry
- 7.3 Tipos lógicos no Avro
- 7.4 Modos de compatibilidade entre schemas de mesmo subject
- 7.5 A inclusão do preço nos itens de cardápio
- 7.6 Um desserializador de mensagens customizado - obtendo o Schema ID nas mensagens e a última versão de schema de um subject
- 7.7 A propriedade USE_LATEST_VERSION e boas práticas associadas
- 7.8 Resumo
- 8 O Protobuf como formato de mensagens
- 8.1 O formato Protobuf
- 8.2 Notificando os restaurantes do despacho dos entregadores aos destinos: o ms-notificacoes
- 8.3 Compilação de arquivos .proto usando o utilitário protoc
- 8.4 O plugin protobuf-maven-plugin e a compilação usando Maven
- 8.5 O KafkaProtobufSerializer
- 8.6 Suporte do Avro Schema Merger a arquivos .proto
- 8.7 KafkaProtobufDeserializer, o KafkaProtobufDeserializerConfig.SPECIFIC_PROTOBUF_VALUE_TYPE e o consumo das notificações pelo ms-restaurantes
- 8.8 Resumo
- 9 Integração com o Kafka Connect
- 9.1 Consulta aos pedidos realizados
- 9.2 O Kafka Connect
- 9.3 Envio dos pedidos realizados para o tópico de auditoria usando o Kafka Connect
- 9.4 Kafka Connect e Schema Registry: uma relação baseada em compatibilidade
- 9.5 Resumo
- 10 Conclusão
- 11 Bibliografia
Dados do produto
- Número de páginas:
- 274
- ISBN:
- 978-85-5519-402-3
- Data publicação:
- 07/2025