Arquitetura de um sistema baseado em modelo
Os componentes fixos
Uma camada de entrada que valida e limpa; uma camada de recuperação que traz contexto com permissões; uma camada de chamada ao modelo com retentativas, timeout e um fornecedor de fallback; uma camada de validação da saída contra um esquema; e uma camada de log e medição.
Cada uma existe também em sistemas comuns. O que muda é que a saída não é determinística, e por isso validação e medição importam muito mais.
Síncrono versus assíncrono
Se a resposta leva mais de alguns segundos, mude para um processo em segundo plano com um identificador de tarefa e atualizações de estado. Manter uma requisição aberta por um minuto é uma receita para timeouts e uma má experiência do usuário.
Limites que não se pode cruzar
A saída do modelo não vai diretamente para a execução — nem uma consulta, nem um comando, nem uma chamada externa — sem validação e uma lista de ações permitidas.
Indo mais fundo
Construa a camada do modelo para que ela possa rodar em modo seco: o mesmo sistema, sem uma chamada real, com respostas salvas. Isso acelera o desenvolvimento, estabiliza os testes e permite reproduzir um incidente exatamente como aconteceu.