SlideShare ist ein Scribd-Unternehmen logo
1 von 16
Downloaden Sie, um offline zu lesen
Matheus Donizete - Pedreiro de Software
Uma breve introdução
Agenda
1. O que é gRPC
2. Protocol Buffers
3. Servindo Aplicações
4. Hora do código
5. Considerações
O que é gRPC
● RPC - Remote Procedure Call
● Framework
● Alta performance
● Streaming bi-direcional de dados
● Autenticação HTTP/2 based
● Criado pelo Google
● Multi-linguagem
O que é gRPC
Padrão RPC
● Técnica de processamento distribuído
● Execução síncrona
● Conjunto de problemas relacionados à
execução e sincronismo
O que é gRPC:
Funcionamento
● Um serviço rodando isoladamente
● Padrão Request/Response
● Conteúdo binário
● Chamadas de funções
● Protocol Buffers
O que é gRPC
● Utiliza das Vantagens do HTTP/2
● Multiplexação de requisições
● Binary framing
● Streaming de dados
● Consome menos recursos
● Excelente em termos de mensagens estruturadas
O que é gRPC
HTTP/2
● Evolução do protocolo HTTP 1.1
● HTTPS only
● HPACK - Compressão de cabeçalhos
● Multiplexação de requisições
● Priorização de requisições
Protocol Buffers
● Formato do Google para serializar dados estruturados
● Definição do Serviço
● Arquivos .proto
● Compilador protoc
● Versionado
● Compatível com diversas linguagens
Protocol Buffers:
Ciclo de vida de utilização
Protocol Buffers:
Anatomia de um .proto
● Definição do contrato
● Cada mensagem recebe um id
único
● Muito simples de se utilizar
● Tipos de dados
Tipo do campo Nome do campo
ID
Nome do
Objeto
Versão do
compilador
Protocol Buffers:
Anatomia de um .proto
● Definição do Serviço
● Bi-direcional uma entrada - uma saída
Hora do
Código!
Considerações
● Problema: como gerenciar os .proto
● Muito simples de se utilizar
● Alta curva de aprendizado
● HTTP/2 <3
● Geração de código
● Compilador robusto, com variedade de plugins
● Artigo da apresentação
● Repositório com exemplos
Dúvidas
Referências
● Core concepts, architecture and lifecycle | gRPC
● Overview | Protocol Buffers | Google Developers
● Generating and packaging code from protocol buffers for gRPC
Services | Bugsnag Blog
● Improving Microservices Communication with gRPC | CrowdStrike
● How We Build gRPC Services At Namely | by Bobby Tables |
Namely Labs | Medium
● grpc/server-reflection.md at master

Weitere ähnliche Inhalte

Was ist angesagt?

Inter-Process Communication in Microservices using gRPC
Inter-Process Communication in Microservices using gRPCInter-Process Communication in Microservices using gRPC
Inter-Process Communication in Microservices using gRPCShiju Varghese
 
REST vs gRPC: Battle of API's
REST vs gRPC: Battle of API'sREST vs gRPC: Battle of API's
REST vs gRPC: Battle of API'sLuram Archanjo
 
HTTP2 and gRPC
HTTP2 and gRPCHTTP2 and gRPC
HTTP2 and gRPCGuo Jing
 
Ceph scale testing with 10 Billion Objects
Ceph scale testing with 10 Billion ObjectsCeph scale testing with 10 Billion Objects
Ceph scale testing with 10 Billion ObjectsKaran Singh
 
OpenAPI and gRPC Side by-Side
OpenAPI and gRPC Side by-SideOpenAPI and gRPC Side by-Side
OpenAPI and gRPC Side by-SideTim Burks
 
Orquestração de containers com Rancher
Orquestração de containers com RancherOrquestração de containers com Rancher
Orquestração de containers com RancherAlex Ishida
 
HTML5 Real Time and WebSocket Code Lab (SFHTML5, GTUGSF)
HTML5 Real Time and WebSocket Code Lab (SFHTML5, GTUGSF)HTML5 Real Time and WebSocket Code Lab (SFHTML5, GTUGSF)
HTML5 Real Time and WebSocket Code Lab (SFHTML5, GTUGSF)Peter Lubbers
 
Introduction to AMQP Messaging with RabbitMQ
Introduction to AMQP Messaging with RabbitMQIntroduction to AMQP Messaging with RabbitMQ
Introduction to AMQP Messaging with RabbitMQDmitriy Samovskiy
 
Go micro framework to build microservices
Go micro framework to build microservicesGo micro framework to build microservices
Go micro framework to build microservicesTechMaster Vietnam
 
Enteprise Integration Patterns
Enteprise Integration PatternsEnteprise Integration Patterns
Enteprise Integration PatternsAlessandro Kieras
 
Node.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo BranasNode.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo BranasRodrigo Branas
 

Was ist angesagt? (20)

Message Broker System and RabbitMQ
Message Broker System and RabbitMQMessage Broker System and RabbitMQ
Message Broker System and RabbitMQ
 
Introduction to gRPC
Introduction to gRPCIntroduction to gRPC
Introduction to gRPC
 
gRPC
gRPC gRPC
gRPC
 
Inter-Process Communication in Microservices using gRPC
Inter-Process Communication in Microservices using gRPCInter-Process Communication in Microservices using gRPC
Inter-Process Communication in Microservices using gRPC
 
REST vs gRPC: Battle of API's
REST vs gRPC: Battle of API'sREST vs gRPC: Battle of API's
REST vs gRPC: Battle of API's
 
Building microservices with grpc
Building microservices with grpcBuilding microservices with grpc
Building microservices with grpc
 
HTTP2 and gRPC
HTTP2 and gRPCHTTP2 and gRPC
HTTP2 and gRPC
 
RabbitMQ
RabbitMQRabbitMQ
RabbitMQ
 
Prometheus 101
Prometheus 101Prometheus 101
Prometheus 101
 
Ceph scale testing with 10 Billion Objects
Ceph scale testing with 10 Billion ObjectsCeph scale testing with 10 Billion Objects
Ceph scale testing with 10 Billion Objects
 
OpenAPI and gRPC Side by-Side
OpenAPI and gRPC Side by-SideOpenAPI and gRPC Side by-Side
OpenAPI and gRPC Side by-Side
 
Orquestração de containers com Rancher
Orquestração de containers com RancherOrquestração de containers com Rancher
Orquestração de containers com Rancher
 
HTML5 Real Time and WebSocket Code Lab (SFHTML5, GTUGSF)
HTML5 Real Time and WebSocket Code Lab (SFHTML5, GTUGSF)HTML5 Real Time and WebSocket Code Lab (SFHTML5, GTUGSF)
HTML5 Real Time and WebSocket Code Lab (SFHTML5, GTUGSF)
 
Introduction to AMQP Messaging with RabbitMQ
Introduction to AMQP Messaging with RabbitMQIntroduction to AMQP Messaging with RabbitMQ
Introduction to AMQP Messaging with RabbitMQ
 
Go micro framework to build microservices
Go micro framework to build microservicesGo micro framework to build microservices
Go micro framework to build microservices
 
RabbitMQ
RabbitMQ RabbitMQ
RabbitMQ
 
Enteprise Integration Patterns
Enteprise Integration PatternsEnteprise Integration Patterns
Enteprise Integration Patterns
 
LMAX Architecture
LMAX ArchitectureLMAX Architecture
LMAX Architecture
 
Node.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo BranasNode.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo Branas
 
Integração Contínua
Integração ContínuaIntegração Contínua
Integração Contínua
 

Ähnlich wie Introdução ao gRPC e Protocol Buffers

gRPC: Por que você ainda usa REST?
gRPC: Por que você ainda usa REST?gRPC: Por que você ainda usa REST?
gRPC: Por que você ainda usa REST?Yago Tomé
 
Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?Marcelo Dieder
 
Introdução ao WSO2 API Microgateway 3.1
Introdução ao WSO2 API Microgateway 3.1Introdução ao WSO2 API Microgateway 3.1
Introdução ao WSO2 API Microgateway 3.1WSO2
 
O que não fazer ao atualizar para o PHP 7 @ TDC SP 2018
O que não fazer ao atualizar para o PHP 7 @ TDC SP 2018 O que não fazer ao atualizar para o PHP 7 @ TDC SP 2018
O que não fazer ao atualizar para o PHP 7 @ TDC SP 2018 Gabriel Machado
 
Como definir a quantidade de workers para sua aplicação
Como definir a quantidade de workers para sua aplicaçãoComo definir a quantidade de workers para sua aplicação
Como definir a quantidade de workers para sua aplicaçãoWeverton Timoteo
 
Restful APIs com Spring 3
Restful APIs com Spring 3Restful APIs com Spring 3
Restful APIs com Spring 3Alex Miranda
 
Boas práticas no desenvolvimento de uma RESTful API
Boas práticas no desenvolvimento de uma RESTful APIBoas práticas no desenvolvimento de uma RESTful API
Boas práticas no desenvolvimento de uma RESTful APIFernando Camargo
 
Boas práticas no desenvolvimento de uma RESTful API
Boas práticas no desenvolvimento de uma RESTful APIBoas práticas no desenvolvimento de uma RESTful API
Boas práticas no desenvolvimento de uma RESTful APIFernando Camargo
 
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...Tchelinux
 
5 Tecnologias que todo Desenvolvedor Web deveria conhecer - Developers-BR - O...
5 Tecnologias que todo Desenvolvedor Web deveria conhecer - Developers-BR - O...5 Tecnologias que todo Desenvolvedor Web deveria conhecer - Developers-BR - O...
5 Tecnologias que todo Desenvolvedor Web deveria conhecer - Developers-BR - O...Renato Groff
 
Python Eve - APIs RESTful Profissionais em poucas linhas
Python Eve - APIs RESTful Profissionais em poucas linhasPython Eve - APIs RESTful Profissionais em poucas linhas
Python Eve - APIs RESTful Profissionais em poucas linhasRuda Filgueiras
 
TDC2018SP | Trilha Serveless - Pra que SERVErless?
TDC2018SP | Trilha Serveless - Pra que SERVErless?TDC2018SP | Trilha Serveless - Pra que SERVErless?
TDC2018SP | Trilha Serveless - Pra que SERVErless?tdc-globalcode
 
Aula05 camada de aplicação
Aula05 camada de aplicaçãoAula05 camada de aplicação
Aula05 camada de aplicaçãoTiago Tda
 
Kubernetes no Governo Federal - Kubernetes Meetup #3
Kubernetes no Governo Federal - Kubernetes Meetup #3Kubernetes no Governo Federal - Kubernetes Meetup #3
Kubernetes no Governo Federal - Kubernetes Meetup #3Ricardo Katz
 
TDC2018SP | Trilha PHP Essencial - O que nao fazer ao atualizar para o PHP 7
TDC2018SP | Trilha PHP Essencial - O que nao fazer ao atualizar para o PHP 7TDC2018SP | Trilha PHP Essencial - O que nao fazer ao atualizar para o PHP 7
TDC2018SP | Trilha PHP Essencial - O que nao fazer ao atualizar para o PHP 7tdc-globalcode
 
Camada de Transporte - TADS/REC 2014/2
Camada de Transporte - TADS/REC 2014/2Camada de Transporte - TADS/REC 2014/2
Camada de Transporte - TADS/REC 2014/2Caio Miranda
 
Apresentacao gt cnc-workshop_iniciliazicao_fase2
Apresentacao gt cnc-workshop_iniciliazicao_fase2Apresentacao gt cnc-workshop_iniciliazicao_fase2
Apresentacao gt cnc-workshop_iniciliazicao_fase2Lucas Silva
 

Ähnlich wie Introdução ao gRPC e Protocol Buffers (20)

HTTP 2
HTTP 2HTTP 2
HTTP 2
 
gRPC: Por que você ainda usa REST?
gRPC: Por que você ainda usa REST?gRPC: Por que você ainda usa REST?
gRPC: Por que você ainda usa REST?
 
Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?
 
Cap 02.pdf
Cap 02.pdfCap 02.pdf
Cap 02.pdf
 
Introdução ao WSO2 API Microgateway 3.1
Introdução ao WSO2 API Microgateway 3.1Introdução ao WSO2 API Microgateway 3.1
Introdução ao WSO2 API Microgateway 3.1
 
O que não fazer ao atualizar para o PHP 7 @ TDC SP 2018
O que não fazer ao atualizar para o PHP 7 @ TDC SP 2018 O que não fazer ao atualizar para o PHP 7 @ TDC SP 2018
O que não fazer ao atualizar para o PHP 7 @ TDC SP 2018
 
Como definir a quantidade de workers para sua aplicação
Como definir a quantidade de workers para sua aplicaçãoComo definir a quantidade de workers para sua aplicação
Como definir a quantidade de workers para sua aplicação
 
Restful APIs com Spring 3
Restful APIs com Spring 3Restful APIs com Spring 3
Restful APIs com Spring 3
 
HTTP/2
HTTP/2HTTP/2
HTTP/2
 
Boas práticas no desenvolvimento de uma RESTful API
Boas práticas no desenvolvimento de uma RESTful APIBoas práticas no desenvolvimento de uma RESTful API
Boas práticas no desenvolvimento de uma RESTful API
 
Boas práticas no desenvolvimento de uma RESTful API
Boas práticas no desenvolvimento de uma RESTful APIBoas práticas no desenvolvimento de uma RESTful API
Boas práticas no desenvolvimento de uma RESTful API
 
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
 
5 Tecnologias que todo Desenvolvedor Web deveria conhecer - Developers-BR - O...
5 Tecnologias que todo Desenvolvedor Web deveria conhecer - Developers-BR - O...5 Tecnologias que todo Desenvolvedor Web deveria conhecer - Developers-BR - O...
5 Tecnologias que todo Desenvolvedor Web deveria conhecer - Developers-BR - O...
 
Python Eve - APIs RESTful Profissionais em poucas linhas
Python Eve - APIs RESTful Profissionais em poucas linhasPython Eve - APIs RESTful Profissionais em poucas linhas
Python Eve - APIs RESTful Profissionais em poucas linhas
 
TDC2018SP | Trilha Serveless - Pra que SERVErless?
TDC2018SP | Trilha Serveless - Pra que SERVErless?TDC2018SP | Trilha Serveless - Pra que SERVErless?
TDC2018SP | Trilha Serveless - Pra que SERVErless?
 
Aula05 camada de aplicação
Aula05 camada de aplicaçãoAula05 camada de aplicação
Aula05 camada de aplicação
 
Kubernetes no Governo Federal - Kubernetes Meetup #3
Kubernetes no Governo Federal - Kubernetes Meetup #3Kubernetes no Governo Federal - Kubernetes Meetup #3
Kubernetes no Governo Federal - Kubernetes Meetup #3
 
TDC2018SP | Trilha PHP Essencial - O que nao fazer ao atualizar para o PHP 7
TDC2018SP | Trilha PHP Essencial - O que nao fazer ao atualizar para o PHP 7TDC2018SP | Trilha PHP Essencial - O que nao fazer ao atualizar para o PHP 7
TDC2018SP | Trilha PHP Essencial - O que nao fazer ao atualizar para o PHP 7
 
Camada de Transporte - TADS/REC 2014/2
Camada de Transporte - TADS/REC 2014/2Camada de Transporte - TADS/REC 2014/2
Camada de Transporte - TADS/REC 2014/2
 
Apresentacao gt cnc-workshop_iniciliazicao_fase2
Apresentacao gt cnc-workshop_iniciliazicao_fase2Apresentacao gt cnc-workshop_iniciliazicao_fase2
Apresentacao gt cnc-workshop_iniciliazicao_fase2
 

Introdução ao gRPC e Protocol Buffers

  • 1. Matheus Donizete - Pedreiro de Software Uma breve introdução
  • 2. Agenda 1. O que é gRPC 2. Protocol Buffers 3. Servindo Aplicações 4. Hora do código 5. Considerações
  • 3. O que é gRPC ● RPC - Remote Procedure Call ● Framework ● Alta performance ● Streaming bi-direcional de dados ● Autenticação HTTP/2 based ● Criado pelo Google ● Multi-linguagem
  • 4. O que é gRPC Padrão RPC ● Técnica de processamento distribuído ● Execução síncrona ● Conjunto de problemas relacionados à execução e sincronismo
  • 5. O que é gRPC: Funcionamento ● Um serviço rodando isoladamente ● Padrão Request/Response ● Conteúdo binário ● Chamadas de funções ● Protocol Buffers
  • 6. O que é gRPC ● Utiliza das Vantagens do HTTP/2 ● Multiplexação de requisições ● Binary framing ● Streaming de dados ● Consome menos recursos ● Excelente em termos de mensagens estruturadas
  • 7.
  • 8. O que é gRPC HTTP/2 ● Evolução do protocolo HTTP 1.1 ● HTTPS only ● HPACK - Compressão de cabeçalhos ● Multiplexação de requisições ● Priorização de requisições
  • 9. Protocol Buffers ● Formato do Google para serializar dados estruturados ● Definição do Serviço ● Arquivos .proto ● Compilador protoc ● Versionado ● Compatível com diversas linguagens
  • 10. Protocol Buffers: Ciclo de vida de utilização
  • 11. Protocol Buffers: Anatomia de um .proto ● Definição do contrato ● Cada mensagem recebe um id único ● Muito simples de se utilizar ● Tipos de dados Tipo do campo Nome do campo ID Nome do Objeto Versão do compilador
  • 12. Protocol Buffers: Anatomia de um .proto ● Definição do Serviço ● Bi-direcional uma entrada - uma saída
  • 14. Considerações ● Problema: como gerenciar os .proto ● Muito simples de se utilizar ● Alta curva de aprendizado ● HTTP/2 <3 ● Geração de código ● Compilador robusto, com variedade de plugins ● Artigo da apresentação ● Repositório com exemplos
  • 16. Referências ● Core concepts, architecture and lifecycle | gRPC ● Overview | Protocol Buffers | Google Developers ● Generating and packaging code from protocol buffers for gRPC Services | Bugsnag Blog ● Improving Microservices Communication with gRPC | CrowdStrike ● How We Build gRPC Services At Namely | by Bobby Tables | Namely Labs | Medium ● grpc/server-reflection.md at master