SlideShare une entreprise Scribd logo
1  sur  16
Télécharger pour lire hors ligne
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

Contenu connexe

Tendances

Concurrency in Golang
Concurrency in GolangConcurrency in Golang
Concurrency in GolangOliver N
 
Go Concurrency
Go ConcurrencyGo Concurrency
Go Concurrencyjgrahamc
 
Node.js Express
Node.js  ExpressNode.js  Express
Node.js ExpressEyal Vardi
 
HTTP2 and gRPC
HTTP2 and gRPCHTTP2 and gRPC
HTTP2 and gRPCGuo Jing
 
O que há de incrível sobre o Flutter
O que há de incrível sobre o FlutterO que há de incrível sobre o Flutter
O que há de incrível sobre o FlutterWiliam Buzatto
 
Introduction to Node.js
Introduction to Node.jsIntroduction to Node.js
Introduction to Node.jsRob O'Doherty
 
[MeetUp][1st] 오리뎅이의_쿠버네티스_네트워킹
[MeetUp][1st] 오리뎅이의_쿠버네티스_네트워킹[MeetUp][1st] 오리뎅이의_쿠버네티스_네트워킹
[MeetUp][1st] 오리뎅이의_쿠버네티스_네트워킹InfraEngineer
 
Spring boot introduction
Spring boot introductionSpring boot introduction
Spring boot introductionRasheed Waraich
 
Padrões essenciais de mensageria para integração de sistemas
Padrões essenciais de mensageria para integração de sistemasPadrões essenciais de mensageria para integração de sistemas
Padrões essenciais de mensageria para integração de sistemasHelder da Rocha
 
1.-Introduction-to-Dart.pdf
1.-Introduction-to-Dart.pdf1.-Introduction-to-Dart.pdf
1.-Introduction-to-Dart.pdfSamySiddhan
 
Introduction To RabbitMQ
Introduction To RabbitMQIntroduction To RabbitMQ
Introduction To RabbitMQKnoldus Inc.
 
Apresentação maven
Apresentação mavenApresentação maven
Apresentação mavenAndré Justi
 

Tendances (20)

Concurrency in Golang
Concurrency in GolangConcurrency in Golang
Concurrency in Golang
 
gRPC Overview
gRPC OverviewgRPC Overview
gRPC Overview
 
Flutter for tche linux
Flutter for tche linuxFlutter for tche linux
Flutter for tche linux
 
Go Concurrency
Go ConcurrencyGo Concurrency
Go Concurrency
 
Protocol Buffers
Protocol BuffersProtocol Buffers
Protocol Buffers
 
Node.js Express
Node.js  ExpressNode.js  Express
Node.js Express
 
Protocol Buffer.ppt
Protocol Buffer.pptProtocol Buffer.ppt
Protocol Buffer.ppt
 
GRPC.pptx
GRPC.pptxGRPC.pptx
GRPC.pptx
 
HTTP2 and gRPC
HTTP2 and gRPCHTTP2 and gRPC
HTTP2 and gRPC
 
O que há de incrível sobre o Flutter
O que há de incrível sobre o FlutterO que há de incrível sobre o Flutter
O que há de incrível sobre o Flutter
 
Introduction to Node.js
Introduction to Node.jsIntroduction to Node.js
Introduction to Node.js
 
[MeetUp][1st] 오리뎅이의_쿠버네티스_네트워킹
[MeetUp][1st] 오리뎅이의_쿠버네티스_네트워킹[MeetUp][1st] 오리뎅이의_쿠버네티스_네트워킹
[MeetUp][1st] 오리뎅이의_쿠버네티스_네트워킹
 
Flutter
FlutterFlutter
Flutter
 
Spring boot introduction
Spring boot introductionSpring boot introduction
Spring boot introduction
 
Padrões essenciais de mensageria para integração de sistemas
Padrões essenciais de mensageria para integração de sistemasPadrões essenciais de mensageria para integração de sistemas
Padrões essenciais de mensageria para integração de sistemas
 
NodeJS for Beginner
NodeJS for BeginnerNodeJS for Beginner
NodeJS for Beginner
 
Concurrency With Go
Concurrency With GoConcurrency With Go
Concurrency With Go
 
1.-Introduction-to-Dart.pdf
1.-Introduction-to-Dart.pdf1.-Introduction-to-Dart.pdf
1.-Introduction-to-Dart.pdf
 
Introduction To RabbitMQ
Introduction To RabbitMQIntroduction To RabbitMQ
Introduction To RabbitMQ
 
Apresentação maven
Apresentação mavenApresentação maven
Apresentação maven
 

Similaire à 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
 

Similaire à 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