Em meados de 2019, o data warehouse do SoundCloud era o resultado de seis anos de decisões que já não faziam sentido: uma única equipe pequena era responsável por mais de 100 pipelines de ETL no Amazon Redshift, a maioria com pouca documentação e com inconsistências entre si, de modo que as equipes de negócios e de produto não conseguiam fazer self-service de dados de forma confiável. Um contrato para migrar para o Google BigQuery deu à equipe um motivo para começar do zero, mas uma tentativa anterior de migração do tipo "lift and shift", no início de 2018, já havia sido abortada uma vez.

A nova equipe Data Corpus escreveu uma declaração de missão e seis princípios de governança antes de reconstruir as tabelas: qualidade, conformidade, pontualidade, usabilidade, eficiência e manutenibilidade, adaptados de uma norma ISO. Qualidade significava uma ferramenta que compara uma nova versão de ETL com a versão implantada, para que apenas a mudança pretendida apareça. Pontualidade significava mapear os horários de chegada de cada ETL e de suas dependências; desacoplar uma tabela necessária de outra mais lenta e sem relação removeu quatro horas do pipeline. Manutenibilidade significava um "princípio dos 80 por cento": construir para a maior parte das solicitações, não para os casos extremos.

A reconstrução aconteceu em etapas: uma versão intermediária do Corpus, em dezembro de 2019, ainda lia do warehouse antigo; o Corpus Alpha, em abril de 2020, foi a primeira versão totalmente independente dele; e o Corpus 1.0, em julho de 2020, foi a primeira versão a satisfazer todos os seis princípios. Com o Corpus 2.2, em abril de 2021, o projeto resultante no BigQuery usava cerca de 90 por cento menos armazenamento do que os dados brutos que lia, enquanto as partes interessadas com SQL básico conseguiam fazer self-service da maioria das perguntas por meio de tabelas documentadas e descritas.

Escrever os princípios de governança antes de escrever uma única tabela

A comparação automatizada de versões transforma a pergunta "essa mudança quebrou algo a jusante?" de um julgamento subjetivo na revisão de código em uma verificação mecânica executada a cada atualização de ETL.

O princípio dos 80 por cento deu à equipe uma resposta permanente para os debates sobre aumento de escopo, de modo que as tabelas permaneceram simples o suficiente para que não especialistas as consultassem, em vez de acumular complexidade de casos extremos.

Mapear as dependências e os horários de chegada dos ETLs transformou uma queixa vaga de que "os dados às vezes atrasam" em uma correção específica, desacoplando duas tabelas, com uma melhoria medida de quatro horas.

Lançar em versões por etapas ao longo de aproximadamente 18 meses, cada uma avaliada segundo os mesmos seis princípios, permitiu que a equipe aprendesse os recursos do BigQuery antes das decisões de design mais difíceis de reverter.

Quando você migra um sistema que cresceu sem documentação, escreva os princípios que impedem que o novo sistema apodreça da mesma forma e, em seguida, transforme cada um deles em uma verificação automatizada, não em uma diretriz que ninguém aplica.

O SoundCloud continuou lançando outras versões do Corpus após a 2.2, ampliando a cobertura de tabelas à medida que o produto evoluía, em vez de tratar o modelo de governança como uma entrega única de migração. A equipe enquadra o Corpus como um projeto em evolução contínua e espera explicitamente que o design atual venha a parecer tão desatualizado quanto o warehouse anterior à migração, mantendo os mesmos princípios como estrutura permanente para decidir quando alterá-lo.

CONFIRA AS EVIDÊNCIAS

As fontes

  1. The Journey of Corpus SoundCloud Engineering · developers.soundcloud.com ·