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

gRPC e Go Porque e Quando usar

gRPC e Go Porque e Quando usar

Olá pessoal, o conteúdo que apresentar é sobre um tema que é sempre discutido por toda comunidade e muito utilizado em diversos cenários como comunicações entre services que precisamos ter um menor Throughput na rede e desempenho. Antes vamos da uma passada no http, http2, rEST e RPC rapidamente só para criamos uma linha do tempo e raciocínio do porque do gRPC.
Vamos abordar algumas vantagens de desvantagens do gRPC e vamos apresentar alguns códigos exemplos de como funcionar na prática o gRPC, vou apresentar algumas funções deste framework fantástico criado pelo google. E é claro não poderia deixar de fora nosso o protobuf que é o pontapé de tudo para aprendermos gRPC e aplicarmos no dia a dia.
Estou montando os slides para 20 a 25 min de palestra e um mão na massa só para exemplificar na prática o funcionamento do gRPC e é claro apresentar as vantagens de usar Go e gRPC.
Vamos tentar fazer uma apresentação bem divertida e animada e com bastante informações legais.

02b3f64a1d67d061c3be08729322a90b?s=128

Jefferson Otoni Lima

June 26, 2020
Tweet

Transcript

  1. http://s3wf.com @jeffotoni TDC ONLINE 2020 Florianópolis 26/06 Jefferson Otoni Go

    e gRPC Quando e porque usa-los
  2. None
  3. @jeffotoni Comunidade Telegram https://t.me/go_br https://t.me/go_bh https://t.me/golangcwb Slack https://gophers.slack.com (members >~45k)

    GopherCon Brasil 2020 https://2020.gopherconbr.org Wiki Conferencias https://github.com/golang/go/wiki/Conferences Meetup https://www.meetup.com/go-belo-horizonte https://www.meetup.com/pt-BR/golangbr https://www.meetup.com/pt-BR/Women-Who-Go-Sampa https://www.meetup.com/pt-BR/Golang-Campinas/ https://www.meetup.com/pt-BR/golang-poa/ https://www.meetup.com/pt-BR/GolangCWB/
  4. @jeffotoni https://golang.org https://golang.org/doc/effective_go.html https://golang.org/ref/spec https://golang.org/doc https://tour.golang.org/welcome/1

  5. @jeffotoni HTTP protocolo TCP protocolo UDP protoco protocolos

  6. serviços/protocolos @jeffotoni RPC TCP/UDP/http REST http SOAP http xml-RPC http

    RMI tcp Representational State Transfer Remote Procedure Call Simple Object Access Protocol Remote Method Invocation webSocket http/tcp comunicação bidirecional por canais full-duplex e usa o schema: ws:// ou wss://
  7. (Representational State Transfer) rEST

  8. /auth POST /user GET /user/{uuid} GET /user/{uuid} DELETE /user/{uuid} PUT

    1M requests/s 50k requests/s 100k requests/s 60k requests/s 1k requests/s service 1 service 2 service 3 service 4 service 5
  9. @jeffotoni Api rEST em Go - Endpoints - Middleware -

    Instrumentar - Dockerfile - Deploy
  10. /user/{uuid} GET /user/{uuid} PUT 100k requests/s 1k requests/s service 3

    service 5 HTTP + JSON
  11. service3 service5 HTTP rEST rEST CLIENT

  12. RPC (Remote Procedure Call) procedimentos remotos como se fossem chamadas

    locais
  13. (Remote Procedure Call) RPC server

  14. /user/{uuid} GET /user/{uuid} PUT 100k requests/s 1k requests/s service 3

    service 5 RPC RPC SERVER RPC CLIENT
  15. RPC server Go - Struct Args - Struct User -

    Metodo Get @jeffotoni
  16. RPC server Go - Register - Metodos - Instrumentar -

    Dockerfile - Deploy @jeffotoni
  17. RPC server Go - Register - Metodos - Instrumentar @jeffotoni

  18. (Remote Procedure Call) RPC client

  19. RPC client Go - Conexao - Args/param - Reply/Retorno -

    Dockerfile - Deploy @jeffotoni
  20. Service3 Service5 TCP RPC RPC SERVER HTTP rEST RPC CLIENT

  21. nível de modularidade microservice

  22. None
  23. gRPC

  24. Protocol Buffers protobuf-compiler

  25. Protocol Buffers $ protoc --go_out=. produto.proto

  26. None
  27. Metodos

  28. Go Marshal

  29. Go Unmarshal

  30. /user/{uuid} GET /user/{uuid} PUT 100k requests/s 1k requests/s service 3

    service 5 gRPC gRPC SERVER gRPC CLIENT
  31. referências https://golang.org https://grpc.io/docs/tutorials/basic/go https://github.com/grpc/grpc-go/tree/master/examples https://developers.google.com/protocol-buffers/docs/gotutorial https://github.com/uw-labs/bloomrpc (curl ou posltman para

    grpc) https://itnext.io/learning-go-mongodb-crud-with-grpc-98e425aeaae6 https://encurtador.com.br/fHKSU https://encurtador.com.br/eqvJ2 https://gokit.io/examples/ links
  32. Thanks := &Obrigado{...} Obrigado... github.com/jeffotoni instagram.com/jeffotoni https://t.me/devopsbh https://t.me/go_br https://t.me/awsbrasil linkedin.com/in/jeffotoni/