É sexta-feira de manhã e você está animado. Hoje, seu novo sistema generativo de IA executado em um grande provedor de nuvem pública começará a funcionar com os sistemas de comércio eletrônico existentes que geram 80% da receita da empresa.

A empresa espera que a nova capacidade gere mais vendas e ao mesmo tempo proporcione um melhor entendimento dos clientes que utilizam o site. O sistema também será capaz de criar pacotes personalizados em tempo real. O marketing estima que isso aumentará a venda única média em 30%. Jogador desafiante.

Houve um esforço tão grande para implementar isso que as equipes de desenvolvimento de nuvem e de sites ignoraram a maior parte dos testes de estresse, confiando, em vez disso, na promessa de que esses sistemas baseados em nuvem “deveriam ser capazes de escalar”.

Os sistemas de comércio eletrônico se comunicam com o sistema generativo de IA usando diversas APIs. Isso permite que os aplicativos no site de comércio eletrônico acionem o sistema generativo de IA, incluindo o envio de dados. O produtivo sistema de IA retorna então as respostas desejadas.

Mas nem tudo está bem. À medida que o número de usuários no sistema de comércio eletrônico ultrapassa 5.000, aumentando a carga nas APIs que funcionam com o sistema de comércio eletrônico, o desempenho cai drasticamente. O número de usuários abortando o site aumenta significativamente, tanto que a equipe de e-commerce retorna à última versão do site e retira a conexão com o novo sistema API generativo.

Vejo esse tipo de cenário com bastante frequência. Os sistemas são bem projetados, mas as APIs são subvalorizadas, trazendo problemas de desempenho, escalabilidade e latência. Muitos escondem esses problemas investindo recursos neles, como mais instâncias de servidor, o que é fácil de fazer em uma nuvem pública. Mas os recursos não são gratuitos e, eventualmente, essas APIs precisam ser corrigidas.

Os princípios básicos do design de API

A essência de todos esses tipos de falhas em que a API não funciona conforme planejado é a necessidade de um design que considere vários aspectos de um bom plano de API. Vamos voltar ao básico. Conhecemos essas coisas há décadas, mas não tem sido a prioridade. Muitas vezes, quando conto a um cliente o que estou prestes a lhe contar, isso parece uma informação nova. Isso é assustador quando você conversa com a equipe de desenvolvimento de API.

Quais são os princípios básicos de um bom design de API? Vamos revisar os grandes:

Escalabilidade é enorme, o que significa que precisamos projetar as APIs para lidar com solicitações crescentes sem degradação do desempenho. Aqui estão alguns truques: Implemente estratégias de cache e balanceadores de carga e garanta que a arquitetura subjacente possa alocar recursos dinamicamente à medida que a demanda aumenta.

Modularidade significa construir APIs como um conjunto de serviços modulares. A separação permite que componentes individuais sejam desenvolvidos, implantados e dimensionados de forma independente. Isso reduz a complexidade, melhora a capacidade de manutenção e aumenta as chances de o código poder ser reutilizado.

Apatridia está alinhado com os princípios RESTful. As APIs não devem reter dados entre solicitações. Isso é design de som. Ser stateless aumenta a escalabilidade e a confiabilidade porque os servidores dentro do cluster podem lidar com qualquer solicitação de forma independente.

Tratamento eficiente de dados significa otimizar o tamanho dos pacotes de dados transmitidos de volta ao solicitante. As respostas da API devem excluir dados desnecessários. Isso minimiza a latência e o uso da largura de banda.

Monitoramento e testes

A maioria das pessoas que criam e implantam APIs não consegue me dizer o ponto em que a API ficará saturada, o que significa que ela parará de responder em tempo hábil. Eles têm pouca ou nenhuma ideia de como a API se comporta em diferentes níveis de estresse. A única maneira de descobrir isso é monitorando, testando e usando métricas para ver se a API está realmente otimizada, com base nos princípios que abordei acima.

Eu recomendo as seguintes métricas de desempenho:

  • Monitore constantemente a latência da APIo tempo que leva para uma solicitação viajar do cliente para o servidor e para a resposta retornar ao cliente.
  • Medir o rendimento, o número de mensagens bem-sucedidas entregues em um determinado período. Isso permite que você entenda a capacidade da API.
  • Assistir erro de API cotações para mitigar proativamente quaisquer problemas de confiabilidade. Muitos erros significam que algo está errado e precisa ser localizado e corrigido.

A julgar pelos muitos sistemas em nuvem que encontrei, é evidente que nos perdemos no que diz respeito ao design, desenvolvimento e operação de APIs. Suspeito que o design de API muitas vezes não é ensinado em muitos treinamentos de desenvolvimento em nuvem ou é abordado apenas de passagem.

À medida que construímos sistemas baseados em nuvem que são melhor otimizados, o que significa que usam menos recursos, mas fornecem desempenho superior, precisamos melhorar todos os componentes de um aplicativo ou conjunto de aplicativos. A API é fundamental atualmente e deve ser mais priorizada durante o design. Pedir muito?