Olá, amigos! Tudo bem com vocês?

Em 1952, o famoso seriado americano I Love Lucy exibiu o episódio “Job Switching”, onde duas operárias enfrentam um desafio inusitado:

Embalar bombons que chegam em alta velocidade por uma esteira.

Tudo começa bem, contudo a situação foge do controle. A esteira acelera tanto que elas precisam comer alguns bombons para acompanhar o ritmo e evitar que a produção desmorone.

Essa situação tragicômica ilustra, de forma divertida, um conceito presente na Engenhearia de Software: o BackPressure.

Vamos explorar como essa técnica funciona e porque é tão importante para grandes sistemas de informação.

O que é BackPressure?

BackPressure é uma técnica usada para controlar o fluxo de dados entre componentes de um sistema. Quando dois componentes estão conectados e um deles produz dados mais rápido do que o outro consegue processar, diversos problemas podem surgir, como:

  • Perda de dados
  • Lentidão no sistema
  • Quedas inesperadas

Com o uso do BackPressure, o componente que produz os dados é avisado para reduzir sua velocidade, permitindo que o consumidor acompanhe o ritmo.

Esse tipo de controle é crucial em sistemas complexos, onde gargalos podem causar falhas em cadeia.

Técnicas de BackPressure

Existem várias estratégias para implementar BackPressure, entre elas:

  1. Escalonamento Horizontal
    A alocação automática de mais máquinas para processar o gargalo.
  2. Uso de filas e buffers
    Armazenar temporariamente os dados com algoritmos como Janela Deslizante ou usando cache.
  3. Limitação de disponibilidade
    Controlar a entrada de dados, como quando ouvimos música de espera (Für Elise, alguém?).

A escolha da melhor abordagem requer uma análise cuidadosa da equipe, considerando o contexto e a natureza do problema.

Um caso prático: Netflix em 2014

Assistindo Tv

Imagem de um casal assistindo TV

Se você assistia à Netflix em 2014, talvez tenha percebido que a qualidade dos vídeos, às vezes, caía automaticamente. Naquela época, a empresa já processava uma carga impressionante de 350 bilhões de eventos por dia e avançava para se tornar a líder global de streaming.

O desafio? Redes domésticas estavam começando a lidar com mais dispositivos conectados, e muitos provedores não tinham banda suficiente para suportar o tráfego. A solução foi criar uma infraestrutura capaz de adaptar os conteúdos para redes com diferentes velocidades.

Explicando de forma simplificada, imagine cada frame de um vídeo como um quebra-cabeça. Para evitar interrupções, a Netflix começou a transmitir frames com “peças menores” (menos detalhes), mantendo a experiência aceitável para a maioria dos espectadores.

Esse processo exigiu 19.000 computadores em rede, 1.500 tipos de dispositivos diferentes e técnicas avançadas de codificação. Alguns detalhes dessa aventura foram documentados por David Ronca, Anne Aaron e Rick Wong e vale a pena conferir seus artigos e vídeos para quem gosta de tecnologia.

Conclusão

Assim como outras técnicas, o BackPressure não é uma solução milagrosa. Na verdade, como Frederick P. Brooks destacou em 1986, “balas de prata” não existem na Engenharia de Software.

No entanto, é inegável que essa técnica é uma ferramenta poderosa para lidar com gargalos em sistemas complexos, especialmente em casos desafiadores como o exemplo da Netflix.

Portanto, estudar e aplicar BackPressure é indispensável para desenvolvedores que trabalham com sistemas de larga escala. Afinal, quando se trata de manter tudo funcionando com eficiência e resiliência, o controle de fluxo desempenha um papel crucial e insubstituível.

Um abraço e muito obrigado pela leitura.