Melhores Práticas de Degradação de API no API Gateway
April 1, 2024
Em sistemas distribuídos modernos, a degradação de API serve como um mecanismo crucial de tolerância a falhas e estabilidade. Quando um sistema enfrenta pressão, falhas ou restrições de recursos, a degradação de funções ou serviços não essenciais garante a estabilidade geral do sistema e a continuidade das operações principais do negócio. Este artigo explora os cenários para degradação de API e as melhores práticas para implementar a degradação no nível do gateway de API.
Cenários para Degradação de API
-
Sobrecarga do Sistema: Quando o sistema experimenta um aumento de solicitações que excede a capacidade de processamento do servidor, é necessário degradar APIs não essenciais para evitar falhas no sistema e garantir o funcionamento normal das funções principais.
-
Falhas de Serviço: Em caso de falhas ou degradação de desempenho dos serviços de backend, é necessário degradar as APIs desses serviços para evitar a propagação das falhas.
-
Restrições de Recursos: Quando os recursos do sistema, como CPU, memória ou largura de banda, estão limitados, é essencial degradar APIs com alto consumo de recursos para garantir a estabilidade geral do sistema.
Melhores Práticas para Degradação de API no Nível do Gateway
Considere um cenário em que uma plataforma de comércio eletrônico enfrenta uma imensa pressão de tráfego durante um grande evento de vendas, como a Black Friday. Para proteger as funções principais e garantir a experiência do usuário, a equipe decide implementar estratégias de degradação de API no nível do gateway.
1. Identificação de APIs Principais
A equipe identifica APIs críticas, como login do usuário, recuperação de detalhes do produto, adição de itens ao carrinho de compras, submissão de pedidos e processamento de pagamentos. Essas APIs são cruciais para que os usuários completem o processo de compra.
2. Projeto de Estratégias de Degradação
Para APIs principais, é configurado o tratamento de degradação de desempenho. Por exemplo, quando o servidor upstream retorna um código de status 500
por três vezes consecutivas, o circuito é interrompido, com o tempo de inatividade do circuito aumentando automaticamente, até um máximo de 300 segundos, até que o serviço upstream se recupere.
Para APIs não essenciais, como avaliações de usuários, listas de recomendações e exibição de anúncios, são projetadas estratégias de degradação específicas:
-
API de Avaliação de Usuários: Retornar listas de avaliações padrão ou dados vazios para evitar chamadas em tempo real ao sistema de avaliações.
-
API de Lista de Recomendações: Utilizar dados de recomendações em cache ou retornar uma lista de recomendações fixa para reduzir a dependência do mecanismo de recomendações.
-
API de Exibição de Anúncios: Retornar anúncios padrão ou espaços de anúncios vazios para garantir que o layout da página permaneça inalterado.
3. Configuração do Apache APISIX / API7 Enterprise
-
Para APIs principais, o plugin "api-breaker" é ativado nas rotas correspondentes, com uma condição de disparo definida para três ocorrências consecutivas de um código de status
500
, e um tempo máximo de inatividade do circuito de 300 segundos. -
Para a API de avaliação de usuários, ativar o plugin mocking na rota correspondente e definir
response_example
como dados vazios. -
Para a API de lista de recomendações, ativar o plugin proxy-cache na rota correspondente e optar por utilizar o cache de respostas na memória.
-
Para a API de exibição de anúncios, ativar o plugin mocking na rota correspondente e definir o
response_example
como anúncios padrão, garantindo a exibição normal da página enquanto mantém anúncios clicáveis.
4. Gerenciamento Dinâmico de Configurações
Para se adaptar às condições de tráfego em mudança, a equipe opta por gateways recarregáveis dinamicamente: Apache APISIX / API7 Enterprise. Eles podem ajustar os limites de interrupção do circuito, estratégias de degradação e ativar interruptores de degradação com base em dados de monitoramento em tempo real, degradando seletivamente APIs não essenciais conforme os picos de tráfego ocorrem.
5. Monitoramento e Alertas
A equipe configura políticas de alerta convenientemente dentro do gateway API7 ou integra com seus sistemas internos de monitoramento e alerta usando APISIX. O monitoramento em tempo real dos tempos de resposta da API, taxas de erro e volumes de chamadas permite a execução automática de degradação ao atingir os limites de degradação ou condições de disparo. O pessoal de operações é notificado via SMS, e-mail ou outros meios para resolver prontamente possíveis problemas, garantindo a estabilidade do sistema.
6. Avaliação e Ajuste
Após a implementação das estratégias de degradação, a equipe monitora de perto o desempenho do sistema e a experiência do usuário. Eles avaliam a eficácia das estratégias de degradação por meio de feedback dos usuários, análise de dados de negócios e métricas de monitoramento. Com base nos resultados da avaliação, a equipe faz ajustes oportunos nas estratégias de degradação para equilibrar melhor a carga do sistema e a satisfação do usuário.
Conclusão
A degradação de API, como um mecanismo crítico de tolerância a falhas em sistemas distribuídos modernos, melhora significativamente a estabilidade do sistema e a experiência do usuário quando implementada no nível do gateway de API. Ao identificar APIs principais, projetar estratégias de degradação, configurar plugins de gateway, gerenciar configurações dinamicamente, monitorar e alertar, e avaliar a eficácia, as equipes podem enfrentar flexivelmente vários desafios, garantindo a estabilidade do sistema mesmo sob pressão.