Kafka e Schema Registry Modelagem de eventos com robustez e segurança
Rodrigo Vieira Pinto
Conteúdo
Em sistemas distribuídos, manter produtores e consumidores em sintonia quanto à estrutura das mensagens é um desafio recorrente. É nesse cenário que o Schema Registry se destaca, permitindo a evolução segura dos contratos entre serviços.
Neste livro, Rodrigo Vieira Pinto ensina como aplicar o Schema Registry na prática, criando produtores e consumidores Kafka com os formatos JSON Schema, Avro e Protobuf. Você vai explorar os principais endpoints da ferramenta e fazer a integração com o Kafka Connect para facilitar a comunicação com sistemas legados e fontes de dados externas. Com exemplos práticos e bem estruturados, o livro cobre desde a definição dos esquemas até sua aplicação em pipelines reais, sempre com foco em robustez e manutenibilidade. Tudo isso com o suporte de testes automatizados, para garantir qualidade e confiança ao longo do desenvolvimento.
Assista à live com o autor aqui
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
Autor

Rodrigo Vieira Pinto
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.
Dados do produto
- Número de páginas:
- 274
- ISBN:
- 978-85-5519-402-3
- Data publicação:
- 07/2025