Na maioria dos dias, mantenho uma aba aberta que só mostra a contagem de fontes. Nada de bonito — sem gráficos, sem filtros, apenas um número ao lado de cada um dos 1.375 sites dos quais coletamos anúncios, e um horário indicando a última vez que cada um deu sinal de vida. Na maior parte dos dias, é tediosa da forma como infraestrutura deveria ser tediosa. Neste verão, não foi assim, e acho que a história do que deu errado é mais útil para você, como alguém em busca de um carro, do que a maioria dos conselhos de "como comprar um carro usado" que poderíamos escrever em vez disso. Trata-se do que "dados ao vivo" realmente significam quando aquilo que os alimenta são 1.375 sites diferentes que não devem nada a você.
Meados de julho: o número do qual eu me orgulhava
Em meados de julho, tínhamos elevado o registro de fontes para 1.190 fontes em 73 regiões — resultado de algumas semanas reconciliando entradas duplicadas e links mortos que vinham inflando silenciosamente nossa própria contagem. Lembro de pensar que 1.190 fontes reais e ativas era motivo de orgulho. São muitos sites de concessionárias individuais, portais de classificados e feeds de leilão, cada um com sua própria estrutura de HTML, seus próprios limites de taxa, sua própria opinião sobre se um scraper é um cliente ou um ataque.
Então uma campanha de backlog que vínhamos executando — trabalhando em uma lista de espera de 683 fontes que estavam adiadas há meses, algumas bloqueadas, outras simplesmente nunca construídas — começou a dar frutos. Ao longo da segunda metade de julho, 274 dessas foram construídas e integradas. No fim do mês, a contagem em funcionamento havia subido para 1.464. É o tipo de semana que você tira print.
Início de agosto: 241 fontes, desaparecidas
Depois veio o número que arruína sua semana: da noite para o dia, 241 fontes caíram em estado degradado. Não por nada que fizemos — a conta do nosso provedor de proxies havia expirado no lado do faturamento, e uma enorme fatia do nosso tráfego passa por IPs rotativos justamente para não sermos bloqueados por sites que limitam scrapers. Sem proxies, sem páginas novas, sem anúncios novos. As fontes não anunciam que estão quebradas; simplesmente param, silenciosamente, de retornar dados novos, enquanto seus anúncios antigos ficam ali parecendo atuais.
Essa é a parte que não aparece na contagem de anúncios de nenhum site de carros, incluindo o nosso, a menos que você vá procurar: um mercado "ao vivo" pode ter linhas obsoletas sentadas ao lado de linhas recentes e parecer idêntico visto de fora. Condicionamos os novos disparos de rastreamento a uma verificação real de saúde do proxy, para que um pool morto não pudesse degradar ainda mais a qualidade silenciosamente, e pausamos as partes da programação que piorariam a situação. Não é um trabalho glamoroso. É o tipo de coisa que, se você nunca ouve falar dela, significa que alguém fez o seu trabalho.
Um comentário à parte, porque vale a pena dizer com todas as letras: qualquer site que afirme ter um número fixo e redondo de anúncios todos os dias, ou não está realmente ao vivo, ou não está contando a você sobre semanas como esta.
O congelamento
A renovação do proxy resolveu a maior parte do problema. O que eu não esperava era que o próprio crawler travasse algumas semanas depois — um deadlock de encerramento, com dezoito das dezenove threads de trabalho paradas em futex_wait, zero CPU consumida, por 75 horas seguidas. Sem falha, sem log de erro gritando para ninguém. Só... nada acontecendo, enquanto o painel continuava mostrando a última passagem bem-sucedida como se fosse atual. Ainda não tínhamos instalado um watchdog naquele host específico, que é o tipo de frase que só se escreve depois que aquilo que ela descreve já aconteceu com você uma vez.
Construímos o watchdog. Pausamos a programação até que a renovação do proxy fosse confirmada como estável, em vez de arriscar que um rastreamento parcialmente degradado substituísse silenciosamente linhas boas por ruins — uma fonte rastreada tem seus anúncios substituídos, não mesclados, então uma passagem ruim não apenas deixa de adicionar dados, ela pode ativamente apagar linhas boas e colocar linhas piores no lugar. Essa assimetria é o motivo pelo qual preferimos operar com dados obsoletos por um dia do que operar de forma degradada.
Onde o número parou
Aqui está a contagem de hoje, e o formato das seis semanas que nos trouxeram até aqui:
Chegamos a 1.375 fontes em 73 regiões, alimentando 1.108.535 anúncios ao vivo, com 12.823 atualmente sinalizados como precificados abaixo do seu grupo regional. Isso é cerca de 90 fontes a menos do que o pico de julho — algumas das 241 degradadas nunca voltaram totalmente, um punhado eram sites que, nesse meio tempo, haviam mudado sua postura anti-bot e precisavam ser reconstruídos, não apenas reconectados. Ainda estamos trabalhando em algumas delas.
O que isso realmente vale para você
Nada disso muda qual carro você deveria comprar. Mas deveria mudar como você lê qualquer número de "estoque ao vivo" em qualquer site de carros, não só o nosso. A França está no topo da nossa contagem regional no momento, com 67.569 anúncios, o Japão logo atrás, com 61.940, e esses números se movem — não porque o próprio mercado de carros usados oscile tão rápido, mas porque a infraestrutura que o observa oscila. Um anúncio que está três dias desatualizado porque uma fonte estava degradada parece exatamente como um anúncio recente, a menos que a plataforma seja honesta sobre a diferença.
Preferimos contar a você sobre o congelamento de 75 horas do que fingir que nosso número nunca oscila. Um conjunto de dados que nunca admite ter tido uma semana ruim é um conjunto de dados do qual você deveria desconfiar mais, não menos.



