Home » BR » Blog » Introdução ao gRPC
* Este post é o primeiro de uma série sobre gRPC.
Nos anos 90, quando comecei neste mundo, se você tivesse sorte e tivesse um computador, a única coisa que podia fazer era trabalhar localmente, jogando seus jogos instalados ou escrevendo seus documentos em Word Perfect.
Hoje em dia, o oposto é verdadeiro. Quase todos os dispositivos estão conectados a algum tipo de rede e todos os novos desenvolvimentos são feitos com foco na nuvem. Isto nos permite ter máquinas menos potentes e todo o poder computacional é transferido para aquelas mega máquinas que a Amazon, Google, Microsoft têm ... mas isso é outra história.
❝ Os novos desenvolvimentos são feitos com foco na nuvem. ❞
O software atual é composto de serviços que interagem com outros serviços para alcançar um fim mais ou menos complexo. Estes serviços são geralmente pequenos e com uma funcionalidade muito específica, por isso são chamados de microserviços.
A comunicação entre microserviços se dá através de redes de computadores e, como as pessoas, os processos também se comunicam através do envio de mensagens uns aos outros. O software baseado em microserviços é chamado de software distribuído. Tem, como tudo na vida, vantagens e desvantagens que eu lhes contarei.
Os processos podem trocar mensagens de forma síncrona ou assíncrona:
Comunicação Síncrona: o processo do cliente envia uma mensagem para o processo do servidor através da rede e espera por uma mensagem de resposta. Um exemplo de troca de informações síncrona na vida cotidiana seria uma conversa telefônica. Uma pessoa faz uma pergunta e a outra pessoa responde. Tudo isso é sincronizado e acontece em tempo real.
Comunicação Assíncrona: Os processos trocam mensagens assíncronas usando um intermediário conhecido como corretor de eventos. Um exemplo seria a troca de informações através do Whatsapp. Eu lhe envio uma mensagem e você responde quando pode.
Não há uma opção melhor do que a outra. Basta selecionar aquele que melhor se adapta ao seu caso de uso.
A maioria das aplicações hoje se comunica de forma sincronizada, enviando uma solicitação e aguardando uma resposta mais ou menos imediata. Os microserviços são construídos como serviços RESTful, que implementam recursos que podem ser acessados e mudam seu estado através de chamadas de rede e usando o protocolo HTTP/2. Estes serviços são chamados APIs (Application Programming Interface).
Para a maioria dos casos de uso, os serviços RESTful são bastante incômodos, ineficientes e propensos a erros. Muitas vezes você precisará que a comunicação entre seus processos seja altamente escalável e frouxamente acoplada, ou seja, mais eficiente que os serviços RESTful. É aqui que entra o gRPC, que nada mais é do que um método de comunicação inter-processo para construir aplicações distribuídas e microserviços.
O Google desenvolveu o gRPC e você pode pensar que o g no gRPC se refere ao Google, mas o significado do g mudou a cada lançamento. A versão no momento de escrever é 1,41 e nesta versão o g em gRPC significa "bode". Você pode encontrar aqui todos os significados do g para as diferentes versões.
No próximo post eu explicarei o que é gRPC e darei um exemplo.
Se você quiser saber mais sobre o gRPC, aqui estão alguns livros em que você pode estar interessado: