Blog

Quando sua API começa a travar: o momento certo de parar de responder e começar a enfileirar

3–5 minutos

Autor: Mirer Balbino

APIs normalmente nascem no modelo síncrono: uma requisição entra, o sistema processa e devolve uma resposta. Esse modelo é simples, direto e funciona bem para operações rápidas. 

Com o tempo, porém, o sistema cresce. Novas regras de negócio surgem, integrações são adicionadas e algumas requisições deixam de ser triviais. O que antes levava milissegundos passa a levar segundos, ou até minutos. É nesse ponto que insistir no modelo síncrono começa a comprometer a previsibilidade e a experiência do sistema. 

No início, otimizações pontuais resolvem boa parte dos problemas: melhorias em consultas ao banco, uso de cache e ajustes de performance. Essas mudanças não alteram o modelo da aplicação. O fluxo continua síncrono. 

O problema aparece quando o próprio fluxo de negócio muda. 

Imagine uma requisição que precisa criar registros, atualizar dados, gerar um relatório e enviar um e-mail. Esse tipo de operação pode levar tempo significativo para ser concluído. Nesse cenário, manter o processamento dentro da requisição deixa de ser uma decisão técnica e passa a ser um problema operacional. 

O ponto de virada

Na prática, o usuário nem sempre precisa da resposta completa imediatamente. Ele precisa acionar a operação, saber que a solicitação foi recebida e continuar usando o sistema. Se isso for suficiente, não há motivo para manter todo o processamento dentro da mesma requisição.

É aqui que entra o modelo assíncrono.

Em vez de executar tudo no momento da requisição, a aplicação recebe a solicitação, valida o necessário e delega o trabalho para ser processado depois. E isso pode ser feito com o uso de filas: estruturas que permitem armazenar tarefas e processá-las conforme houver disponibilidade. Uma boa analogia para entender o funcionamento das filas é a de um supermercado: os itens são colocados na esteira e processados no ritmo do operador. A aplicação deixa de tentar resolver tudo de uma vez e passa a organizar o trabalho para ser executado de forma controlada.

Figura 1 — Analogia de uma esteira de supermercado como exemplo de funcionamento de filas.

O que muda quando você desacopla o processamento

Na prática, isso significa transformar a requisição em uma mensagem, colocá-la em uma fila e permitir que outro componente a processe posteriormente. Independentemente da tecnologia utilizada, o papel da fila é sempre o mesmo: intermediar o envio e o processamento, desacoplando quem solicita de quem executa.

Figura 2 — Diagrama simplificado de como funciona o processamento com filas, com o exemplo do RabbitMQ.

Com isso, o comportamento da aplicação muda. A resposta da API fica mais rápida, o sistema passa a lidar melhor com picos de carga e o processamento deixa de competir diretamente por recursos dentro da mesma requisição. Em vez de confirmar o resultado, a API passa a confirmar o recebimento da solicitação. 

Esse modelo, no entanto, não vem sem custo. Ao desacoplar o processamento, você adiciona complexidade: passa a lidar com mais componentes, precisa investir em monitoramento e observabilidade e deve tratar falhas de forma mais estruturada. O que antes era um fluxo linear passa a ser um fluxo distribuído. 

Por isso, filas não são uma solução universal. Elas fazem sentido quando o processamento é demorado, quando não há necessidade de resposta imediata ou quando o sistema precisa absorver carga de forma previsível. Em operações simples e rápidas, o modelo síncrono continua sendo a melhor escolha. No fim, a decisão entre síncrono e assíncrono não é sobre preferência arquitetural, mas sobre contexto. Insistir no modelo síncrono além do ponto certo não é simplicidade, é limitação. 

Esse tipo de abordagem é especialmente relevante em sistemas financeiros, onde cada operação precisa ser processada com previsibilidade, mesmo sob carga. Arquiteturas que desacoplam processamento permitem lidar melhor com picos, falhas e integrações externas sem comprometer a experiência do usuário. 

Operações em escala com a Delfinance

Se sua API já apresenta sinais de latência crescente, picos de carga concentrados ou operações que “seguram” a resposta por tempo demais, provavelmente o problema não é só performance, é modelo de execução.

A Delfinance opera APIs financeiras críticas em produção, incluindo fluxos de Pix, boletos e Banking-as-a-Service, onde previsibilidade e estabilidade não são opcionais. Decisões como quando manter síncrono ou migrar para processamento assíncrono fazem parte do desenho dessas plataformas.

Se quiser avaliar como esse tipo de arquitetura se aplica ao seu cenário, fale com nosso time:

Leituras recomendadas

Para evoluir a integração com uma visão mais completa de engenharia em sistemas financeiros, confira nossos outros artigos:

Post anterior

Destaques

  • Destaques

Quando sua API começa a travar: o momento certo de parar de responder e começar a enfileirar

3–5 minutos

Autor: Mirer Balbino

APIs normalmente nascem no modelo síncrono: uma requisição entra, o sistema processa e devolve uma resposta. Esse modelo é simples, direto e funciona bem para operações rápidas. 

Com o tempo, porém, o sistema cresce. Novas regras de negócio surgem, integrações são adicionadas e algumas requisições deixam de ser triviais. O que antes levava milissegundos passa a levar segundos, ou até minutos. É nesse ponto que insistir no modelo síncrono começa a comprometer a previsibilidade e a experiência do sistema. 

No início, otimizações pontuais resolvem boa parte dos problemas: melhorias em consultas ao banco, uso de cache e ajustes de performance. Essas mudanças não alteram o modelo da aplicação. O fluxo continua síncrono. 

O problema aparece quando o próprio fluxo de negócio muda. 

Imagine uma requisição que precisa criar registros, atualizar dados, gerar um relatório e enviar um e-mail. Esse tipo de operação pode levar tempo significativo para ser concluído. Nesse cenário, manter o processamento dentro da requisição deixa de ser uma decisão técnica e passa a ser um problema operacional. 

O ponto de virada

Na prática, o usuário nem sempre precisa da resposta completa imediatamente. Ele precisa acionar a operação, saber que a solicitação foi recebida e continuar usando o sistema. Se isso for suficiente, não há motivo para manter todo o processamento dentro da mesma requisição.

É aqui que entra o modelo assíncrono.

Em vez de executar tudo no momento da requisição, a aplicação recebe a solicitação, valida o necessário e delega o trabalho para ser processado depois. E isso pode ser feito com o uso de filas: estruturas que permitem armazenar tarefas e processá-las conforme houver disponibilidade. Uma boa analogia para entender o funcionamento das filas é a de um supermercado: os itens são colocados na esteira e processados no ritmo do operador. A aplicação deixa de tentar resolver tudo de uma vez e passa a organizar o trabalho para ser executado de forma controlada.

Figura 1 — Analogia de uma esteira de supermercado como exemplo de funcionamento de filas.

O que muda quando você desacopla o processamento

Na prática, isso significa transformar a requisição em uma mensagem, colocá-la em uma fila e permitir que outro componente a processe posteriormente. Independentemente da tecnologia utilizada, o papel da fila é sempre o mesmo: intermediar o envio e o processamento, desacoplando quem solicita de quem executa.

Figura 2 — Diagrama simplificado de como funciona o processamento com filas, com o exemplo do RabbitMQ.

Com isso, o comportamento da aplicação muda. A resposta da API fica mais rápida, o sistema passa a lidar melhor com picos de carga e o processamento deixa de competir diretamente por recursos dentro da mesma requisição. Em vez de confirmar o resultado, a API passa a confirmar o recebimento da solicitação. 

Esse modelo, no entanto, não vem sem custo. Ao desacoplar o processamento, você adiciona complexidade: passa a lidar com mais componentes, precisa investir em monitoramento e observabilidade e deve tratar falhas de forma mais estruturada. O que antes era um fluxo linear passa a ser um fluxo distribuído. 

Por isso, filas não são uma solução universal. Elas fazem sentido quando o processamento é demorado, quando não há necessidade de resposta imediata ou quando o sistema precisa absorver carga de forma previsível. Em operações simples e rápidas, o modelo síncrono continua sendo a melhor escolha. No fim, a decisão entre síncrono e assíncrono não é sobre preferência arquitetural, mas sobre contexto. Insistir no modelo síncrono além do ponto certo não é simplicidade, é limitação. 

Esse tipo de abordagem é especialmente relevante em sistemas financeiros, onde cada operação precisa ser processada com previsibilidade, mesmo sob carga. Arquiteturas que desacoplam processamento permitem lidar melhor com picos, falhas e integrações externas sem comprometer a experiência do usuário. 

Operações em escala com a Delfinance

Se sua API já apresenta sinais de latência crescente, picos de carga concentrados ou operações que “seguram” a resposta por tempo demais, provavelmente o problema não é só performance, é modelo de execução.

A Delfinance opera APIs financeiras críticas em produção, incluindo fluxos de Pix, boletos e Banking-as-a-Service, onde previsibilidade e estabilidade não são opcionais. Decisões como quando manter síncrono ou migrar para processamento assíncrono fazem parte do desenho dessas plataformas.

Se quiser avaliar como esse tipo de arquitetura se aplica ao seu cenário, fale com nosso time:

Leituras recomendadas

Para evoluir a integração com uma visão mais completa de engenharia em sistemas financeiros, confira nossos outros artigos:

Post anterior

Destaques

  • Todas
  • Destaques

CNPJ: 52.400.593/0001-87

Av. Mario Jorge Menezes Viêira, 3028 – Coroa do Meio, Aracaju/SE, 49035-100

Fale conosco

Powered by del.tech: 2025 – Todos os direitos reservados.