DEV Community

EronAlves1996
EronAlves1996

Posted on

3 1

Como resolver serviços que aguentam poucas requisições?

Imagine que você tenha um serviço que é literalmente uma blackbox (você não consegue alterar nada nele) que só aguenta 200 requests por vez? Como você resolveria isso?

Image description

Este problema surgiu enquanto estava conversando com um amigo, no qual ele relatou que já viu um serviço desta forma escrito em uma lang particularmente bem antiga.

No caso, para abordar o problema, fiz o mock em Fastify como na imagem anterior.

Daí, quando executo o script abaixo (ele manda 10 mil requests de uma vez), o server simplesmente não consegue responser muitas das requests.

Image description

Image description

Neste caso, a solução aqui é simples.
Como você já sabe um limite conhecido que o seu server target consegue aguentar, você coloca um Proxy reverso na frente para regular a backpressure de requests dentro de um número razoável. Neste caso, fiz rapidamente em node mesmo.

Image description

O resultado é que, este Proxy Reverso só vai mandar 180 requisições de cada vez para que o servidor alvo processe, evitando esses crashs, mas atenção: isso é um paliativo, visto que como ele deixa as requests em idle até o server estar disponível, consequentemente a última requisição demorará mais a ser processada.

Image description

Repo com código: https://github.com/EronAlves1996/backpressure-monorepo

Heroku

Simplify your DevOps and maximize your time.

Since 2007, Heroku has been the go-to platform for developers as it monitors uptime, performance, and infrastructure concerns, allowing you to focus on writing code.

Learn More

Top comments (0)

Image of Docusign

🛠️ Bring your solution into Docusign. Reach over 1.6M customers.

Docusign is now extensible. Overcome challenges with disconnected products and inaccessible data by bringing your solutions into Docusign and publishing to 1.6M customers in the App Center.

Learn more