Upgrade to Pro — share decks privately, control downloads, hide ads and more …

REST vs gRPC: Battle of API's

REST vs gRPC: Battle of API's

During my journey in micro-services, it became apparent that the REST standard has been widely used in communication between micro-services for a long time. But recently the gRPC started to invade its territory. It turns out that there are some good reasons for this. In this lecture, I will present an introduction to gRCP, its main characteristics and the reasons why companies like Google, Netflix, and Docker are adopting this flexible and performative medium of communication.

Ef3b48913ea26665c25b2ad78e449d16?s=128

Luram Archanjo

December 14, 2018
Tweet

Transcript

  1. { REST } vs Battle of API’s

  2. Who am I? • Software Engineer at Sensedia • MBA

    in java projects • Java and microservice enthusiastic
  3. Agenda • Microservices • REST • gRPC • Demo •

    Questions
  4. Moving to Microservices Feature A Feature B Feature C Monolith

    Microservice Microservice Microservices Microservice
  5. • Communication • Security / Authentication • Network Communication Speed

    • Language Interoperability Challenges with Microservices
  6. Communication Microservice Microservice Microservice HTTP + JSON REpresentational State Transfer

    Microservice Microservice BD
  7. REST - Representational State Transfer GET GET POST PUT DELETE

    /movies /movies/{movieId} /movies /movies/{movieId} /movies/{movieId}
  8. • Web already built on top of HTTP • Easy

    to understand • Variety of http implementation in any languages • Loose coupling between client and server Representational State Transfer • Good things • Bad things
  9. • Operations are difficult to model • Streaming is difficult

    to implement • Bi-directional streaming is not possible • Inefficient, textual representation are not optimal for networks Representational State Transfer • Good things • Bad things
  10. gRPC is going to fix all of those problems?

  11. Yes!!!

  12. What is RPC and gRPC?

  13. • A high-performance open-source universal RPC framework • Based on

    “Stubby” (Google’s internal RPC system) • Part of Cloud Native Computing Foundation
  14. So what makes gRPC so effective?

  15. • Strongly typed • Rules for making backwards compatible changes

    • Efficient binary data representation for network transmission • Comprehensive style guide Protocol Buffers Protocol buffers are Google's language-neutral, platform-neutral, extensible mechanism for serializing structured data.
  16. Interface Definition Language The API definition and structure of the

    payload messages. syntax = “proto3”; message PersonRequest { string name = 1; int32 age = 2; } message PersonResponse { int32 id = 1; string name = 2; int32 age = 3; } service PersonService { rpc create(PersonRequest) returns (PersonResponse); }
  17. Define once, generates well-structured code for all supported language!

  18. Ruby microservice gRPC server Go microservice gRPC server gRPC Stub

    Java microservice gRPC Stub Python microservice gRPC server gRPC Stub Multiple Language Support
  19. Multiple Platform Support

  20. Works over HTTP 2

  21. History of HTTP HTTP 0.9 1991 HTTP 1 1996 HTTP

    2 2015 HTTP 1.1 16 years without evolution or improvement 1999
  22. HTTP 2 • Multiplexing • Bidirectional Streaming • HTTPS •

    Performance HTTP 2 HTTP 1.x
  23. HTTP 2 • Multiplexing • Bidirectional Streaming • HTTPS •

    Performance
  24. HTTP 2 • Multiplexing • Bidirectional Streaming • HTTPS ◦

    SSL/TLS ◦ Token authentication ◦ Channel credentials ◦ Call credentials • Performance
  25. HTTP 2 • Multiplexing • Bidirectional Streaming • HTTPS •

    Performance HTTP 1.1 HTTP 2
  26. Connection options The client sends a single request and gets

    back a single response Unary RPC The server sends back a stream of responses after getting the client’s request message Server streaming RPC The client sends a stream of requests to the server instead of a single request Client streaming RPC The call is initiated by the client calling the method and the server receiving the client metadata, method name, and deadline Bidirectional streaming RPC
  27. Who is using gRPC?

  28. Companies

  29. Community

  30. Why mainly Google and Netflix are using gRPC?

  31. Performance Sources: https://cloud.google.com/blog/products/gcp/announcing-grpc-alpha-for-google-cloud-pubsub

  32. Performance Sources: https://blog.gopheracademy.com/advent-2015/etcd-distributed-key-value-store-with-grpc-http2, https://auth0.com/blog/beating-json-performance-with-protobuf

  33. Flexibility & Summary Source: https://www.infoq.com/presentations/grpc

  34. Demo

  35. Where to use gRPC?

  36. Use case gRPC shines as a way to connect servers

    in service-oriented environments Microservices gRPC works just as well in client-server applications, where the client application runs on desktop or mobile devices Client-Server Application gRPC is also a way to offer APIs over the Internet, for integrating applications with services from third-party providers Integrations and APIs Do not use! grpc-gateway grpc-web (oct/18) Browser-based Web Applications
  37. Thanks a million! /larchanjo /luram-archanjo