CELX Blog

2026-07-27 IA Backend Engenharia de Software

Backend para aplicações com IA: o que muda quando o LLM entra na stack

FastAPI, AsyncIO, filas e streaming: como desenhar o backend que sustenta chamadas de LLM sem travar o resto do sistema. Segundo post da série sobre engenharia para Senior AI Engineer.

Um endpoint que chama um LLM não se comporta como um endpoint comum. A resposta pode levar de 200ms a 30 segundos, o cliente muitas vezes quer ver o texto chegando aos poucos, e uma chamada travada não pode derrubar as outras cem que chegam ao mesmo tempo. Backend para IA é, na prática, backend para lidar com latência incerta sem perder controle.

FastAPI avançado: async como regra, não como exceção

Rota síncrona chamando LLM é a forma mais rápida de esgotar o pool de workers. Com FastAPI e AsyncIO, cada chamada de inferência libera a thread enquanto espera a resposta, permitindo que o mesmo processo atenda dezenas de requisições concorrentes. Isso exige disciplina: bibliotecas de cliente HTTP async, sem chamadas bloqueantes escondidas dentro de uma rota `async def`.

Streaming: SSE, WebSockets e a experiência de resposta gradual

Esperar 15 segundos por uma resposta em branco é pior do que ver o texto sendo gerado token a token. Server-Sent Events resolve a maioria dos casos — é HTTP simples, funciona bem com proxies e é mais fácil de operar do que WebSockets. WebSockets entra quando o fluxo é bidirecional: agentes que recebem comandos do usuário no meio da geração, ou múltiplos eventos simultâneos além do texto.

gRPC entre serviços internos

Entre o backend e um serviço de inferência interno, REST com JSON é overhead desnecessário. gRPC com Protobuf reduz latência de serialização e dá contratos tipados entre times — importante quando o serviço de modelo evolui mais rápido que o resto do sistema.

Background workers: onde a maior parte do trabalho pesado acontece

Fine-tuning, geração de relatório longo, processamento de documento para RAG — nada disso pertence ao ciclo de request-response. Celery com Redis ou RabbitMQ como broker é o padrão mais testado; para volume alto e replay de eventos, Kafka entra como backbone de streaming entre serviços, não só como fila de tarefas.

RabbitMQ, Kafka ou os dois

RabbitMQ brilha em filas de tarefas com roteamento complexo e prioridade. Kafka brilha quando múltiplos consumidores precisam do mesmo evento — por exemplo, um evento de "documento processado" que alimenta indexação, notificação e auditoria ao mesmo tempo. Sistemas de IA maduros costumam ter os dois, cada um no seu papel.

Redis: mais que cache

Redis aparece em três lugares distintos num backend de IA: cache de resposta, broker de fila e armazenamento de estado de sessão para agentes que mantêm contexto entre chamadas. Tratar essas três funções como a mesma instância sem isolamento é receita para um Redis lento derrubar autenticação, fila e cache ao mesmo tempo.

O ponto de partida

Antes de otimizar prompt ou trocar de modelo, vale garantir que o backend não é o gargalo: rotas assíncronas de verdade, streaming onde importa, filas para o que não é interativo e Redis com responsabilidades separadas. É a infraestrutura que decide se o sistema aguenta o próximo pico de uso.