APIs REST ou gRPC? Eis, uma difícil escolha até mesmo para os experts!

Em Redes Definidas por Softwares (SDN), toda uma nova filosofia de trabalho é estabelecida, além de técnicas, metodologias e recursos, os quais são designados para que os especialistas em TI possam implantar, administrar e gerenciar uma infraestrutura de redes moderna. Neste cenário, uma série de novas tecnologias, protocolos e serviços entram em cena, para promover todos processos relacionados a automação, a orquestração e o provisionamento. Tais transformações são tão profundas, que exigem dos profissionais toda uma nova base de competências e habilidades que serão essenciais, para as suas atividades…

“You will often encounter REST and gRPC when dealing with APIs. Even though Rest has dominated this field for many years, gRPC is proving to be a worthy competitor. Rest and gPRC are two different ways that you can design an API. APIs act as a communication bridge between services that may represent complex systems residing in different computers or written in different languages. This article will introduce both Rest and gRPC, share their similarities, differences, and where to use each.”

— by GeekFlare.

Para variar, geralmente muitas destas tecnologias são equivalentes, embora apresentem pequenas características ou particularidades que as diferenciam uma das outras. Um belo exemplo? As plataformas para a gestão de configuração dos ativos de redes, como o Ansible, o Chef, o Puppet e o SaltStack! Estas por sua vez, precisam lidar com APIs para a possibilitar a troca de informações entre ferramentas e dispositivos, como a REST e o gRPC. Por fim, eles também precisam lidar com diferentes formatos de dados, que por sua vez podem ser representados através do JSON, do XML, do YAML. Então, quais destas eles devem escolher?

Titus Kamunya (editor da GeekFlare) atualizou um bom artigo sobre as APIs REST e gRPC, o qual traz um resumo técnico relacionado as propriedades de ambas as tecnologias, além de uma tabela comparativa que ilustra as suas similaridades e diferenças. Embora elas também sejam concebidas para o mesmo propósito (a troca de informações entre diferentes entidades) e por isto, possuam similares em muitos aspectos, na prática os seus diferentes mecanismos de funcionamento certamente irão influenciar muito na suas adoções, de acordo com os cenários.

A API REST (Representational State Transfer) é a mais antiga das duas, sendo “uma abordagem de software arquitetural que dita regras sobre como os componentes de software trocam dados”, baseado no protocolo de comunicação WEB HTTP. Já a API gRPC (Google Remote Procedure Calls) é uma criação mais recente, sendo “uma estrutura de chamada de procedimento remoto (RPC) que pode ser executada em qualquer ambiente”, designada para conectar serviços com eficiência em servidores e datacenters. Ambas são flexíveis e escaláveis, além de serem suportadas por diferentes tecnologias, plataformas e linguagens de programação.

De um lado, temos uma API dotada de uma arquitetura orientada a determinados princípios (interface uniforme, sem estado, por camadas, cacheável e sob demanda), sendo mais recomendada para o uso geral em aplicações & serviços WEB; de outro, uma API baseada em um framework RPC de código-aberto, designado para oferecer alta performance e eficiência no estabelecimento de conexões, mas com uma maior ênfase na comunicação de aplicações em diferentes equipamentos. Por qual delas, optar? Pois apesar delas terem sido concebidas para o mesmo propósito, a maneira que formatam e trafegam os dados, estabelecem a comunicação clientes/servidor e mantém a compatibilidade, são relativamente distintas.

Eis um artigo, que até poderia render bem mais capítulos e conteúdos… &;-D