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.
Azure Data Factory est l’outil par défaut dans chaque parc Azure et il mérite cette position en tant que couche de transport : Copy Activities, déclencheurs, déplacement de fichiers entre services. Les problèmes commencent quand il devient aussi la couche de modélisation et de transformation, et ils apparaissent à trois endroits qui ont chacun leur propre article dans cette série.
Trois obstacles, une seule cause
- Le canvas. Des centaines d’activités reliées à la main, copiées source par source, que personne ne comprend en dehors de ceux qui les ont construites. Voir l’article sur les pipelines visuels à grande échelle.
- La release. Des templates ARM, des fichiers de paramètres par environnement, et un déploiement qui échoue sur une seule incohérence de type. Voir l’article sur les déploiements JSON.
- La facture Spark. Les Mapping Data Flows démarrent un cluster managé à chaque exécution, pour des chargements qui tiennent en une instruction SQL dans l’entrepôt. Voir l’article sur le coût des Mapping Data Flows.
Ces trois obstacles viennent de la même décision : la structure de l’entrepôt est exprimée sous forme de configuration de pipelines dans un service cloud, au lieu d’un modèle qui génère les pipelines.
Le quatrième obstacle : vous ne pouvez pas changer de cloud
Un pipeline ADF est une ressource Azure. Il n’en existe aucune version qui tourne sur AWS ou GCP, et Fabric Data Factory, le successeur de Microsoft, est tout aussi lié à Azure. Cela ne pose aucun problème tant que le parc est Azure et le reste. Cela devient une réécriture le jour où une fusion, une décision d’achat ou une politique multicloud en décide autrement, parce que la logique de transformation est liée au cloud, et non à l’entrepôt. Un entrepôt décrit dans un modèle n’a pas ce lien : le SQL généré s’exécute là où l’entrepôt s’exécute.
Ce qui change avec Datavault Builder
Datavault Builder décrit l’entrepôt dans un modèle visuel et en génère les chargements de staging, de vault et de livraison, avec le déploiement, le rollback, la documentation et le lineage, en tournant nativement sur Fabric, Synapse, Azure SQL et SQL Server.
- Vous modélisez le métier, la plateforme construit le reste. Décrivez une fois les entités, les clés et les relations ; les structures et tous les chargements en sont générés. Une nouvelle source est un mapping, pas une chaîne d’activités copiées. Le canvas se réduit au déplacement de fichiers et à un déclencheur.
- Les releases sont générées, rollback inclus. Des scripts de déploiement par environnement issus du modèle, comparés avant de s’exécuter. Aucun template ARM à tenir à jour à la main.
- Les chargements s’exécutent dans le moteur. Du SQL delta ensembliste pour la plateforme cible. Aucun cluster pour le travail standard de l’entrepôt.
- Le modèle est portable. Fabric aujourd’hui, une autre plateforme demain, le même modèle. Un changement de cloud est un changement de cible, pas une réécriture.
- ADF garde un rôle réduit. Le déplacement de fichiers et les événements peuvent toujours passer par Data Factory, et il peut déclencher un job Datavault Builder. L’orchestration des chargements reste dans la plateforme.
Par où commencer
Deux listes. Les activités du plus grand pipeline qui n’existent que pour copier, faire un lookup ou appeler une procédure par source, et les lignes Mapping Data Flow de la facture Azure triées par nombre de lignes par exécution. La première est le canvas qu’un modèle devrait générer. La seconde est le calcul qui a sa place dans l’entrepôt. Les deux représentent en général l’essentiel de la factory.
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.
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.
Rencontrez notre expert
Vingt minutes avec notre Sales Director et une réponse honnête sur l’adéquation avec votre stack.
Matt Collett
Sales Director
Parfait, choisissez un créneau qui vous convient :
Les autres problèmes traités par cette série
-
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.
-
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.
-
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
- Non. C’est un argument pour garder la logique de l’entrepôt dans un modèle qui tourne aujourd’hui sur Fabric, Synapse, Azure SQL ou SQL Server, et sur Snowflake, Databricks ou BigQuery si cette décision est un jour prise, sans réécriture.
- Fabric est la direction de Microsoft. Fabric Data Factory garde le canvas, donc le premier obstacle reste entier ; il remplace l’étape de publication et les Mapping Data Flows par des éléments synchronisés avec Git et Dataflow Gen2, donc les deuxième et troisième y prennent une autre forme. Cela reste réservé à Azure. Datavault Builder génère nativement pour Fabric, donc y migrer est un changement de cible, pas une reconstruction des pipelines.
- Le déplacement de fichiers entre services Azure, la gestion d’événements, et au plus un déclencheur pour un job Datavault Builder. L’orchestration des chargements eux-mêmes reste dans la plateforme, qui exécute des ensembles de chargements sous forme de jobs, avec journalisation et reprise intégrées.