gRPC – Some Thoughts

Google recently released gRPC, an Open Source framework for handling remote procedure calls. The announcement is timely due to several reasons, some of which include the rise of IoT (and the need for small/tight/less resource hungry protocols), the announcement of HTTP/2 standard and a current favorite topic among developers : microservices.

I am definitely excited at the announcement and did devote some time to looking around the project, sample apps, interface definitions and much more. It does interest and you can bet that I will be spending some time on it this year, no doubt about that.

The release of gRPC seems to have triggered a series of thoughts in my mind: technical and otherwise. Here they go (in no order of importance):

Home page or FAQ

The home page of gRPC is here. But tell you what, I found the FAQ much more readable and clear on what it is and wants to be. I suggest you start there first.

Binaries please!

I accept and understand that it is an alpha release for now. Despite that, I would request that you have binaries available for each OS version so that people can actually try it out quickly. What is interesting to try out is not the samples and the already generated client and server bindings but to actually write a simple IDL and use the protoc to generate the bindings in the languages that are currently supported for gRPC. This would be my humble suggestion.

Gradle

I love Gradle, make no mistake about it. But it is not easy to understand, especially for someone who is trying to just get a handle on gRPC (in this case). Instead what they have to end up doing is to have a working version of Gradle, and run the gradle files to see things work. I think this is not an optimal experience , especially for a newbie. One of my interests is to talk to a lot of developers, teach some technology, make them adopt new platforms (I must have spoken to 1000+ developers in the last year itself on various GCP related services). Gradle is a problem for most of them and I suggest that we provide just about clear instructions to run protoc with command line parameters. This is not to discount the benefit that eventually Gradle brings to the table, just that it should not be the first experience in my opinion.

Understand the Protocol

If you are looking to using gRPC, it does help to understand first the protocol. Check out the Protocol page. In fact I would suggest to learn the IDL first i.e. Protocol Buffers specification. Start with the developers guide.

Example Service Protos

I like the Github repo for the Example Service Protos. Though there are only a couple of service definitions in there, I believe this will build up fast over time and we can have some great service definitions in here, that people could just take and/or get inspired from.

Google Cloud Endpoints

As someone who has done a bit of work with Google Cloud Endpoints and taught it across to a lot of developers, it would be interesting to see how gRPC is being positioned vis-a-vis that framework. Currently the way that I look at this, Cloud Endpoints is App Engine specific and has much less language bindings then the ones announced for gRPC. I think running gRPC services inside of GCE could be a way of looking at it.

Where is the sweetspot?

Granted HTTP/2 specification is the big announcement and is something that all developers should be happy about. When it comes to gRPC, yes we are talking about HTTP/2 but it is important to highlight specific use cases where this will make a huge difference. The points that are being highlight are services for a mobile first world. That sounds good but we need specific case studies, systems in production and data to spread the message more effectively.

Standardization / Acceptance

I like the fact that it is open sourced. The bigger problem in my opinion will be to not just get enough developer mind-share but start people to use this instead of the number of frameworks that are available here today. Without widespread client support (and the web browser vendors are critical here), this is going to be a long and difficult path. It is going to be interesting to see how this gets played out.

Roadmap

I think it is real early for gRPC at the moment but a great time to jump right in. There is no point in waiting if this interests you. I do have some open questions vis-a-vis the road map:

  • Any timelines for a Alpha / Beta / RC sort of the release?
  • What is the timeline or current status for support in a Web browser?
  • What is the position of other browser vendors?

Comparison with other frameworks

If you have been old enough to remember XML-RPC – you will know that this represents another evolution in the whole services protocol space. There are several protocols that are out there today and it is not going to be easy for a developer to make those decisions. Some of them that recently come to mind are Apache Thrift, Apache Avro and more. By the way, I really liked Hessian too, when it was released first. The data serialization formats page at Wikipedia gives you a bigger picture. Hopefully it confuses you too 🙂

Parting thoughts

I am still itching to get those binaries – so that I can show this stuff quickly to developers and let them play with it. Sure – I could go ahead and build them, but I am still hopeful  this will be quickly addressed.

I am excited about gRPC and I would love to hear your thoughts.

Advertisements

One thought on “gRPC – Some Thoughts

  1. I’m new to gradle to protobuf, imagine how much this sucks for me, i’m stuck with grpc tough i know i need it 😦

    Why wont you make a tutorial as you seem to freely use it… Just explain along the way how the gradle scripts are composed what means what. That would be so helpful for me and many others.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s