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

Construindo APIs RPC e gRPC

Construindo APIs RPC e gRPC

Uma simples apresentação de como utilizar rEST, RPC e gRPC usando Go.
Apresente um um problema em um cenário e propomos uma solução usando as tecnologias RPC e gRPC.

Explicamos como funciona o protobuffers criado pelo google e como ele é utilizado em Go.

Todos os exemplos são feito e explicados utilizando a linguagem Go.

02b3f64a1d67d061c3be08729322a90b?s=128

Jefferson Otoni Lima

September 25, 2019
Tweet

Transcript

  1. http://s3wf.com @jeffotoni 2019 BELO HORIZONTE 25/09 Jefferson Otoni RPC e

    gRPC APIs
  2. @jeffotoni gRPC 01 03 04 Go overview 05 rEST Dúvidas

    02 RPC 07 Microservices & Monolitos Protobuffer Protocol 06
  3. - Compilada e estática - Gc (Garbage Collector) - Paradigma

    Concorrente - Tipagem estática - Semântica e Sintaxe é clara - É de uso Geral - Windows, Linux, Mac e FreeBSD Go Overview
  4. None
  5. Microservices & Monolítico

  6. None
  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
  9. é compilada e produz um único artefato

  10. $ go build rEST mono

  11. nível de modularidade microservice

  12. $ go build rEST service1

  13. $ go build rEST service2

  14. /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
  15. /user/{uuid} GET /user/{uuid} PUT 100k requests/s 1k requests/s service 3

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

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

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

    service 5 RPC RPC SERVER RPC CLIENT
  19. Service3 Service5 TCP RPC RPC SERVER HTTP rEST RPC CLIENT

  20. Service3 RPC SERVER

  21. Service5 RPC CLIENT

  22. 16 anos sem evolução do HTTP 1991 1996 1999 2015

    HTTP 0.9 HTTP 1 HTTP 1.1 HTTP 2
  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. service3 gRPC server

  32. service5 gRPC client

  33. 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
  34. Thanks := &Origado{...} Obrigado... github.com/jeffotoni instagram.com/jeffotoni https://t.me/devopsbh https://t.me/go_br https://t.me/awsbrasil linkedin.com/in/jeffotoni/