Gerenciamento de APIs
gRPC e REST: entendendo gRPC, OpenAPI e REST no design de APIs e quando usar cada um
- Modelos de design de API: no design de APIs, são usados principalmente dois modelos: RPC e REST. A maioria das APIs modernas é implementada com base no protocolo HTTP.
- gRPC: tecnologia de implementação de APIs RPC que usa HTTP 2.0 como protocolo de transporte. Google e outras empresas usam bastante APIs que combinam as ideias de RPC e HTTP.
- Três principais formas de usar HTTP:
- REST: o cliente usa diretamente as URLs fornecidas pelo servidor, sem precisar entender o formato da URL.
- gRPC: usa HTTP/2, mas o HTTP não fica exposto ao projetista da API.
- OpenAPI: o cliente chama a API usando templates de caminho de URL.
REST
- Características: o cliente não precisa entender o formato da URL, e a URL não faz parte da especificação da API.
- Vantagens: oferece os benefícios da web, como estabilidade, consistência e universalidade. O modelo orientado a entidades é mais simples e fácil de entender.
gRPC
- Características: usa HTTP/2, mas os detalhes de HTTP ficam ocultos. O cliente usa a API chamando procedimentos e passando parâmetros.
- Vantagens: é fácil gerar bibliotecas de programação no lado do cliente, e o desempenho é bom.
OpenAPI
- Características: chama a API usando templates de caminho de URL, e o cliente precisa entender o formato da URL.
- Vantagens: é possível acessar a API apenas com tecnologias HTTP padrão. Também é possível gerar bibliotecas de programação no lado do cliente.
Comparação entre gRPC e OpenAPI
- Semelhanças: ambos podem ser usados como linguagem de definição de interface RPC (IDL).
- Diferenças: o gRPC oculta os detalhes de HTTP, enquanto o OpenAPI os expõe.
Vantagens do REST
- Modelo orientado a entidades: é mais simples, mais fácil de entender e permanece estável ao longo do tempo.
Como usar OpenAPI
- Definição de caminhos: a API é definida usando caminhos e métodos HTTP.
Vantagens e desvantagens do OpenAPI
- Vantagens: é semelhante ao modelo RPC, sendo familiar para programadores. Pode ser mapeado para requisições HTTP.
- Desvantagens: exige muito esforço para projetar os detalhes de HTTP.
Vantagens do gRPC
- Implementação simples: a implementação no lado do servidor é simples, e é fácil gerar bibliotecas no lado do cliente.
- Desempenho: é eficiente por usar payloads binários.
Desvantagens do gRPC
- Necessidade de software específico: tanto o cliente quanto o servidor precisam de software específico.
- Limitações em proxies: diferentemente de APIs HTTP, é difícil expandir ou modificar funcionalidades em proxies.
Conclusão
- Escolha do design de API: é preciso escolher considerando as vantagens e desvantagens de REST, OpenAPI e gRPC.
- Pontos a considerar ao usar gRPC: ele é vantajoso em APIs internas, quando os clientes não precisam adotar a tecnologia gRPC.
1 comentários
Opiniões do Hacker News
Há arrependimento por ter aprendido gRPC. Muito tempo foi gasto com depuração e ajuste de configuração
A pessoa vem construindo APIs há muito tempo e já usou gRPC e HTTP/REST
Há experiência de trabalho em FAANG, e a pessoa considera o gRPC útil para roteamento interno de serviços
A menos que haja streaming bidirecional, gRPC parece uma perda de tempo
Em um projeto que adotou gRPC por desempenho, acabou havendo migração para uma API JSON
Ao usar connectrpc, os problemas do gRPC estão sendo resolvidos
gRPC parece oferecer uma experiência de desenvolvimento pior do que REST
Roy Fielding mencionou que, em uma API REST, basta conhecer o URI inicial e os tipos de mídia padronizados
Não há preferência pelo uso de gRPC dentro do data center
Houve a sensação de que o gRPC é difícil de abordar fora do Google