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.

Jefferson Otoni Lima

June 26, 2020
Tweet

More Decks by Jefferson Otoni Lima

Other Decks in Programming

Transcript

  1. http://s3wf.com
    @jeffotoni
    TDC ONLINE 2020 Florianópolis 26/06
    Jefferson Otoni
    Go e gRPC
    Quando e porque usa-los

    View Slide

  2. View Slide

  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/

    View Slide

  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

    View Slide

  5. @jeffotoni
    HTTP
    protocolo
    TCP
    protocolo
    UDP
    protoco
    protocolos

    View Slide

  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://

    View Slide

  7. (Representational State Transfer)
    rEST

    View Slide

  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

    View Slide

  9. @jeffotoni
    Api rEST em Go
    - Endpoints
    - Middleware
    - Instrumentar
    - Dockerfile
    - Deploy

    View Slide

  10. /user/{uuid}
    GET
    /user/{uuid}
    PUT
    100k requests/s
    1k requests/s
    service 3
    service 5
    HTTP + JSON

    View Slide

  11. service3
    service5
    HTTP
    rEST
    rEST CLIENT

    View Slide

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

    View Slide

  13. (Remote Procedure Call)
    RPC server

    View Slide

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

    View Slide

  15. RPC server Go
    - Struct Args
    - Struct User
    - Metodo Get
    @jeffotoni

    View Slide

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

    View Slide

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

    View Slide

  18. (Remote Procedure Call)
    RPC client

    View Slide

  19. RPC client Go
    - Conexao
    - Args/param
    - Reply/Retorno
    - Dockerfile
    - Deploy
    @jeffotoni

    View Slide

  20. Service3
    Service5
    TCP
    RPC
    RPC SERVER
    HTTP
    rEST
    RPC CLIENT

    View Slide

  21. nível de modularidade
    microservice

    View Slide

  22. View Slide

  23. gRPC

    View Slide

  24. Protocol Buffers
    protobuf-compiler

    View Slide

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

    View Slide

  26. View Slide

  27. Metodos

    View Slide

  28. Go Marshal

    View Slide

  29. Go Unmarshal

    View Slide

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

    View Slide

  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

    View Slide

  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/

    View Slide