paint-brush
Capacitando o desempenho de sua API com proxypor@stdevk
353 leituras
353 leituras

Capacitando o desempenho de sua API com proxy

por ST Dev 5m2023/06/29
Read on Terminal Reader

Muito longo; Para ler

Em resumo, melhorar o desempenho da API pode levar a uma experiência de usuário aprimorada, maior produtividade, escalabilidade aprimorada, economia de custos e uma vantagem competitiva, tornando-a uma meta desejável para empresas e desenvolvedores. Portanto, explicaremos a arquitetura básica do gateway de API, como configurar o Proxy para rotear serviços RPC com Nginx e discutir as vantagens e desvantagens de fazer isso.
featured image - Capacitando o desempenho de sua API com proxy
ST Dev  HackerNoon profile picture
0-item
1-item
2-item

Existem vários motivos convincentes pelos quais as pessoas podem querer melhorar o desempenho da API:

  1. Experiência de usuário aprimorada: APIs mais rápidas e responsivas podem fornecer uma experiência de usuário mais suave para clientes ou usuários finais. O desempenho aprimorado pode resultar em latência reduzida, tempos de resposta mais rápidos e recuperação de dados mais rápida, levando a uma experiência de usuário mais eficiente e satisfatória.
  2. Escalabilidade aprimorada: servidores de alto desempenho podem lidar com um número maior de solicitações e usuários simultâneos, tornando-os mais escaláveis. A escalabilidade é crucial para empresas em crescimento que precisam lidar com quantidades crescentes de tráfego e dados à medida que sua base de usuários se expande. O desempenho aprimorado da API pode ajudar as empresas a atender às crescentes demandas sem comprometer os tempos de resposta ou a qualidade do serviço.
  3. Vantagem competitiva: APIs de alto desempenho podem dar às empresas uma vantagem competitiva. Usuários ou clientes tendem a preferir serviços que oferecem tempos de resposta mais rápidos, melhor confiabilidade e desempenho geral superior. Ao fornecer uma experiência de API superior, as empresas podem se diferenciar dos concorrentes e atrair mais usuários ou clientes.

Objetivo de aprendizado do tutorial

Estaremos configurando um Proxy como um sistema de gerenciamento central para obter um melhor desempenho da API. Um proxy atua como um intermediário entre clientes e servidores. Ele fica entre o cliente que faz solicitações de API e o servidor que hospeda as APIs. Quando um cliente faz uma solicitação de API, ele passa primeiro pelo proxy, que encaminha a solicitação ao servidor. O servidor processa a solicitação e envia a resposta de volta ao proxy, que a encaminha ao cliente. Isso permite que o proxy intercepte, modifique ou armazene em cache a solicitação ou resposta conforme necessário, oferecendo oportunidades para otimizar o desempenho da API.

Pré-requisito

Para macOS (ou Linux ), instale o Homebrew em seu sistema.

Instalando o Nginx no Mac

Existem as seguintes etapas para instalar o Nginx no macOS:


1️⃣ Baixe o Homebrew

Para instalar o Nginx no macOS, o Homebrew deve estar instalado no sistema. Homebrew é um gerenciador de pacotes para o sistema operacional Mac que nos permite instalar facilmente vários aplicativos Unix. Se você não tiver o Homebrew , use o seguinte link para instalar: https://brew.sh/

Ou simplesmente digite o seguinte comando no terminal:

 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"


2️⃣ Instale o Nginx

O instalador do pacote homebrew ajudará a instalar o servidor web Nginx no macOS. Para instalar o Nginx , use o seguinte comando:

 brew install nginx


3️⃣ Editar arquivo de configuração

Por padrão, a localização do arquivo de configuração do Nginx é:

 /opt/homebrew/etc/nginx/nginx.conf

Para editar o arquivo de configuração Nginx, você pode usar qualquer editor de texto de sua escolha. Por exemplo, você pode usar nano , vim ou emacs . Aqui está um exemplo de comando para editar o arquivo de configuração do Nginx usando o nano:

 nano /opt/homebrew/etc/nginx/nginx.conf

Estaremos editando o bloco do servidor que escuta na porta 80.

Pesquisar bloco de servidor


Posteriormente, inclua os três endpoints RPC da rede principal Ethereum abaixo:

 location /nodereal { proxy_pass https://eth-mainnet.nodereal.io/v1/<API KEY>; proxy_set_header Content-Type "application/json"; } location /RPCProviderA { proxy_pass <https URI endpoint>; proxy_set_header Content-Type "application/json"; } location /RPCProviderB { proxy_pass <https URI endpoint>; proxy_set_header Content-Type "application/json"; }

É possível incluir vários endpoints RPC conforme necessário e subsequentemente preservar o arquivo de configuração.

Para garantir a ausência de erros de sintaxe, prossiga com o teste do arquivo de configuração do Nginx:

 nginx -t

🎊 Caso não haja erros, o seguinte resultado será exibido.


nginx: a sintaxe do arquivo de configuração /opt/homebrew/etc/nginx/nginx.conf está ok

nginx: arquivo de configuração /opt/homebrew/etc/nginx/nginx.conf teste foi bem-sucedido

Para reiniciar o servidor Nginx, execute o seguinte comando:

 brew services restart nginx


4️⃣ Envio do método API via Nginx Proxy

Para testar o Nginx Proxy, estamos verificando o preço do gás no Ethereum via eth_gasPrice . Estaremos enviando um comando curl para enviar uma solicitação HTTP POST para o local "/nodereal" de um servidor em execução na máquina local (em " http://localhost ") com uma carga JSON vista abaixo:

 curl -X POST --data '{"jsonrpc":"2.0","method":"eth_gasPrice","params":[],"id":1}' -H "Content-Type: application/json" http://localhost/nodereal


✅ {"jsonrpc":"2.0","id":1,"resultado":"0xdec36a8d1"}

A resposta que você recebeu após executar o comando curl é uma resposta JSON-RPC de um nó Ethereum . Aqui está uma breve explicação da resposta:

  • "jsonrpc":"2.0": Este campo indica a versão do protocolo JSON-RPC utilizada na resposta.
  • "id":1: Este campo é o identificador do pedido a que corresponde esta resposta. Neste caso, a solicitação tinha um "id" de 1."resultado":"0xdec36a8d1": Este campo é o resultado da solicitação JSON-RPC. Nesse caso, o resultado solicitado foi o preço atual do gás na rede Ethereum , que é retornado em formato hexadecimal como uma string.

Para interpretar o valor decimal de "0xdec36a8d1"

O valor decimal de "0xdec36a8d1" é 59797579985. Portanto, o preço atual do gás na rede Ethereum no momento em que a solicitação foi feita era 59797579985 wei (a menor denominação de Ether) ou 58 Gwei.

Teste-o com os servidores restantes, /RPCProviderA & /RPCProviderB, executando na máquina local (em " http://localhost "):

 curl -X POST --data '{"jsonrpc":"2.0","method":"eth_gasPrice","params":[],"id":1}' -H "Content-Type: application/json" http://localhost/RPCProviderA


🥳 Você pode iniciar o teste de seu próprio proxy.


Vantagens e Desvantagens de Usar Nginx como Proxy para API Gateway


Vantagens de usar o Nginx como proxy para um gateway de API:

  1. Balanceamento de carga: Nginx pode distribuir solicitações de API recebidas em vários servidores de back-end, garantindo balanceamento de carga eficiente e desempenho aprimorado.
  2. Cache: o Nginx pode armazenar em cache as respostas da API, reduzindo a carga nos servidores de back-end e melhorando os tempos de resposta da API.
  3. Escalabilidade: o Nginx pode facilmente escalar horizontalmente para acomodar o aumento do tráfego da API e lidar com um grande número de conexões simultâneas.
  4. Segurança: o Nginx fornece vários recursos de segurança, como encerramento de SSL, proteção contra DDoS e filtragem de solicitações, que ajudam a proteger a API contra ameaças à segurança.


Desvantagens de usar o Nginx como proxy para um gateway de API:

  1. Recursos limitados de gerenciamento de API: o Nginx atua principalmente como um proxy e carece de alguns recursos avançados de gerenciamento de API, como documentação de API, portal do desenvolvedor e versão de API, que podem ser necessários em ecossistemas de API complexos.
  2. Complexidade da configuração: configurar o Nginx como um gateway de API requer um bom entendimento da configuração do Nginx, que pode ser complexa para usuários que não estão familiarizados com o Nginx.
  3. Falta de autenticação e autorização avançadas: o Nginx fornece recursos básicos de autenticação e autorização, mas pode não ter recursos avançados, como OAuth, validação JWT e controle de acesso refinado, que podem ser necessários em alguns cenários de API.

Conclusão

Concluindo, melhorar o desempenho da API é crucial para empresas e desenvolvedores. O uso do Nginx como um proxy para gateway de API oferece vantagens como balanceamento de carga, cache, escalabilidade e segurança. No entanto, existem limitações, como recursos limitados de gerenciamento de API, complexidade de configuração e falta de recursos avançados de autenticação e autorização. A consideração cuidadosa desses prós e contras é essencial. No geral, aproveitar o Nginx como um proxy pode ser uma ferramenta poderosa para melhorar o desempenho da API. Fique atento à próxima série de tutoriais, pois compartilharemos mais sobre o problema comum enfrentado e como depurá-lo.


Publicado também aqui .