Introdução
Muitos desenvolvedores estão comentando e utilizando gRPC no seu dia dia, mas o que ele realmente ele é? e quais as vantagens de se utilizar ele?
Em um breve resumo nós temos:
O gRPC foi desenvolvido pelo Google com foco em ser um serviço de alto desempenho para atender chamadas RPC (Remote Call Procedures) ou no português “Chamada de protocolo Remoto”. Ele é open source e pode ser executado em qualquer ambiente, independentemente de linguagem de programação ou plataforma. O gRPC tem suporte a load balance, tracing, health-check e autenticação.
Mas o que é exatamente o RPC (Remote Call Procedures)?
O RPC (Remote Procedure Call) é uma tecnologia para desenvolvimento de programas distribuídos client/server de comunicação de alto nível no sistema operacional. (deinfo.uepg.br)
O gRPC trabalha com Protobuf (Protocol buffers), método criado e utilizado pelo Google para serializar dados estruturados, tornando a comunicação entre serviços mais eficiente. Ele é uma forma simples e agnóstica com relação a linguagem de se definir uma estrutura de dados como XML, só que mais rápido e mais simples.
Agora falando sobre os benefícios de se utilizar o gRPC:
- A estrutura RPC é mais leve e de alto desempenho
- Ele esta disponível para várias linguagens de programação
- Tem suporte a chamada bidirecional de streaming entre client/server
- Com a serialização do Protobuf, nós temos uma redução no trafego de dados na rede
Agora para ficar mais claro, vamos criar um exemplo prático de gRPC utilizando o Node.js
Exemplo prático
Para que você possa ter uma visão geral sobre esse assunto eu irei criar dois exemplos, um demonstrando o gRPC rodando no lado do servidor e um outro no lado do cliente.
O primeiro passo será a criação de um novo projeto. Para isso, abra um terminal no seu computador, escolha um diretório e execute o comando abaixo:
npm init -y
Esse comando deve criar um arquivo chamado package.json com as informações iniciais do seu projeto.
Com essa etapa OK e ainda no seu terminal, execute o comando abaixo para importar a biblioteca grpc para o seu projeto:
npm install --save grpc
Conforme comentado na introdução desse artigo, para trabalhar com gRPC nós precisamos criar os nossos arquivos Protobuf . Crie um novo arquivo chamado notes.proto na raiz do seu projeto e atualize ele com o seguinte trecho de código:
syntax = "proto3"; service NoteService { rpc List (Empty) returns (NoteList) {} } message Empty {} message Note { string id = 1; string title = 2; string content = 3; } message NoteList { repeated Note notes = 1; }
Analisando o trecho de código acima nós temos:
- syntax: versão do protocol buffer language que nós estamos utilizando
- note: model com 3 propriedades (id,title e content). Obs.: Os valores 1,2 e 3 são os indixes de cada propriedade
- NoteService: método aceitando Empty em caso de mensagem vazia e retornando NoteList
- NoteList: mensagem que sera retornada. No nosso exemplo deve retornar um array de note
Com o arquivo .proto criado, vamos criar o arquivo de configuração do nosso server. Para isso, crie um novo arquivo na raiz do seu projeto chamado index.js e atualize ele com o trecho de código abaixo: