Article image
Roni Carvalho
Roni Carvalho02/09/2026 23:44
Compartilhe

A Saga do Ingresso Perfeito: Parte 1 (Monolito vs. Distribuído)

    O Caos na Fila Virtual

    Por que as bilheterias caem e o que são Sistemas Distribuídos?

    Imagine a seguinte cena: após meses de expectativa, sua banda favorita anuncia uma única apresentação de despedida na sua cidade. Você entra no site de vendas exatamente no horário de abertura da bilheteria. Há um cronômetro na tela. Faltam 3, 2, 1... Você clica desesperadamente em "Comprar".

    A tela trava. A barra de carregamento parece eterna. De repente, o temido aviso surge: "Erro 500: Internal Server Error" ou "504 Gateway Timeout".

    Essa frustração, vivida pelo nosso personagem fictício, o Lucas, é um dos maiores clichês da internet. Mas o que acontece "por trás dos bastidores" de um sistema que simplesmente desmorona sob pressão?

    O Problema: O Monolito Sobrecarregado

    No início, quando uma aplicação é construída, é muito comum e prático colocar todas as regras em um único lugar. Esse modelo é chamado de Arquitetura Monolítica. No monolito do site de ingressos do Lucas, o código que exibe a tela, o código que reserva o assento, o que processa o pagamento e o que envia o e-mail de confirmação rodam juntos, como uma única unidade, em um único servidor.

    Enquanto poucas pessoas estão acessando, tudo funciona perfeitamente. O problema surge na hora do show. Quando milhares de "Lucas" clicam em comprar simultaneamente, o servidor único sofre com gargalos críticos:

    1. CPU e Memória chegam a 100% tentando processar milhares de cálculos de transações ao mesmo tempo.
    2. O banco de dados centralizado trava, pois precisa fazer leituras e escritas concorrentes na mesma tabela para garantir que dois fãs não comprem o mesmo assento.

    Para tentar salvar o monolito, a primeira reação costuma ser o Escalonamento Vertical (scaling up): comprar um servidor maior, com mais processadores e mais memória RAM. No entanto, essa estratégia possui duas falhas graves:

    • Limite Físico: Há um teto para o tamanho da máquina que você pode alugar ou comprar.
    • Custo Exorbitante: Dobrar o poder de uma única máquina pode quadruplicar o seu preço.

    Se o servidor principal falhar por qualquer motivo (uma conexão de rede perdida ou uma explosão de acessos), a aplicação inteira cai e o negócio perde milhares de vendas.

    A Solução: Sistemas Distribuídos

    Para resolver o problema do Lucas, precisamos mudar nossa forma de pensar. Em vez de depender de um único computador gigante (um "pet" que cuidamos com medo de que adoeça), migramos para o modelo de Sistemas Distribuídos.

    Um sistema distribuído é uma coleção de computadores independentes e geograficamente dispersos que se comunicam através do envio de mensagens em uma rede, colaborando para atingir um objetivo comum. Para o usuário final, todo esse ecossistema complexo deve parecer uma única aplicação rápida e coesa.

    Com essa abordagem, adotamos o Escalonamento Horizontal (scaling out): em vez de comprar um servidor gigante e caro, nós distribuímos a carga de trabalho adicionando várias máquinas menores e mais baratas para trabalhar em paralelo.

    Se o fluxo de compradores como o Lucas triplicar, nós simplesmente adicionamos mais pequenos servidores temporários para dividir as requisições de forma justa (através de um balanceador de carga). Se uma dessas máquinas falhar ou travar, o sistema continua funcionando porque as outras assumem o seu lugar, garantindo a tolerância a falhas.

    image

    Figura 1: Escalonamento Vertical vs. Escalonamento Horizontal Distribuído.

    No entanto, dividir o trabalho não significa apenas replicar o mesmo código em vários computadores. Significa também dividir as responsabilidades. No próximo episódio, veremos como a equipe de engenharia do site de ingressos quebrou esse grande monolito em pequenos especialistas independentes: os Microserviços.

    Compartilhe
    Comentários (0)