title: Is gRPC(HTTP/2) faster than REST with HTTP/2?
body: <p>The goal is to introduce a transport and application layer protocol that is better in its <strong>latency</strong> and <strong>network throughput</strong>. Currently, the application uses <strong>REST</strong> with <strong>HTTP/1.1</strong> and we experience a high latency. I need to resolve this latency problem and I am open to use either <strong>gRPC(HTTP/2)</strong> or <strong>REST/HTTP2</strong>.</p>
  
  <p><strong>HTTP/2:</strong></p>
  
  <ol>
  <li>Multiplexed</li>
  <li>Single TCP Connection</li>
  <li>Binary instead of textual</li>
  <li>Header compression</li>
  <li>Server Push</li>
  </ol>
  
  <p>I am aware of all the above advantages. <strong>Question No. 1:</strong> If I use <strong>REST with HTTP/2</strong>, I am sure, I will get a significant performance improvement when compared to <strong>REST with HTTP/1.1</strong>, but how does this compare with <strong>gRPC(HTTP/2)</strong>?</p>
  
  <p>I am also aware that gRPC uses proto buffer, which is the best <strong>binary serialization</strong> technique for transmission of structured data on the wire. Proto buffer also helps in developing an language agnostic approach. I agree with that and I can implement the same feature in REST using graphQL. But my concern is over serialization: <strong>Question No. 2:</strong> When <strong>HTTP/2</strong> implements this <strong>binary feature</strong>, does using proto buffer give an added advantage on top of HTTP/2? </p>
  
  <p><strong>Question No. 3:</strong> In terms of <strong>streaming, bi-directional use-cases</strong>, how does gRPC(HTTP/2) compare with (REST and HTTP/2)?</p>
  
  <p>There are so many <strong>blogs/videos</strong> out in the internet that compares gRPC(HTTP/2) with (REST and HTTP/1.1) like <a href="https://husobee.github.io/golang/rest/grpc/2016/05/28/golang-rest-v-grpc.html" rel="noreferrer">this</a>. As stated earlier, I would like to know the differences, benefits on comparing GRPC(HTTP/2) and (REST with HTTP/2).</p>