Kafka e Schema Registry Modelagem de eventos com robustez e segurança

Rodrigo Vieira Pinto

*Você terá acesso às futuras atualizações do livro.

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

Saiba o que você vai aprender

 

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

Compartilhe!

Compartilhe no Facebook Compartilhe no Twitter