À la mi-2019, l'entrepôt de données de SoundCloud représentait six années de décisions qui n'avaient plus de sens : une seule petite équipe possédait plus de 100 pipelines ETL sur Amazon Redshift, la plupart peu documentés et présentant des incohérences entre eux, si bien que les équipes métier et produit ne pouvaient pas exploiter les données de manière fiable en autonomie. Un contrat pour migrer vers Google BigQuery a donné à l'équipe une raison de repartir de zéro, mais une première tentative de migration de type « lift and shift » au début de 2018 avait déjà été abandonnée une fois.
La nouvelle équipe Data Corpus a rédigé un énoncé de mission et six principes de gouvernance avant de reconstruire les tables : qualité, conformité, actualité, facilité d'utilisation, efficacité, maintenabilité, adaptés d'une norme ISO. La qualité signifiait un outil qui compare une nouvelle version d'ETL à celle déployée afin que seule la modification prévue apparaisse. L'actualité signifiait cartographier les heures d'arrivée de chaque ETL et de ses dépendances ; découpler une table nécessaire d'une autre table plus lente sans rapport a retiré quatre heures au pipeline. La maintenabilité signifiait un « principe des 80 pour cent » : construire pour la majorité des demandes, pas pour les cas limites.
La reconstruction s'est faite par étapes : une version intermédiaire de Corpus en décembre 2019 lisait encore depuis l'ancien entrepôt, Corpus Alpha en avril 2020 a été la première version entièrement indépendante de celui-ci, et Corpus 1.0 en juillet 2020 a été la première version satisfaisant les six principes. Avec Corpus 2.2 en avril 2021, le projet BigQuery résultant utilisait environ 90 pour cent de stockage en moins que les données brutes qu'il lisait, tandis que les parties prenantes maîtrisant le SQL de base pouvaient répondre elles-mêmes à la plupart des questions grâce à des tables documentées et décrites.
Écrire les principes de gouvernance avant d'écrire la moindre table
La comparaison automatisée des versions transforme la question « cette modification a-t-elle cassé quelque chose en aval » d'un jugement lors de la revue de code en une vérification mécanique exécutée à chaque mise à jour d'ETL.
Le principe des 80 pour cent a donné à l'équipe une réponse permanente aux débats sur la dérive du périmètre, de sorte que les tables sont restées assez simples pour que des non-experts puissent les interroger au lieu d'accumuler de la complexité liée aux cas limites.
La cartographie des dépendances et des heures d'arrivée des ETL a transformé une plainte vague du type « les données sont parfois en retard » en une correction précise, le découplage de deux tables, avec une amélioration mesurée de quatre heures.
Des versions publiées par étapes sur environ 18 mois, chacune évaluée selon les mêmes six principes, ont permis à l'équipe d'apprendre les fonctionnalités de BigQuery avant de prendre les décisions de conception les plus difficiles à inverser.
Lorsque vous migrez un système qui s'est développé sans documentation, écrivez les principes qui empêcheront le nouveau de se dégrader de la même manière, puis transformez chacun en vérification automatisée, et non en une ligne directrice que personne n'applique.
SoundCloud a continué à publier d'autres versions de Corpus après la 2.2, étendant la couverture des tables à mesure que le produit évoluait plutôt que de traiter le modèle de gouvernance comme un livrable de migration ponctuel. L'équipe présente Corpus comme un projet en évolution continue et s'attend explicitement à ce que la conception actuelle finisse par paraître aussi obsolète que l'entrepôt d'avant la migration, en conservant les mêmes principes comme cadre permanent pour décider quand la modifier.
VÉRIFIEZ LES SOURCES
Les sources
- The Journey of Corpus SoundCloud Engineering · developers.soundcloud.com ·