Binary protocol instead of HTTP/JSON
I've just installed GDK and noticed Gitaly, the idea looks great. However I think to get most from this change it would be nice to use binary protocol. Two things that come to mind:
- git is relatively chatty data source. e.g. I think serializing Diffs or Blame to/from json might be quite expensive.
- blob contents: binary data or even plain text that might need to be always base64 encoded for transport which adds to the overhead.
I'm sure http json will work but given the specifics of git I'm pretty confident that gains from binary will be there.
On that note I think its worth considering using e.g. gRPC as its well established client/server RPC framework with support for many languages. Also gRPC has some tooling that make debugging much easier than just using protobuf.