Intro to gRPC: A Modern Toolkit for Microservice Communication

แชร์
ฝัง
  • เผยแพร่เมื่อ 13 ม.ค. 2025

ความคิดเห็น • 73

  • @g00dvibes47
    @g00dvibes47 5 ปีที่แล้ว +30

    One of the best presentations I’ve seen. Love seeing professionals in the industry go off like this.

  • @kidkool27
    @kidkool27 5 ปีที่แล้ว +31

    Was really confused by RPC until I saw this. This is great!

    • @youtindia
      @youtindia 2 ปีที่แล้ว +1

      Seriously. Every other presentation other than this starts talking about Transport layer, Serialization, L5, L6, L7 of the OSI model and all the stuff.
      Just tell me what it is and maybe then we can get into the inner details. This presentation nailed it.

  • @iamdexterpark
    @iamdexterpark 5 ปีที่แล้ว +5

    I highly appreciate this talk. Thank you so much for the opportunity to learn!

  • @mutley11
    @mutley11 6 ปีที่แล้ว +7

    It seems that a lot of talks about IPC protocols only really consider the fate of the thing that came just before it. It would be good to show how system-Y is less likely to die compared to numerous systems that come before; starting with the likes of ASN.1 (which started out simple enough, but died/marginalised due to design-by-commitee and resultant feature proliferation, and poor tool support). As an observer, I think looking at this of comparative analysis would give a good indication of when the system is suitably stable. At least, I'm glad that its an open specification which is largely driven by one large diverse body with largely technical interests at heart.

  • @SunilSingh1994
    @SunilSingh1994 5 ปีที่แล้ว +10

    A great talk to get started with gRPC

    • @Techtter
      @Techtter 4 ปีที่แล้ว +1

      gRPC is a game changer in microservices world, all the companies going to adapt it very soon. Its time to say good bye to REST-JSON. Instead go with gRPC-Protobuf.
      I made a complete gRPC Java Course, Check it out for FREE Complete Course on my channel. #techtter

  • @kkmingming
    @kkmingming 5 ปีที่แล้ว +11

    He put a lot of efforts into this presentation!!

  • @AdmiralBud
    @AdmiralBud 5 ปีที่แล้ว +9

    Has the error handling improved since this talk?

  • @tonyohagan
    @tonyohagan 5 ปีที่แล้ว +6

    You can generate client libs for REST APIs using swagger toolkits.

  • @imkiransuvarna
    @imkiransuvarna 4 ปีที่แล้ว

    Great, I also wanted to know about the gRPC-gateway.

  • @CrateRuby
    @CrateRuby 2 ปีที่แล้ว

    great presentations

  • @speedplane
    @speedplane 5 ปีที่แล้ว +3

    Can grpc create nice looking HTML documentation for each of the client libraries that it generates?

  • @AlecWantoch
    @AlecWantoch 6 ปีที่แล้ว +4

    NATS (gnatsd) bus could solve the load balancing issues, and helps with connecting microservices/containers

    • @loden5677
      @loden5677 3 ปีที่แล้ว

      any recommendation for sources / tutorials on integrating NATS in a microservice based system?

  • @DKAS-g4h
    @DKAS-g4h 6 ปีที่แล้ว +14

    great talk!
    But what the hell is going on in the room? 20:06

    • @renanrodriguessm1845
      @renanrodriguessm1845 5 ปีที่แล้ว +12

      Sounds like two dudes are beating each other to decide who will sit on the chosen seat.

  • @natep3419
    @natep3419 4 ปีที่แล้ว +1

    Hi, I know this is an old talk but is there a chance the example code is available in a repository still?

  • @redstoneprojectrules
    @redstoneprojectrules 4 ปีที่แล้ว

    The bad and the ugly:
    - Load balancing: Can be mitigated by using a service mesh (eg. through ISTIO virtualservices)
    - Rich errors: perhaps just do one_of(message, rich_error)?
    Am I wrong?

  • @cnikolov
    @cnikolov 5 ปีที่แล้ว

    Its seems very easy to setup for internal services but nothing in particular for browsers, are there any javascript libraries we can use to implement for the web? what about the web?

  • @franciscolopezsancho
    @franciscolopezsancho 4 ปีที่แล้ว

    Very clear indeed. Thank you so much

  • @lisasievers6999
    @lisasievers6999 7 ปีที่แล้ว +1

    you can with Ruby though, yes? error responses?

  • @cplusplussizeddick1430
    @cplusplussizeddick1430 4 ปีที่แล้ว

    Can you someone give an estimate for how long it'll take to learn until you're able to build an API using gRPC? In hours.

  • @BerkeSokhan
    @BerkeSokhan 6 ปีที่แล้ว +9

    The client lib creation and compiler belongs to protobuf not gRPC, and it was happening years before gRPC. Presenter convolutes Protocol Buffers with gRPC.

    • @joonasfi
      @joonasfi 6 ปีที่แล้ว +6

      No. Protobuf doesn't understand about timeouts or RPC endpoints. I guess you could say protobuf is how you define what the RPC call takes as an input and what it produces as output, but the service / RPC call itself / timeouts / client lib creation is definitely gRPC stuff.

  • @maximyefremov9718
    @maximyefremov9718 6 ปีที่แล้ว

    Very entertaining and engaging presentation

  • @PaulSebastianM
    @PaulSebastianM 6 ปีที่แล้ว

    Browser JS -> WebASM and use any of the protoc generated stubs! Right?

    • @AlecWantoch
      @AlecWantoch 6 ปีที่แล้ว

      Paul-Sebastian Manole check gRPC-web

  • @Baltasarmk
    @Baltasarmk 6 ปีที่แล้ว +10

    Slides are impossible to read on mobile screen.

    • @SusenMaharjan
      @SusenMaharjan 6 ปีที่แล้ว +8

      Maybe your phone has small screen mate

    • @AbulHasanLakhani
      @AbulHasanLakhani 5 ปีที่แล้ว

      S9+ has pretty decent screen.. still difficult to read slide text. May be because half of the screen is taken by the presenter

  • @xufeisun1397
    @xufeisun1397 4 ปีที่แล้ว

    This guy really knows his stuff! Anyone knows his name?

  • @loden5677
    @loden5677 3 ปีที่แล้ว

    Loved the jokes. Btw what are they referring to when they mention "streaming"?

  • @12a4tv
    @12a4tv 4 ปีที่แล้ว

    CAn you share me slide?

  • @khaled_osman
    @khaled_osman 4 ปีที่แล้ว

    What about graphql, with it you get the same benefits without the drawbacks of grpc in terms of load balancing, error messages/handling, browser support, documentation, etc..

    • @michaelabbott7560
      @michaelabbott7560 4 ปีที่แล้ว

      I'm not sure how you've come to that conclusion?

    • @khaled_osman
      @khaled_osman 4 ปีที่แล้ว

      @@michaelabbott7560 I've personally used GraphQL many times before

    • @michaelabbott7560
      @michaelabbott7560 4 ปีที่แล้ว

      @@khaled_osman But that doesn't explain how you think you can get the same benefits with GraphQL without the drawbacks over GRPC?

    • @khaled_osman
      @khaled_osman 4 ปีที่แล้ว

      @@michaelabbott7560 from my interpretation, this is why I'm asking, what are the benefits of grpc over graphql?

    • @michaelabbott7560
      @michaelabbott7560 4 ปีที่แล้ว +1

      @@khaled_osman Ah ok sorry! Didn't realise you were asking.
      So lets talk at the architectural level to begin specifically at a networking level.
      HTTP2 vs HTTP1.1. You use HTTP1.1 currently, any time you start querying a graphql server, set up subscriptions mutations etc all that fun stuff. REST also follows this approach currently. So what does HTTP2 provide that HTTP1.1 doesn't?
      Well firstly, HTTP2 uses binary protocols to complete requests. What does this mean? It's faster to decode and encode the request, and it's more 'compact' over the network so it makes the network more efficient too.
      Allows for bi-directional streams.
      Allows for domain sharding.
      Those are 'some' of the differences between HTTP2 vs HTTP1.1.
      You'd be correct in saying those are differences at the Networking level and aren't a direct comparison between graphql and GRPC but GRPC does expose this functionality as GRPC uses HTTP2 as it's transport layer.
      So lets talk about individual differences.
      GRPC uses Protofiles as a way describing an API. So what's so good about this? REST can do a similar thing with YAML.
      Well firstly, Protofiles use a binary serialisation, which means the file size of a protofile structure will always be less that it's counter part of JSON or XML for example
      message Sample {
      string sample = 1;
      } vs
      {
      sample: "some value"
      }
      Now this is a silly comparison to be honest because the difference in byte size between the two would be tiny. But what if the response was bigger? Couple hundred lines? and that API is being hit thousands of times a day? Ok, now were going to notice the difference.
      Other benefits?
      So, another purpose of those proto files serve is in conjunction with protoc.
      Protoc can take your protofiles and turn them into a language client (if you've ever worked with an api large enough that's exposed to other customers they may require a REST client that exposes the functionality of the api in some kind of arbitrary abstraction of a curl request. Here's an example github.com/sendgrid/rest).
      Well now, with protoc and protobuffs you can generate those clients in almost any language and distribute them to a clients, customers etc eliminating the need to generate rest clients, AKA developer time.
      An example of such a command would be
      protoc --proto_path=src --go_out=build/gen --go_opt=paths=source_relative src/foo.proto src/bar/baz.proto
      protoc --proto_path=src --cpp_out=build/gen --go_opt=paths=source_relative src/foo.proto src/bar/baz.proto
      protoc --proto_path=src --java_out=build/gen --go_opt=paths=source_relative src/foo.proto src/bar/baz.proto
      3 commands generating 3 clients in 3 different languages. Voila.

  • @ramprasadv5170
    @ramprasadv5170 7 ปีที่แล้ว +1

    very useful

  • @hassanhashemi6478
    @hassanhashemi6478 5 ปีที่แล้ว +1

    Great talk, Thanks..

  • @rimbik1
    @rimbik1 2 ปีที่แล้ว

    goes ovre my head

  • @flamendless
    @flamendless 2 ปีที่แล้ว

    Inventor if ngrok is surprisingly young 🤔 i have this presumption that creators of such tech are ancient 😂

  • @alsteant
    @alsteant 6 ปีที่แล้ว +7

    Why not talk at least a little about GraphQL? 5:40

  • @MusobarMedia
    @MusobarMedia 7 ปีที่แล้ว +1

    very good presentation,,

    • @tonyww
      @tonyww 7 ปีที่แล้ว +2

      this presenter makes me feel he enjoys bragging about his knowledge and understanding of the topic without "educating" the audience how to use the technology.

  • @irrefl1672
    @irrefl1672 5 ปีที่แล้ว

    What is the difference in this kind of arquitecture than others.

  • @dravifo6762
    @dravifo6762 6 ปีที่แล้ว

    I can't make anything work. Visual Studio nuget doesn't work, and can't find protoc-gen-grpc. I just want to get SOMETHING - the most simple hello world working. And I don't want a small application that demonstrates every aspect of gRPC. The very most basic command line procedure to compile and use a service; and don't assume I know Anything because nothing I do know seems to be useful. I'm just going in circles with documentation that doesn't actually spell it out.

  • @ClearerThanMud
    @ClearerThanMud 6 ปีที่แล้ว +1

    Excellent talk -- thanks!
    Just one thought. At th-cam.com/video/RoXT_Rkg8LA/w-d-xo.htmlm30s he mentions the difficulty in modeling a "restart the machine" operation in REST; if you've been there, you might find this interesting:
    nicholassterling.wordpress.com/2014/02/16/rebootrestart-in-a-rest-api-using-put/

    • @Techtter
      @Techtter 4 ปีที่แล้ว

      gRPC is a game changer in microservices world, all the companies going to adapt it very soon. Its time to say good bye to REST-JSON. Instead go with gRPC-Protobuf.
      I made a complete gRPC Java Course, Check it out for FREE Complete Course on my channel. #techtter

  • @jeffg4686
    @jeffg4686 6 ปีที่แล้ว +4

    Why no RUST client?

  • @De4sher
    @De4sher 6 ปีที่แล้ว

    The python example at th-cam.com/video/RoXT_Rkg8LA/w-d-xo.htmlm58s can't really work. You can't use the keyword `from` as a parameter name.

    • @twilio
      @twilio  6 ปีที่แล้ว

      Correct, that should be `from_`.

    • @angry-qa
      @angry-qa 4 ปีที่แล้ว

      ​@@twilio And print is as of python 2.

  • @alfonsoperezzzz
    @alfonsoperezzzz 5 ปีที่แล้ว +16

    while it's cool and all that. I hate when people try to introduce you a new technology/lib/api/whatever trashing the old stuff

    • @sineltor
      @sineltor 5 ปีที่แล้ว +14

      The existence of the new thing is usually motivated by a desire to fix / avoid the problems of the old thing. Trashing the old thing explains the why - why gRPC when we already have REST? And it is a bid for resonance in the audience. "You find these parts of REST annoying??? Me too!!"

  • @123SriNat
    @123SriNat 5 ปีที่แล้ว +2

    I lost interest as the slides are not readable on my phone. But a good inteo though!

  • @learntocode5464
    @learntocode5464 3 ปีที่แล้ว

    Yes that's easy but cpu i7 utilization is 99% why?

  • @wi8shad0w
    @wi8shad0w 5 ปีที่แล้ว +2

    Zeromq ! .. anyone ???

    • @xuelvming
      @xuelvming 5 ปีที่แล้ว

      Tried Zeromq before, have to admit it's a wonderful tech. But way more complicated ,especially if you want to use some of its advanced ideas other than req and reply

  • @richardholguin3481
    @richardholguin3481 5 ปีที่แล้ว

    The microphone thumping!!

  • @massimo6767
    @massimo6767 2 ปีที่แล้ว

    Humour isn't meant to substitute valid arguments ;)
    Rest is Easy and rules the web, no reason to hype things that do not really solve the same kind of problems

  • @otockian
    @otockian 5 ปีที่แล้ว

    The number of times he said the word "like" and "right", omg....Otherwise great talk!

    • @twilio
      @twilio  5 ปีที่แล้ว +1

      Filler words and crutch phrases are difficult habits to break especially on stage! Thanks for watching.

  • @jkuang
    @jkuang 2 ปีที่แล้ว +1

    REST rules. Move on.

  • @danielliu5034
    @danielliu5034 3 ปีที่แล้ว +1

    Dry humour much?

  • @evans8245
    @evans8245 5 ปีที่แล้ว

    funny