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 full-size slide

  2. @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 full-size slide

  3. @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 full-size slide

  4. @jeffotoni
    HTTP
    protocolo
    TCP
    protocolo
    UDP
    protoco
    protocolos

    View full-size slide

  5. 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 full-size slide

  6. (Representational State Transfer)
    rEST

    View full-size slide

  7. /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 full-size slide

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

    View full-size slide

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

    View full-size slide

  10. service3
    service5
    HTTP
    rEST
    rEST CLIENT

    View full-size slide

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

    View full-size slide

  12. (Remote Procedure Call)
    RPC server

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  17. (Remote Procedure Call)
    RPC client

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  20. nível de modularidade
    microservice

    View full-size slide

  21. Protocol Buffers
    protobuf-compiler

    View full-size slide

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

    View full-size slide

  23. Go Unmarshal

    View full-size slide

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

    View full-size slide

  25. 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 full-size slide

  26. 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 full-size slide