15 Comments

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

Expand full comment

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

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

Expand full comment

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

Expand full comment

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

Thanks! I’ll read that

Expand full comment

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

Expand full comment

you're welcome.

Expand full comment

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

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

I appreciate your comment, Fran. Thank you

Expand full comment

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

Expand full comment

Thanks for sharing

Expand full comment

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

How big is "big" in this context?

Expand full comment