Chaque release Azure Data Factory tourne-t-elle à la bataille de templates ARM ?

Sous l'éditeur visuel, une Azure Data Factory est du JSON : pipelines, datasets, linked services et le template ARM qui les déploie. Faire passer un changement de Dev à Prod implique des fichiers de paramètres, des paramètres globaux et un template qui échoue sur une seule incohérence de type. Les releases devraient être générées à partir d'un modèle, rollback inclus.

Chaque release Azure Data Factory tourne-t-elle à la bataille de templates ARM ?

La plateforme d'automatisation de data warehouse à laquelle les équipes data font confiance

Cela vous semble familier ?

  • Une release vers Prod échoue à l'étape de déploiement ARM, et le correctif est un fichier de paramètres que personne ne se souvient d'avoir modifié.
  • Dev, Test et Prod ont chacun une configuration de linked services légèrement différente, maintenue à la main en trois endroits.
  • Une définition de dataset a changé dans un pipeline et en a cassé un autre, parce que les deux la référençaient et qu'un seul a été testé.
  • Revenir en arrière signifie redéployer le template ARM précédent et espérer que les datasets qu'il référence existent encore.

Azure Data Factory cache bien son JSON jusqu’au jour d’une release. Ce jour-là, le template ARM, les fichiers de paramètres, les paramètres globaux et les surcharges de linked services apparaissent tous d’un coup, et une seule incohérence de type bloque le déploiement jusqu’à ce que quelqu’un la trouve.

Pourquoi les releases sont fragiles

  • Le pipeline est du JSON, que vous le voyiez ou non. L’éditeur visuel écrit des définitions de pipeline, de dataset et de linked service, et la publication les compile en template ARM. Certaines équipes l’encapsulent dans Bicep ; l’artefact en dessous est le même.
  • Les environnements sont des fichiers de paramètres. Dev, Test et Prod diffèrent par leurs chaînes de connexion, leurs clés et leurs noms, et ces différences se trouvent dans des fichiers maintenus à la main.
  • Les dépendances sont implicites. Les datasets et les linked services sont partagés entre les pipelines ; en changer un pour un pipeline que vous avez testé le change pour ceux que vous n’avez pas testés.
  • Le rollback est un redéploiement. Revenir en arrière suppose de redéployer le template précédent, et tout ce qu’il référence doit encore exister.

ADF fait ce qu’une ressource Azure fait : il se déploie comme un template. Les templates sont faits pour provisionner de l’infrastructure statique, des comptes de stockage et des réseaux. Un schéma d’entrepôt possède un état et change à chaque release, ce qui ne correspond pas à ce que cet outil sait faire.

Où la gestion des releases devrait se situer

  • Dans le générateur. Si l’entrepôt vient d’un modèle, une release est la différence entre deux états de ce modèle, et l’outil sait de quoi chaque différence dépend.
  • Avec le rollback inclus. Une release générée sait ce qu’elle a changé, donc le script inverse existe avant que la release ne s’exécute.
  • Comparée, pas espérée. La différence entre Test et Prod devrait être un rapport, pas une découverte.

Ce qui change avec Datavault Builder

Datavault Builder construit une release en comparant deux états, avec le support de Git et Gitflow intégré. Un état est votre environnement local, un état stocké dans Git, un autre environnement actif, un fichier zip ou un dossier ; la comparaison liste les différences, et vous choisissez lesquelles déployer.

  • Pas de template à maintenir. La release est l’ensemble des différences que vous avez sélectionnées, généré pour l’environnement cible. Sélectionnez un produit de données et l’outil propose le hub, le satellite, la table de staging et la source dont il a besoin.
  • Le rollback est généré avec elle. Chaque release porte son inverse, et la version du modèle à laquelle elle appartient.
  • Les environnements sont comparés, pas espérés. Ce que Prod est sur le point de recevoir est la liste des différences entre son état et celui que vous déployez.
  • La dérive des sources ne nécessite pas de release. Les colonnes manquantes se chargent à null avec un avertissement, les colonnes dont la taille augmente sont élargies, les nouvelles colonnes sont une mise à jour de mapping.
  • Votre outillage CI reste en place. Azure DevOps ou GitHub Actions exécutent le package généré ; ils n’ont plus à comprendre l’entrepôt.

Ce qu’il faut décider

Auditez le processus de release et comptez deux choses : les fichiers de paramètres et les surcharges par environnement qu’il maintient, et les releases du dernier trimestre qui ont échoué à l’étape du template. C’est la maintenance qu’une release générée supprime.

Voyez-le fonctionner sur l'une de vos sources

Réservez une démo gratuite et apportez le connecteur qui vous coûte le plus cher, en argent ou en temps.

Trois étapes vers un pipeline que vous maîtrisez

  1. Séparer le modèle du déploiement

    La structure de l’entrepôt est un modèle. Le déploiement est un script généré pour un environnement cible, pas un template tenu à la main.

  2. Générer la release

    Datavault Builder compare deux états, sélectionne les différences à déployer, et propose les dépendances dont chacune a besoin. Le rollback est fourni avec.

  3. Comparer avant de déployer

    Deux états quelconques peuvent être comparés : votre environnement local, un état dans Git, un autre environnement actif, un fichier zip ou un dossier.

Comment Datavault Builder supprime les frictions de l'ingestion

  • L'ingestion est intégrée

    Chargements batch, delta et CDC depuis les bases de données, les fichiers, les API REST, les sources NoSQL et Python, les flux comme Kafka arrivant en micro-batches. La même plateforme qui génère le warehouse, sans seconde facture.

  • Votre schéma, pas celui du fournisseur

    Les tables source sont mappées vers un modèle Data Vault 2.0 que vous avez conçu. Une nouvelle colonne ou une table renommée change un mapping, pas une chaîne de scripts post-chargement.

  • Seuls les deltas circulent

    Les Hubs, Links et Satellites chargent ce qui a changé. Les rechargements complets restent en staging au lieu d’être retraités en aval chaque nuit.

  • L'historique est conservé par conception

    Chaque changement est conservé tel qu’il arrive, donc le reporting historique fonctionne même là où la source écrase ses propres lignes.

  • Du code que vous n'écrivez jamais

    Le chargement, l’historisation et la traçabilité sont générés depuis le modèle en temps réel et s’exécutent nativement sur Snowflake, Databricks, BigQuery, SQL Server, Fabric, Oracle ou PostgreSQL.

  • Une plateforme, jusqu'à neuf outils en moins

    Modélisation, ETL, CI/CD, documentation et traçabilité au même endroit. C’est ce qui rend possible les 14,7 minutes entre le besoin et la production.

Reconnu par BARC dans The Data Fabric Survey 26

Rencontrez notre expert

Vingt minutes avec notre Sales Director et une réponse honnête sur l’adéquation avec votre stack.

Matt Collett

Matt Collett

Sales Director

Que recherchez-vous ?

En soumettant, vous acceptez notre Politique de confidentialité.

Les autres problèmes traités par cette série

  • Attaché à un seul cloud

    Les limites d'Azure Data Factory : le coût caché des pipelines assemblés à la main et des transformations Spark

    Azure Data Factory est une bonne couche de transport dans Azure et un mauvais endroit où loger un entrepôt de données. Utilisé comme suite de modélisation et de transformation, il apporte un canvas que personne ne sait lire, des releases qui échouent sur les templates ARM et des clusters Spark pour des chargements qui tiennent en une instruction SQL. Et chacun de ces pipelines n’existe que dans Azure.

  • Coût des Mapping Data Flows

    Les Mapping Data Flows d'Azure Data Factory coûtent-ils plus cher que les données qu'ils déplacent ?

    Les Mapping Data Flows tournent sur un cluster Spark managé qui met plusieurs minutes à démarrer et se facture à l’heure de vCore. Pour une grosse transformation nocturne, c’est un choix raisonnable. Pour quelques centaines de milliers de lignes, c’est un cluster démarré pour faire ce qu’une seule instruction SQL ferait à l’intérieur de l’entrepôt.

  • Pipelines visuels à grande échelle

    Votre canvas Azure Data Factory est-il devenu trop grand pour ceux qui l'ont construit ?

    Un pipeline en glisser-déposer est rapide à construire et lent à changer. Au-delà de quelques dizaines d’activités, le canvas devient la documentation, le câblage prend le pas sur la logique, et chaque nouvelle source est une copy activity de plus que personne ne veut toucher. La solution n’est pas un canvas plus ordonné. C’est un modèle qui génère les pipelines.

Questions et réponses