Pular para o conteúdo

Design clássico · Pleno

Rastreador de preços (CamelCamelCamel)

Projeto de entrevista clássico. Pontos centrais: agendamento de jobs e alertas de preço.

14 min de leitura · Conteúdo revisado em 23 de outubro de 2026

Resposta curta

Projeto de entrevista clássico. Pontos centrais: agendamento de jobs e alertas de preço. O CamelCamelCamel é um serviço que acompanha os preços de produtos da Amazon ao longo do tempo e avisa a pessoa quando o preço cai abaixo do limite que ela definiu.

01 · CONTEXTO

O que o rastreador precisa fazer

O CamelCamelCamel é um serviço que acompanha os preços de produtos da Amazon ao longo do tempo e avisa a pessoa quando o preço cai abaixo do limite que ela definiu. A fonte descreve também uma extensão de navegador popular, com um milhão de usuários ativos, que mostra o histórico dentro da página do produto e permite assinar o aviso com um clique.

Os requisitos funcionais centrais são dois: ver o histórico de preços de um produto e assinar avisos de queda com um limite. Os dois precisam funcionar pelo site e pela extensão. Este é um bom exercício de levantamento de requisitos.

Ficam fora do escopo a busca e descoberta de produtos na plataforma, a comparação de preços entre varejistas e a integração de avaliações e notas.

02 · REQUISITOS NÃO FUNCIONAIS

Escala, latência e ser educado com a Amazon

A fonte fixa quatro metas: priorizar disponibilidade sobre consistência, aceitando consistência eventual; lidar com 500 milhões de produtos da Amazon; responder consultas de histórico em menos de 500 ms; e entregar avisos de queda em até 1 hora depois da mudança de preço.

RequisitoComo a fonte formula
DisponibilidadePriorizar disponibilidade sobre consistência; consistência eventual é aceitável.
EscalaLidar com 500 milhões de produtos da Amazon.
Consulta de históricoConsultas de histórico de preços em menos de 500 ms.
AvisosAvisos de queda entregues em até 1 hora após a mudança de preço.
Fora do escopoConsistência forte para dados de preço e atualizações de preço em tempo real, abaixo de um minuto.

A fonte resume a tensão do problema numa frase: o sistema precisa ser educado com a Amazon e, ao mesmo tempo, entregar rastreamento de preços útil a milhões de usuários.

03 · DESENHO DE ALTO NÍVEL

Do histórico à assinatura

Uma proposta de alto nível separa três caminhos: ler o histórico, registrar a assinatura e coletar preços. Os dados de preço formam uma série no tempo, o que combina com o tópico de séries temporais. A coleta roda de forma assíncrona em relação às consultas dos usuários, com pipeline de dados e filas de mensagens.

  1. No desenho proposto, o site e a extensão falam com a mesma API, que encaminha cada pedido ao serviço certo.

    Diagrama da arquitetura: Rastreador de preços: visão geral
    CLSite e extensãosite e extensão
    NWAPI do rastreador
    CPServiço de histórico
    DBHistórico de preços
    CPServiço de assinaturas
    DBAssinaturas e limites
    CPAgendador de coletas
    QFila de coletas
    CPColetores
    CPAmazon (fonte externa)
  2. A leitura do histórico passa pelo serviço de histórico, que consulta o armazenamento de séries de preço.

    Diagrama da arquitetura: Rastreador de preços: visão geral
    CLSite e extensão
    NWAPI do rastreador
    CPServiço de histórico
    DBHistórico de preçosséries de preço
    CPServiço de assinaturas
    DBAssinaturas e limites
    CPAgendador de coletas
    QFila de coletas
    CPColetores
    CPAmazon (fonte externa)
  3. A assinatura segue outro caminho: o serviço de assinaturas grava o limite escolhido num banco relacional.

    Diagrama da arquitetura: Rastreador de preços: visão geral
    CLSite e extensão
    NWAPI do rastreador
    CPServiço de histórico
    DBHistórico de preços
    CPServiço de assinaturas
    DBAssinaturas e limiteslimites
    CPAgendador de coletas
    QFila de coletas
    CPColetores
    CPAmazon (fonte externa)
  4. A coleta é um caminho à parte: o agendador coloca pedidos na fila e os coletores os consomem.

    Diagrama da arquitetura: Rastreador de preços: visão geral
    CLSite e extensão
    NWAPI do rastreador
    CPServiço de histórico
    DBHistórico de preços
    CPServiço de assinaturas
    DBAssinaturas e limites
    CPAgendador de coletasagenda
    QFila de coletaspedidos
    CPColetores
    CPAmazon (fonte externa)
  5. Cada coletor consulta a fonte externa e grava o preço observado no histórico, sem passar pelas consultas dos usuários.

    Diagrama da arquitetura: Rastreador de preços: visão geral
    CLSite e extensão
    NWAPI do rastreador
    CPServiço de histórico
    DBHistórico de preços
    CPServiço de assinaturas
    DBAssinaturas e limites
    CPAgendador de coletas
    QFila de coletas
    CPColetorespreço observado
    CPAmazon (fonte externa)

04 · APROFUNDAMENTOS

As quatro perguntas difíceis

A página pública lista quatro aprofundamentos: como descobrir e rastrear 500 milhões de produtos de forma eficiente; como lidar com atualizações de preço potencialmente maliciosas vindas de usuários da extensão; como processar mudanças de preço e avisar os inscritos; e como servir consultas rápidas de histórico para gerar gráficos.

O texto completo da fonte, com as respostas, exige assinatura Premium. Por isso, o restante deste caso trata as quatro perguntas como raciocínio de estudo e não atribui soluções à fonte.

05 · RACIOCÍNIO

Como atacar cada pergunta

Cobertura e ritmo de coleta: para varrer um catálogo enorme sem sobrecarregar a origem, o agendador decide quais produtos verificar e com que frequência, e os coletores limitam o ritmo de pedidos. Produtos com muitas assinaturas ou preço volátil podem ser verificados com mais frequência do que os pouco procurados.

Relatos da extensão: um preço reportado por um usuário é um dado de origem não confiável. Uma abordagem é tratá-lo como sinal, comparando-o com a coleta própria e com relatos de outros usuários antes de gravá-lo como observação.

  1. O cliente pede o histórico de um produto pela API.

    Diagrama da arquitetura: Rastreador de preços: leitura e relatos
    CLSite e extensãopede gráfico
    NWAPI do rastreador
    CPServiço de histórico
    CHCache de históricos
    CPValidador de relatos
    DBHistórico de preços
  2. O serviço de histórico olha primeiro no cache de séries já montadas.

    Diagrama da arquitetura: Rastreador de preços: leitura e relatos
    CLSite e extensão
    NWAPI do rastreador
    CPServiço de histórico
    CHCache de históricosséries quentes
    CPValidador de relatos
    DBHistórico de preços
  3. Quando a série não está no cache, o serviço a lê do armazenamento de preços.

    Diagrama da arquitetura: Rastreador de preços: leitura e relatos
    CLSite e extensão
    NWAPI do rastreador
    CPServiço de histórico
    CHCache de históricos
    CPValidador de relatos
    DBHistórico de preçosfonte da série
  4. Um preço reportado pela extensão passa pelo validador antes de chegar ao armazenamento.

    Diagrama da arquitetura: Rastreador de preços: leitura e relatos
    CLSite e extensão
    NWAPI do rastreador
    CPServiço de histórico
    CHCache de históricos
    CPValidador de relatosfiltra relatos
    DBHistórico de preços

Avisos: cada mudança de preço gravada vira um evento; avaliadores comparam o novo preço com os limites cadastrados e pedem o envio por uma fila separada. Esse desenho usa o padrão de filas de mensagens.

  1. Cada preço novo gravado no histórico vira um evento de mudança numa fila.

    Diagrama da arquitetura: Rastreador de preços: avisos de queda
    DBHistórico de preçosnovo preço
    QFila de mudanças de preço
    CPAvaliador de limites
    DBAssinaturas e limites
    QFila de avisos
    CPEnviador de avisos
    CLUsuário inscrito
  2. O avaliador de limites consome o evento de mudança.

    Diagrama da arquitetura: Rastreador de preços: avisos de queda
    DBHistórico de preços
    QFila de mudanças de preço
    CPAvaliador de limitesavalia
    DBAssinaturas e limites
    QFila de avisos
    CPEnviador de avisos
    CLUsuário inscrito
  3. Para decidir, o avaliador consulta as assinaturas e os limites do produto.

    Diagrama da arquitetura: Rastreador de preços: avisos de queda
    DBHistórico de preços
    QFila de mudanças de preço
    CPAvaliador de limites
    DBAssinaturas e limiteslimites
    QFila de avisos
    CPEnviador de avisos
    CLUsuário inscrito
  4. Quando um limite é atingido, o pedido de aviso segue por uma fila própria até o enviador e chega ao usuário.

    Diagrama da arquitetura: Rastreador de preços: avisos de queda
    DBHistórico de preços
    QFila de mudanças de preço
    CPAvaliador de limites
    DBAssinaturas e limites
    QFila de avisosavisos
    CPEnviador de avisos
    CLUsuário inscritoaviso recebido

Perguntas frequentes

O que é Rastreador de preços (CamelCamelCamel)?

Projeto de entrevista clássico. Pontos centrais: agendamento de jobs e alertas de preço.

O que o design de Rastreador de preços (CamelCamelCamel) cobre?

Ele está organizado nestas seções: O que o rastreador precisa fazer, Escala, latência e ser educado com a Amazon, Do histórico à assinatura, As quatro perguntas difíceis e Como atacar cada pergunta.

Quanto tempo leva Rastreador de preços (CamelCamelCamel) e qual é o nível?

Leva cerca de 14 minutos para ler e tem nível Pleno.

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.