Pular para o conteúdo

Design clássico · Júnior

Pastebin

Projeto de entrevista clássico. Pontos centrais: expiração por TTL e geração de IDs únicos.

11 min de leitura · Conteúdo revisado em 22 de outubro de 2026

Resposta curta

Projeto de entrevista clássico. Pontos centrais: expiração por TTL e geração de IDs únicos. Um pastebin deixa alguém colar um bloco de texto e receber um link para compartilhá-lo; quem abre o link vê o texto. O desenho é parente do encurtador de URL, com uma diferença central: aqui o sistema guarda o conteúdo do texto, não apenas o endereço…

01 · CONTEXTO E REQUISITOS

O que um pastebin precisa fazer

Um pastebin deixa alguém colar um bloco de texto e receber um link para compartilhá-lo; quem abre o link vê o texto. O desenho é parente do encurtador de URL, com uma diferença central: aqui o sistema guarda o conteúdo do texto, não apenas o endereço original.

No escopo e nos requisitos do livro-guia entram quatro coisas: criar o paste e receber o link, abrir o link e ver o conteúdo, apagar os pastes expirados e acompanhar estatísticas de visita. O paste não expira por padrão, mas a pessoa pode definir um prazo. O usuário é anônimo, e escolher o próprio alias fica de fora.

Entre as premissas que moldam o desenho: abrir um link deve ser rápido, o tráfego é desigual, o serviço deve ficar quase sempre no ar e o conteúdo é só texto. A análise de visitas pode ser mensal e não precisa ser em tempo real, o que a tira do caminho crítico.

02 · ESTIMATIVA DE ESCALA

Contas de guardanapo

O livro-guia assume dez milhões de escritas e cem milhões de leituras por mês, uma razão de dez leituras para cada escrita. Como um mês tem cerca de dois milhões e meio de segundos, isso dá cerca de quatro escritas e quarenta leituras por segundo, em média.

O armazenamento vem do tamanho do paste. Com 1 KB de conteúdo por paste, o livro-guia chega a cerca de 12,7 GB de conteúdo novo por mês e a 360 milhões de links curtos em três anos. São valores de uma premissa de exemplo; o que vale é o método de partir do volume mensal e chegar à taxa por segundo.

GrandezaPremissaResultado
Escritas10 milhões por mêscerca de 4 por segundo
Leituras100 milhões por mêscerca de 40 por segundo
Conteúdo novo1 KB por pastecerca de 12,7 GB por mês

03 · API E DADOS

Metadados no banco, texto no repositório de objetos

A API tem dois usos. Para criar, o cliente envia o conteúdo do paste e, opcionalmente, o prazo de expiração; a resposta devolve o link curto. Para ler, o cliente informa o link e recebe o conteúdo, a data de criação e o prazo.

No modelo de dados, cada linha da tabela de pastes guarda o link curto, que é a chave primária, o tempo de expiração, a data de criação e o caminho do conteúdo. A chave primária cria um índice que o banco usa para impor unicidade. O texto em si não fica na linha: fica fora, e a linha aponta para ele.

DecisãoOpção do livro-guiaAlternativa
MetadadosBanco relacional como grande tabela hashArmazém chave-valor NoSQL
ConteúdoRepositório de objetos gerenciadoServidor de arquivos próprio

Separar metadados e conteúdo é uma escolha de seleção de banco: o banco responde rápido a consultas pequenas por chave, e o repositório de objetos é mais adequado a blobs de texto do que linhas de tabela.

  1. O navegador envia o texto; o servidor web o encaminha à API de escrita.

    Diagrama da arquitetura: Pastebin: desenho básico
    CLNavegador
    NWServidor web (proxy reverso)
    CPAPI de escritarecebe o texto
    CPAPI de leitura
    DBBanco de metadados
    DBRepositório de objetos
  2. A API de escrita gera o link único e confere no banco se ele já existe.

    Diagrama da arquitetura: Pastebin: desenho básico
    CLNavegador
    NWServidor web (proxy reverso)
    CPAPI de escritagera o link
    CPAPI de leitura
    DBBanco de metadadosconfere duplicata
    DBRepositório de objetos
  3. Com o link livre, grava a linha de metadados no banco e o texto no repositório de objetos, e devolve o link.

    Diagrama da arquitetura: Pastebin: desenho básico
    CLNavegador
    NWServidor web (proxy reverso)
    CPAPI de escrita
    CPAPI de leitura
    DBBanco de metadadosgrava a linha
    DBRepositório de objetosgrava o texto
  4. Depois, quem abre o link cai na API de leitura, passando pelo servidor web.

    Diagrama da arquitetura: Pastebin: desenho básico
    CLNavegador
    NWServidor web (proxy reverso)
    CPAPI de escrita
    CPAPI de leiturarecebe o link
    DBBanco de metadados
    DBRepositório de objetos
  5. A API de leitura procura o link no banco; se achar, busca o texto no repositório de objetos; senão, devolve um erro.

    Diagrama da arquitetura: Pastebin: desenho básico
    CLNavegador
    NWServidor web (proxy reverso)
    CPAPI de escrita
    CPAPI de leitura
    DBBanco de metadadosacha o caminho
    DBRepositório de objetosentrega o texto

05 · EXPIRAÇÃO E ANÁLISE

TTL, limpeza e estatísticas

O TTL, tempo de vida do paste, vira duas colunas: a data de criação e o prazo em minutos. O vencimento é a soma das duas. O padrão é não expirar, e o prazo é opcional.

Para apagar o que venceu, o livro-guia propõe varrer o banco atrás das entradas cujo vencimento ficou para trás e então apagá-las ou marcá-las como expiradas.

  1. A rotina consulta o banco por pastes cujo vencimento já passou.

    Diagrama da arquitetura: Pastebin: rotina de expiração
    CPRotina de expiraçãovarre o banco
    DBBanco de metadadoslista vencidos
    DBRepositório de objetos
  2. As linhas vencidas são apagadas ou marcadas como expiradas.

    Diagrama da arquitetura: Pastebin: rotina de expiração
    CPRotina de expiração
    DBBanco de metadadoslinhas removidas
    DBRepositório de objetos
  3. Como extensão do desenho, o texto correspondente também sai do repositório de objetos.

    Diagrama da arquitetura: Pastebin: rotina de expiração
    CPRotina de expiração
    DBBanco de metadados
    DBRepositório de objetostexto removido

Para as estatísticas, como a análise em tempo real não é requisito, basta processar em lote os logs do servidor web para gerar as contagens de acesso por período. Esse resultado pode ir para um data warehouse, longe do caminho de leitura.

06 · ESCALAR

Cache, réplicas e o que ainda fica no primário

O livro-guia parte do desenho básico e vai atrás dos gargalos. Para a leitura, o tráfego de conteúdo popular deve ser atendido por um cache em memória, que também ajuda com o tráfego desigual e com picos. As réplicas de leitura cuidam das falhas de cache, desde que a replicação das escritas não as sobrecarregue.

Para a escrita, a taxa média é viável para um único primário SQL com standby; se não bastar, entram outros padrões de escala SQL. O repositório de objetos aguenta com folga o volume mensal de conteúdo novo.

  1. Um pedido de leitura chega à API de leitura.

    Diagrama da arquitetura: Pastebin: leitura com cache e réplicas
    CLNavegador
    NWServidor web (proxy reverso)
    CPAPI de escrita
    CPAPI de leiturarecebe o link
    CHCache em memória
    DBBanco primário
    DBRéplicas de leitura
    DBRepositório de objetos
  2. Se o paste é popular, o cache em memória responde e o banco nem é consultado.

    Diagrama da arquitetura: Pastebin: leitura com cache e réplicas
    CLNavegador
    NWServidor web (proxy reverso)
    CPAPI de escrita
    CPAPI de leitura
    CHCache em memóriaacerto
    DBBanco primário
    DBRéplicas de leitura
    DBRepositório de objetos
  3. Se o cache falha, a API consulta uma réplica de leitura e busca o texto no repositório de objetos.

    Diagrama da arquitetura: Pastebin: leitura com cache e réplicas
    CLNavegador
    NWServidor web (proxy reverso)
    CPAPI de escrita
    CPAPI de leitura
    CHCache em memória
    DBBanco primário
    DBRéplicas de leiturafalha de cache
    DBRepositório de objetosentrega o texto
  4. As escritas vão ao primário, que replica para as réplicas; escrita demais na replicação pode atrasá-las.

    Diagrama da arquitetura: Pastebin: leitura com cache e réplicas
    CLNavegador
    NWServidor web (proxy reverso)
    CPAPI de escrita
    CPAPI de leitura
    CHCache em memória
    DBBanco primáriorecebe escritas
    DBRéplicas de leiturareplicação
    DBRepositório de objetos

Perguntas frequentes

O que é Pastebin?

Projeto de entrevista clássico. Pontos centrais: expiração por TTL e geração de IDs únicos.

O que o design de Pastebin cobre?

Ele está organizado nestas seções: O que um pastebin precisa fazer, Contas de guardanapo, Metadados no banco, texto no repositório de objetos, Hash, base62 e a checagem de duplicata, TTL, limpeza e estatísticas e Cache, réplicas e o que ainda fica no primário.

Quanto tempo leva Pastebin e qual é o nível?

Leva cerca de 11 minutos para ler e tem nível Júnior.

Agora projete você mesmo

Rode este caso como uma entrevista na escola de System Design: você toma as decisões, o tutor as questiona e você vê a nota do seu desenho.