Postado originalmente em Mundo API: https://mundoapi.com.br/materias/como-garantir-velocidade-e-qualidade-aos-usuarios-da-sua-api/
Segurança e gerenciamento de tráfego são dois pilares centrais que influenciam o design de uma boa API. Não apenas por você estar dando acesso aos seus servidores e tudo o que eles contêm à estranhos, mas porque um tráfego não monitorado e mal administrado pode derrubar um servidor se a API não for construída para suportar grandes picos. Lógicamente a capacidade de seu gerenciador de APIs e da infraestrutura que ambos se encontra também é um fator essencial. Mas, neste artigo ficaremos focados nas caracteristicas de construção de sua API no tocante as técnicas de gerenciamento de tráfego que podem ser utilizadas, o que influenciam na segurança (“ou saúde”) de seu backend.
A maioria das web APIs são desenvolvidas para fazer duas coisas: receber chamadas e enviar respostas. Essa entrada e a saída de tráfego tem sido ultimamente a principal medida de sucesso de uma API, o que significa que é vital que esse fluxo seja controlado cuidadosamente por autorizações e outras medidas, que são formas importantes de controlar custos e proteger seu servidor de falhas por conta de excesso de tráfego, além de garantir velocidade e qualidade aos usuários da sua API.
Acima de tudo, as APIs devem ser capazes de entregar um ótimo serviço, mesmo com picos de tráfego.
Para isso, a maioria das APIs monitoram e restringem acesso ao servidor a partir de métodos de gerenciamento de tráfego quando há grandes volumes de acesso. Essas formas de defesa protegem sua API contra abusos e sobrecarga. Aqui vão algumas ideias do que pode ser feito:
Limites de requisição tratam de controlar grandes volumes de tráfego em sua API. Eles rastreiam as chamadas para a API durante um período de tempo, sendo que essas chamadas são monitoradas por um nome de usuário, API key ou endereço de IP. Se um usuário ultrapassa seu limite de chamadas por segundo, hora, dia ou qualquer medida de tempo que o termo de uso de APIs estabelecer, a API irá barrar a capacidade de o usuário em realizar chamadas. Por exemplo, a API do Twitter limita chamadas por hora por usuário. Essa é uma forma de controlar o tráfego de forma que as atividades de nenhum usuário sobrecarreguem o servidor e impactem negativamente o tempo de resposta para outros usuários da API. Além disso, esses limites podem controlar a duração da chamada e o quanto alguém pode fazer download, protegendo seus ativos de serem baixados em massa sem sua autorização.
Já as quotas são uma forma de garantir que os usuários estão cumprindo o contrato da API, normalmente baseado a nível de acordo de uso de serviço (SLA, ou service-level agreement). Quotas dão ao usuário um número inicial de chamadas por segundo, minuto, hora etc. que podem realizar em uma API aberta. Caso um usuário exceda essa quota em um determinado período, uma mensagem de erro é enviada, impedindo novas chamadas até o fim do período. É nesse ponto que entra a monetização de APIs. Se um usuário for além da sua quota e precisar de mais chamadas, pode pagar uma única taxa ou pagar algum tipo de mensalidade caso precise usar a API com maior frequência. Cabe a você determinar qual o melhor formato de monetização para suas APIs.
Throttling atua de uma forma um pouco diferente, mas também se baseia na ideia de restringir chamadas para a API. Ao invés de receber uma mensagem de erro, o usuário irá notar que as chamadas para a API ficam mais devagar se houver excesso de chamadas em um determinado período.
Spike arresting é um sistema integrado que bloqueia o acesso caso as chamadas fiquem fora de controle – seja por conta de alguma intenção maliciosa ou apenas um código mal escrito, como por exemplo quando um app pluga na sua API, mas equivocadamente começa um loop infinito no código que subrecarrega sua infraestrutura de backend. Essa é uma boa ideia para prevenir uma catástrofe em grandes proporções, independentemente do quão ocupada sua API esteja.
Essas são algumas estratégias que podem ajudar na hora de construir uma API fácil de usar, segura, de alta qualidade e disponibilidade. Lógicamente todas as técnicas podem ser feitas programando, construido-se uma infra para tal. Mas, o esforço de desenvolvimento e configuração passa a não ser vantajoso pois existem gerenciadores de APIS que já implementam tais técnicas e outras mais. Uma importante dica é usar um gerenciador de APIs que tenha o maior número de políticas de controle de tráfego possível e que seja comprovadamente robusto. Desta forma você economizará muito tempo de desenvolvimento e terá a ceteza que o seu backend não ficará na mão se o gerenciador de APIs parar, mesmo que por poucos minutos.
Adaptação de: Business2Community
Comments