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

gRPC: Integrating east / west services in high ...

gRPC: Integrating east / west services in high performance!

During my journey in microservices, it became apparent that the REST standard has been widely used in communication between microservices for a long time. But recently 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 gRPC, its main characteristics and the reasons why companies like Google, Netflix and Docker will adopt this flexible and performative means of communication.

Luram Archanjo

June 26, 2020
Tweet

More Decks by Luram Archanjo

Other Decks in Technology

Transcript

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

    in Java projects • Java and Microservice enthusiastic
  2. Moving to Microservices Feature A Feature B Feature C Monolith

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

    • Language Interoperability Challenges with Microservices
  4. Communication Patterns Microservice Microservice API GATEWAY East / West Synchronous

    Microservice Microservice API GATEWAY East / West Asynchronous REST
  5. Communication Patterns Microservice Microservice API GATEWAY East / West Synchronous

    REST • Web already built on top of HTTP • Easy to understand • Variety of http implementation in any languages • Loose coupling between client and server
  6. Communication Patterns Microservice Microservice API GATEWAY East / West Synchronous

    REST • Operations are difficult to model • Streaming is difficult to implement • Bi-directional streaming is not possible • Inefficient, textual representation are not optimal for networks
  7. • A high-performance open-source universal RPC framework • Based on

    “Stubby” (Google’s internal RPC system) • Part of Cloud Native Computing Foundation
  8. • 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.
  9. 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); }
  10. Ruby microservice gRPC server Go microservice gRPC server gRPC Stub

    Java microservice gRPC Stub Python microservice gRPC server gRPC Stub Multiple Language Support
  11. History of HTTP HTTP 0.9 1991 HTTP 1 1996 HTTP

    2 2015 HTTP 1.1 16 years without evolution 1999
  12. HTTP 2 • Multiplexing • Bidirectional Streaming • HTTPS ◦

    SSL/TLS ◦ Token authentication ◦ Channel credentials ◦ Call credentials • Performance
  13. 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
  14. Connection options Unary RPC rpc SayHello(HelloRequest) returns (HelloResponse); Server streaming

    RPC rpc LotsOfReplies(HelloRequest) returns (stream HelloResponse); Client streaming RPC rpc LotsOfGreetings(stream HelloRequest) returns (HelloResponse); Bidirectional streaming RPC rpc BidiHello(stream HelloRequest) returns (stream HelloResponse);
  15. 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 Connecting mobile devices, browser clients to backend services Browser-based Web Applications