- Compiler Explorer inicialmente usava uma abordagem de armazenar todo o estado diretamente na URL
- Conforme as URLs ficavam longas demais, foi adotado o serviço de encurtamento de URL goo.gl, do Google, o que acabou criando uma complexidade com vários redirecionamentos
- Desde 2018, por causa do problema de limite de tamanho das URLs e da dificuldade de manutenção, a estrutura foi migrada para um armazenamento próprio baseado em S3 e DynamoDB
- Porém, como o Google encerrará o serviço goo.gl em agosto de 2025, a situação passou a exigir que a persistência dos links antigos fosse gerenciada pelo próprio projeto
- Até o momento, mais de 12.000 links legados foram resgatados, mostrando a importância da preservação do conhecimento em programação e da operação sustentável de serviços
Garantia permanente e história dos links do Compiler Explorer
Modelo inicial e por que o goo.gl foi adotado
- Em 2012, o Compiler Explorer adotou uma estrutura que codificava diretamente na URL todo o estado do compilador
- À medida que a quantidade de informação de estado aumentava, surgiu o problema de URLs excessivamente longas
- Para encurtar as URLs, em 2014 foi aplicado o serviço de encurtamento goo.gl, do Google
- Ele oferecia links curtos no formato
goo.gl/abc123, que ao serem clicados redirecionavam para a URL longa original e restauravam o estado
- O Stack Overflow passou a proibir o uso de links encurtados em 2016, o que impôs limitações ao modelo existente
- Todos os links baseados em goo.gl foram afetados por causa do risco de ocultar links maliciosos
- Como não se queria armazenar dados de usuários, foi criado como solução temporária um caminho próprio no formato
godbolt.org/g/abc123
- Ao acessar
godbolt.org/g/abc123, havia novo redirecionamento para goo.gl/abc123
- Desse ponto, o fluxo retornava por fim para a URL longa do
godbolt.org
- Com vários redirecionamentos, a estrutura acabou ficando complexa
- Depois, o uso da API do Google simplificou parte desse processo de redirecionamento
Introdução do armazenamento próprio e gestão dos links
- A partir de 2018, os limites de tamanho de URL e o incômodo da compressão de dados passaram a ser problemas frequentes
- Foi implementada uma estrutura própria usando S3 e DynamoDB
- Os valores de entrada eram transformados em hash e armazenados no S3 como documentos JSON
- Ao acessar um link curto (
godbolt.org/z/hashbit), o mapeamento era consultado no DynamoDB
- Foi implementada uma verificação para contornar casos em que o valor do hash contivesse palavrões ou termos inadequados, adicionando um elemento aleatório
- Isso tratou o problema de links baseados em hash com conteúdo impróprio e houve bugs relacionados no caminho (por exemplo, issue #1297)
- O formato de endereço
godbolt.org/g/abc123 continua sendo suportado até hoje
- Apesar do anúncio oficial do Google, o serviço goo.gl entrou em modo somente leitura e será encerrado por completo em agosto de 2025
- Links curtos baseados em goo.gl deixarão de poder ser resolvidos
- Como o formato
godbolt.org/g/abc123 pode ter sua vida útil estendida por gestão direta, foi iniciado um trabalho estruturado de resgate desses links
Coleta em massa de links legados e trabalho de arquivamento
- Recentemente, foi feito um rastreamento e banco de dados de links legados a partir de todas as fontes possíveis (busca, dumps de dados, logs da web etc.)
- API de busca na web do Google
- API do GitHub
- Logs do próprio servidor
- Dump de dados do Stack Overflow no archive.org
- Dados de páginas web arquivadas no Archive.org
- Cerca de 12.298 links curtos foram recuperados com sucesso
- Internamente, o projeto passou a usar seu próprio banco de dados de links no lugar do goo.gl (PR relacionada: #7724)
- Também pretende continuar coletando e preservando links
godbolt.org/g/abc123 que ainda não tenham sido encontrados
- Se a comunidade ainda tiver links não registrados, a recomendação é acessá-los diretamente ou avisar os administradores para complementar o banco de dados
Filosofia do projeto e a importância de possuir a própria infraestrutura
- Este caso mostrou o risco de depender apenas da continuidade de serviços externos (como o Google) para infraestrutura crítica
- O gerenciamento de links curtos e a estrutura de backup eram medidas temporárias, e prometer URLs realmente permanentes exige administrar diretamente todo o serviço
- No processo de resgatar links legados antigos, quase como uma arqueologia digital, ficou claro que cada link é um vestígio do compartilhamento de conhecimento, de perguntas e de explicações de conceitos feitas por alguém
- Esse trabalho de armazenamento e preservação está ligado também ao arquivamento da história da comunidade de programação
- Se você encontrar um link antigo do Compiler Explorer, clicar nele agora também é uma forma de contribuir para a preservação do conhecimento na internet
- Desta vez, ao depender de uma infraestrutura sob controle direto, e não de terceiros, tornou-se possível cumprir a promessa de garantir sua continuidade
Disclaimer
- Este texto foi escrito por uma pessoa, e LLMs foram usados no processo de sugestão de links e revisão gramatical
1 comentários
Comentários no Hacker News
Uniform Resource Locator; esse problema já era reconhecido, e por isso o Digital Object Identifier foi inventado em 1997