Sua API é realmente em tempo real? Teste a latência dela com a ferramenta rtapi da NGINX

NGINX | 11 de março de 2020

[Editor – Esta publicação foi atualizada com informações sobre os relatórios revisados introduzidos no rtapi versão 0.2.0.]

As APIs estão no centro das aplicações modernas e das arquiteturas digitais em constante evolução, e as chamadas de API representam 83% de todo o tráfego da Web, de acordo com o Relatório sobre o Estado da Segurança da Internet da Akamai. No cenário atual, em que é tão fácil para os consumidores migrarem para um concorrente digital, é fundamental que eles tenham uma experiência positiva com seu site ou aplicativo. A velocidade é muito valorizada e, em última análise, depende de APIs responsivas, robustas e adaptáveis. Se você fizer isso direito — ou seja, se sua API for mais rápida que a do concorrente — os desenvolvedores escolherão você.

De acordo com o relatório da IDC APIs — Os fatores determinantes para o sucesso ou o fracasso dos negócios digitais, mais de 90% das organizações esperam uma latência inferior a 50 milissegundos (ms), enquanto quase 60% esperam uma latência de 20 ms ou menos. (A latência é definida como o tempo que a infraestrutura da sua API leva para responder a uma chamada de API — desde o momento em que uma solicitação chega ao gateway de API até o retorno do primeiro byte da resposta ao cliente.)

Usamos esses dados, juntamente com uma análise de ponta a ponta do ciclo de vida das APIs, para definir uma API em tempo real como aquela que apresenta latência de 30 ms ou menos. Além disso, o limite de latência de 30 ms deve ser mantido até o 99º percentil das solicitações processadas (o que significa que, em média, apenas 1 em cada 100 solicitações leva mais de 30 ms). Para obter detalhes, consulte nosso blog sobre benchmarking de desempenho de soluções de gerenciamento de APIs.

Para a maioria das empresas, processar chamadas de API o mais próximo possível do tempo real é um grande desafio, especialmente quando gateways de API com arquiteturas complexas são usados como pontos de entrada para os endpoints das APIs. Então, qual é o desempenho das suas APIs? Elas já são rápidas o suficiente para serem consideradas em tempo real ou precisam melhorar? Seu produto parece um pouco lento, mas você não consegue identificar exatamente o motivo? Talvez você não saiba ao certo qual é a latência das suas APIs?

Conheça o rtapi – uma ferramenta de benchmarking de latência de APIs em tempo real criada pela NGINX, que testa a capacidade de resposta dos seus gateways e endpoints de API e gera relatórios que você pode distribuir e compartilhar facilmente com seus colegas. Há dois formatos de relatório disponíveis: um PDF com um gráfico resumido e uma tabela de métricas detalhadas formatada em ASCII.

Executando rtapi

  1. Baixe o binário rtapi do GitHub usando um destes dois métodos:
    • Se você tiver o Golang instalado, execute este comando:
$ go get github.com/nginxinc/rtapi
  1. Especifique um ou mais endpoints de API (destinos) que você deseja consultar, no formato JSON ou YAML, como nos exemplos a seguir. Recomendamos salvar o JSON ou YAML em um arquivo chamado endpoints.json ou endpoints.yml. (No caso de JSON, você também pode incluir os dados na linha de comando do rtapi na próxima etapa, como parâmetro da opção --data.) Os únicos parâmetros obrigatórios para cada endpoint são target.url e target.method. Se você não especificar target.body e target.header, eles permanecerão vazios. Se você não especificar um parâmetro no objeto query_parameters, o rtapi usará o valor (padrão) mostrado para ele nos exemplos a seguir. Exemplo de entrada JSON
[
  {
    "target": {
      "url": "https://www.example.com",
      "method": "POST",
      "body": "{\"id\":\"0\"}",
      "header": {
        "Content-Type": [
          "application/json"
        ]
      }
    },
    "query_parameters": {
      "threads": 2,
      "max_threads": 2,
      "connections": 10,
      "duration": "10s",
      "request_rate": 500
    }
  }
]
  1. Exemplo de entrada YAML
- target:    url: https://example.com/api/id
    method: POST
    body: '{"id":"0"}'
    header:
      Content-Type:
        - application/json
  query_parameters:
    threads: 2
    max_threads: 2
    connections: 12
    duration: 10s
    request_rate: 500
  1. Execute o comando a seguir, em que --file especifica o arquivo que contém a lista de endpoints de API formatada em JSON/YAML e --output especifica o relatório em PDF a ser gerado pelo rtapi. (Conforme observado na Etapa 2, você pode fornecer a entrada JSON na linha de comando: substitua --file endpoints.json por --data seguido da string JSON.)
$ rtapi --file endpoints.json --output report.pdf
  1. Para exibir a tabela de métricas formatada em ASCII no terminal, inclua a opção --print em vez da opção --output (ou além dela).
$ rtapi --file endpoints.json --print

Interpretando o relatório em PDF

O relatório em PDF gerado pelo rtapi contém um histograma HDR da latência de resposta semelhante ao apresentado a seguir (de um gateway de API NGINX Plus configurado usando o Módulo de Gerenciamento de APIs do NGINX Controller). O eixo Y mostra a latência em milissegundos, e o eixo X mostra a proporção de chamadas processadas em menos de uma determinada latência, expressa como percentil. (No exemplo a seguir, comprimimos o eixo Y para economizar espaço.)

Para destacar os resultados da sua API, as linhas tracejadas paralelas aos eixos se cruzam para mostrar a latência medida da sua API no 99º percentil (99% no gráfico). Para que sua API seja considerada em tempo real, a latência no ponto de interseção deve ser inferior a 30 ms.

Como o NGINX pode ajudar?

A latência da sua API é inferior a 30 ms?

Se a sua empresa for como muitas das empresas com as quais conversamos, provavelmente não. Com muitas soluções de gateway de API e gerenciamento de APIs, uma latência de 100 ms é comum, e até mesmo 500 ms não é tão incomum.

Podemos ajudar você a melhorar o desempenho das suas APIs – o NGINX e o NGINX Plus são o gateway de API mais rápido do setor e, em conjunto com o NGINX Controller, podem ajudar você a rotear, autenticar, proteger, controlar e armazenar em cache chamadas de API em menos de 30 ms. Saiba mais, fale com um especialista em NGINX e descubra como o NGINX pode ajudar você em sua jornada rumo a APIs em tempo real em nginx.com/real-time-api.


Compartilhar

Sobre o autor

Publicações relacionadas no blog

Como o F5 NGINX One aprimora o gerenciamento e a observabilidade
NGINX | 10/10/2024

Como o F5 NGINX One aprimora o gerenciamento e a observabilidade

Descubra como o F5 NGINX One aprimora o gerenciamento e a observabilidade de ambientes híbridos e multicloud ao oferecer um console web centralizado baseado em SaaS, com insights em tempo real, conformidade automatizada e gerenciamento simplificado de configurações.

Do OpenAPI ao NGINX como gateway de API usando uma API declarativa
NGINX | 17/06/2024

Do OpenAPI ao NGINX como gateway de API usando uma API declarativa

Descubra como transformar uma definição de esquema OpenAPI em uma configuração NGINX totalmente funcional, operando como um API Gateway com a segurança de um Web Application Firewall e um Portal do Desenvolvedor, usando uma abordagem declarativa de API.

Como gerenciar picos repentinos de tráfego e sobrecarga do servidor
NGINX | 14/07/2021

Como gerenciar picos repentinos de tráfego e sobrecarga do servidor

Picos de tráfego e sobrecarga de servidores são preocupações sérias para varejistas online em qualquer época, mas especialmente durante a “Cyber Season” de compras de fim de ano. Detalhamos como você pode aproveitar as soluções de entrega de aplicações de nível de produção da NGINX para se preparar para aumentos repentinos de tráfego.

Distribuição segura de chaves privadas SSL com o NGINX
NGINX | 02/04/2019

Distribuição segura de chaves privadas SSL com o NGINX

Descrevemos três maneiras progressivamente mais seguras de proteger chaves privadas SSL ao configurar o NGINX para processar tráfego HTTPS: permitir acesso de leitura apenas ao usuário root, criptografar as chaves com senhas armazenadas separadamente e distribuir as senhas a partir de um repositório central.

Agrupando solicitações de API em lotes com NGINX Plus e o módulo JavaScript do NGINX
NGINX | 24/05/2018

Agrupando solicitações de API em lotes com NGINX Plus e o módulo JavaScript do NGINX

O módulo JavaScript do NGINX lançado com o NGINX Plus R15 oferece suporte a subsolicitações, possibilitando uma classe totalmente nova de casos de uso para o NGINX Plus. Este exemplo completo também usa a API do NGINX Plus e os módulos de chave-valor para converter solicitações de API dos clientes em solicitações separadas para as APIs dos microsserviços que compõem um aplicativo.

Como superar o esgotamento de portas efêmeras no NGINX e no NGINX Plus
NGINX | 19/04/2016

Como superar o esgotamento de portas efêmeras no NGINX e no NGINX Plus

Confira dicas para evitar o esgotamento de portas efêmeras com ajustes no kernel do Linux, conexões keepalive e conexões vinculadas dinamicamente a endereços IP locais.