O Que É um Protobuf Schema? Protocol Buffers Explicados
Um protobuf schema é um arquivo .proto que define a estrutura das mensagens para o Protocol Buffers, um formato de serialização binário compacto do Google.
Protocol Buffers (protobuf) é uma forma rápida, compacta e orientada a schema de serializar dados, muito usada para comunicação entre serviços. O schema - um arquivo .proto - é o contrato: ele declara os campos de cada mensagem, e um compilador o transforma em código na sua linguagem. Levar protobuf a um projeto significa um passo de geração de código que pertence ao CI.
O que é um protobuf schema
Um protobuf schema é um arquivo .proto de texto simples que declara mensagens e seus campos, cada campo tendo um tipo, um nome e um número único. Os números, não os nomes, identificam os campos na transmissão, o que é o que permite ao protobuf codificar dados de forma compacta e evoluir com segurança.
Codificação binária orientada a schema
Diferente do JSON, o protobuf não embute nomes de campo nos bytes serializados - ele usa os números de campo do schema. Isso torna a saída pequena e rápida de analisar, mas também significa que você não pode ler os bytes sem o schema. O schema é obrigatório, não documentação opcional.
Geração de código
Um compilador lê o arquivo .proto e gera classes ou structs na sua linguagem-alvo para codificar e decodificar mensagens. Esse código gerado é o que sua aplicação de fato importa. Como é gerado, costuma ser regenerado no CI em vez de commitado, mantendo-o em sincronia com o schema.
Protobuf no CI
Builds de CI normalmente executam o compilador de protobuf para regenerar código, fazem lint do schema em busca de estilo e mudanças que quebram compatibilidade, e verificam a compatibilidade retroativa para que uma edição de schema não possa quebrar silenciosamente clientes existentes. A detecção de mudanças incompatíveis no arquivo .proto é um gate de CI valioso para APIs compartilhadas.
# Generate code and check compatibility in CI
steps:
- run: buf lint
- run: buf breaking --against ".git#branch=main"
- run: buf generateNota Latchkey
O compilador de protobuf e ferramentas como o buf são apenas CLIs que seu job instala. No Latchkey esses downloads de ferramentas ficam em cache entre execuções, então jobs de geração de código não rebaixam o compilador a cada build.
Principais conclusões
- Um protobuf schema é um arquivo .proto que declara mensagens e campos numerados para um formato binário compacto.
- A codificação usa números de campo, não nomes, então o schema é necessário para ler os bytes.
- O CI regenera o código a partir do schema e barra mudanças que quebram compatibilidade para proteger clientes existentes.