15 Comments
User's avatar
Sathish's avatar

Thanks NK for the detailed explanations. Why does JS doesn’t perform as good as Java or python using Protobuf?

Expand full comment
Neo Kim's avatar

JSON is native to JS - and makes it efficient. You can read more about the study: https://auth0.com/blog/beating-json-performance-with-protobuf

Expand full comment
Raviraj Achar's avatar

JSON -> Binary, yea totally makes sense for perf wins.

Expand full comment
Jean Pierre Erasmus's avatar

Great read, thanks. What would you classify as a big payload?

Expand full comment
Neo Kim's avatar

Hey Jean, sorry - I don't have specific numbers. You can read this article to get a better idea: https://auth0.com/blog/beating-json-performance-with-protobuf/

Expand full comment
Jean Pierre Erasmus's avatar

Thanks! I’ll read that

Expand full comment
Franco Fernando's avatar

Thanks for the mention NK! I love your newsletter as well.

Expand full comment
Neo Kim's avatar

you're welcome.

Expand full comment
Frank Dana (FeRD)'s avatar

JSON Schema IS a thing (json-schema dot org), so it's not quite fair to say that there's NO support for schema validation. Protobuf is still always going to win on performance, of course. Especially since adding schema validation to JSON-based APIs only makes them even slower.

Expand full comment
Fran Soto's avatar

Thanks for the article NK, really interesting for people like me who didn't work with protocol buffers.

I'd highlight your section on rolling it out. It's easy to design theoretical architectures, another thing is rolling that out in existing services. Makes sense to implement an existing framework, upgrade version, and still have a feature toggle to release in a controlled manner.

Expand full comment
Neo Kim's avatar

I appreciate your comment, Fran. Thank you

Expand full comment
Jordan Cutler's avatar

Really enjoyed the article and the analogy at the beginning. Thanks, NK

Expand full comment
Dhananjay Dubey's avatar

Thanks for sharing

Expand full comment
Harshitt Sharma's avatar

Good share!

So you define your message schema in proto file.

This is compiled to generate code in system specific language.This code is Protobuf.

Now this handy code, can be easily imported in to the programs.

We can define our data by hydrating the schema we wrote earlier. Serialising and de-serialising is also easy, as the protobuf file provides methods to do it already!

Expand full comment
Giovanny Velez's avatar

How big is "big" in this context?

Expand full comment