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.

Jefferson Otoni Lima

September 25, 2019
Tweet

More Decks by Jefferson Otoni Lima

Other Decks in Technology

Transcript

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

    View Slide

  2. @jeffotoni
    gRPC
    01
    03
    04
    Go overview
    05
    rEST
    Dúvidas
    02
    RPC
    07
    Microservices & Monolitos
    Protobuffer Protocol 06

    View Slide

  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

    View Slide

  4. View Slide

  5. Microservices
    &
    Monolítico

    View Slide

  6. 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

    View Slide

  9. é compilada
    e produz um único artefato

    View Slide

  10. $ go build
    rEST mono

    View Slide

  11. nível de modularidade
    microservice

    View Slide

  12. $ go build
    rEST service1

    View Slide

  13. $ go build
    rEST service2

    View Slide

  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

    View Slide

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

    View Slide

  16. service3
    service5
    HTTP
    rEST
    rEST CLIENT

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  20. Service3
    RPC SERVER

    View Slide

  21. Service5
    RPC CLIENT

    View Slide

  22. 16 anos sem
    evolução do HTTP
    1991 1996 1999 2015
    HTTP 0.9 HTTP 1 HTTP 1.1 HTTP 2

    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. service3
    gRPC server

    View Slide

  32. service5
    gRPC client

    View Slide

  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

    View Slide

  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/

    View Slide