Skip to content
Latchkey

Protobuf vs JSON: binário ou legível por humanos?

Protobuf é um formato de serialização binária compacto e orientado a schema; JSON é um formato de texto ubíquo e legível por humanos que não exige schema.

Protobuf define mensagens em arquivos .proto, gera código tipado e serializa para payloads binários pequenos e rápidos, ideal para serviços internos e gRPC. JSON é baseado em texto, autodescritivo, depurável a olho nu e suportado em todo lugar, mas maior e mais lento de parsear. Protobuf favorece performance e contratos fortes; JSON favorece legibilidade, flexibilidade e suporte universal.

ProtobufJSON
CodificaçãoBinárioTexto
SchemaObrigatório (.proto)Opcional
Tamanho / velocidadePequeno, rápidoMaior, mais lento
LegibilidadeNão legível por humanosLegível por humanos
Melhor paraServiços internos, gRPCAPIs web, config, depuração

Caso de uso e performance

Protobuf brilha em RPC interno de alto volume onde tamanho do payload, velocidade e um schema forte importam, especialmente com gRPC. JSON brilha para APIs públicas, configuração, logs e em qualquer lugar onde humanos leem os dados ou os clientes variam. Muitos sistemas usam Protobuf internamente e JSON na borda.

No CI

Pipelines de Protobuf rodam codegen com protoc/buf e verificam o código gerado e a compatibilidade retroativa. Pipelines de JSON validam contra JSON Schema onde usado. Ambos rodam em managed runners, onde runners mais rápidos encurtam os passos de codegen e validação.

O veredito

RPC interno de alto volume que precisa de payloads pequenos, rápidos e fortemente tipados: Protobuf. APIs públicas, config e dados legíveis por humanos: JSON. Uma divisão comum é Protobuf para tráfego de serviços internos e JSON para uso externo, no browser ou em config.

Guias relacionados