Introduction
Il y a beaucoup de confusion lorsqu’il s’agit d’Azure Data Factory (ADF) et de sa comparaison avec SSIS. Il ne s’agit pas simplement de « SSIS dans le cloud ». Alors, en quoi sont-ils différents ?
Cas d’utilisation de SSIS vs ADF
Les deux outils Microsoft sont des ETL (Extract, Transform, Load) conçus entre autres pour extraire des données d’une ou plusieurs sources, les transformer dans un même flux de données – puis charger les résultats dans une destination.
Si SSIS est sorti en 2005 comme un outil purement ETL, Azure Data Factory est quant à lui sorti en 2015 comme étant à la base plutôt un outil ELT (Extract-Load-Transform) conçu davantage pour le déplacement et l’orchestration des données. Depuis, ADF a beaucoup évolué et prend maintenant très bien en charge les scénarios ETL grâce à sa fonction « flux de données ».
Cette interface est très semblable à celle des flux de données SSIS.
SSIS et ADF disposent tous les deux des fonctionnalités essentielles que l’on attend d’un outil ETL, notamment :
- Des connecteurs à une variété de structures de données, relationnelles et non relationnelles. Les deux outils ne dérogent pas à cette règle, et permettent entre autres de se connecter nativement à de nombreuses bases relationnelles par OLEDB, des fichiers plats CSV, fichiers XML, fichiers Excel, des sources en ligne. Toutefois, Azure Data Factory prend en charge beaucoup plus de connecteurs, notamment liés à des services extérieurs (SAP, Amazon, Google, Salesforce, NoSQL) que SSIS ne prend pas en charge.
- Des Flux de travail clairs avec un ordonnancement des opérations: Les deux outils permettent d’obtenir une visualisation graphique des flux réalisés. Chaque tâche de transformation est représentée par une boîte que l’on peut renommer et décrire. Un flux sur SSIS ou ADF correctement développé est vraiment très lisible et facilement évolutif, bien que l’interface d’Azure soit plus moderne et intuitive.
- Des transformations du flux de données pour permettre le nettoyage ou le remodelage des données en cours de traitement: SSIS et ADF proposent tous les deux de nombreuses tâches de transformation. SSIS intègre de plus en plus de tâches de transformation avancées, bien qu’il faille parfois manipuler le composant script avec du code. ADF, bien qu’il propose des composants natifs qu’il aurait fallu coder sur SSIS, ne propose pas encore autant d’activités de transformation que SSIS qui est beaucoup plus mature.
Avis de l’Expert
Les deux outils peuvent donc couvrir une grande partie des mêmes cas d’utilisation ETL/ELT. Si vous recherchez une interface utilisateur riche permettant une expérience ETL en glisser-déposer pour votre solution dans Azure, la fonction « Flux de Données » est une excellente option. Il n’y a pas beaucoup d’apprentissage à faire si vous venez de SSIS, et vous n’avez pas besoin d’avoir de grandes compétences en codage pour commencer.
Environnement de développement
ADF est un service basé sur le cloud (disponible dans le portail Azure depuis un navigateur web) et, comme il s’agit d’un outil PaaS, il ne nécessite pas de matériel ou d’installation. Il suffit d’avoir une machine avec une connexion Internet.
SSIS est un outil on-Premise et requiert un serveur que vous devez gérer, et vous devez installer SQL Server avec SSIS. Les packages SSIS sont développés dans Visual Studio. Cela signifie que chaque développeur doit avoir Visual Studio installé (soit une version complète sous licence, soit l’édition Community gratuite) sur sa machine.
Vous pouvez toutefois exporter des packages SSIS dans le Cloud, en exécutant des packages SSIS à l’intérieur d’Azure Data Factory à l’aide d’un Runtime d’Intégration. (Voir article de blog : Déployer les solutions SSIS dans le cloud).
Qu’ils soient sur le Cloud ou On-Premise, Azure Data Factory et SQL Server Integration Services sont chacun dotés de fonctionnalités qui facilitent la gestion et le monitoring, notamment :
- La journalisation des exécutions
- Les alertes
- La planification
Les deux outils prennent en charge le contrôle de version. Vous pouvez intégrer SSIS à TFS et git, tandis que ADF peut être intégré à Azure Devops, git ou Github.
Comme les éléments en arrière-plan d’ADF sont en JSON, qui est plus facile à comprendre que le XML utilisé pour SSIS, et qu’ADF ne stocke pas d’informations sur la mise en page, il est souvent plus facile de générer des pipelines avec ADF.
Avis de l’Expert
Il est clair que dans certains cas d’utilisation, le choix de l’outil à utiliser est très simple. Si votre projet doit être entièrement dans le Cloud, ADF semble être le choix le plus évident. Si tout est on-Premise, SSIS semble être plus adapté. Cependant, il existe des cas d’utilisation intéressants pour lesquels nous pourrions opter pour une approche hybride.
Performances
SSIS peut être très rapide s’il est bien utilisé. La plupart des opérations effectuées en mémoire sont très rapides, mais certaines opérations comme le tri peuvent être très lentes. Exemple de bonnes pratiques : l’utilisation de SSIS qui stipule notamment d’éviter le plus possible le composant tri et d’effectuer plutôt une requête SQL « DISTINCT ».
Les performances d’un flux de données sont généralement définies par la vitesse de lecture de la source ou la vitesse d’écriture de la destination. Si la plupart des transformations ne sont pas effectuées à l’intérieur de SSIS même, SSIS n’aura pas beaucoup d’impact sur les performances. SSIS peut alors être exécuté sur un serveur assez léger.
Azure Data Factory bénéficie donc de toute l’élasticité du Cloud. Lorsque que l’on utilise l’activité de copie par exemple, ADF s’occupe automatiquement des performances à allouer si l’on laisse les paramètres par défaut :
Les flux de données dans ADF utilisent le framework de calcul distribué Apache Spark en fond. Pour les petits jeux de données, il est possible que le temps de démarrage du cluster de Spark soit beaucoup plus long que le temps d’exécution du flux de données en lui-même. C’est une des raisons pour lesquelles les flux de données ADF sont plus adaptés aux données massives qu’aux petits jeux de données.
Nous avons effectué un test de performances avec chaque outil en chargeant un petit fichier (27kb) puis un plus grand fichier (248mb), et pour chacun nous avons effectué une simple opération de copie (avec l’activité de copie de données assisté sur ADF) ainsi qu’un flux de données complet ressemblant au cas d’utilisation présenté précédemment (transformation de tri, select, fractionnement conditionnel etc…) :
- Pour la copie du petit fichier, les performances sur SSIS et ADF étaient presque identiques.
- Avec le petit fichier et le flux de données complet, SSIS était beaucoup plus rapide que ADF (10 secondes contre 90 secondes).
- Pour la copie du gros fichier, ADF est beaucoup plus rapide (1 minute contre 4 minutes).
- Avec le grand fichier et le flux de données, ADF était plus rapide (4 minutes contre 6 minutes).
La raison pour laquelle ADF est souvent plus lent que SSIS sur les petit fichier se trouve donc, comme cité précédemment, dans le fait qu’il faille démarrer un cluster Spark en arrière-plan ce qui peut prendre plus de temps que l’exécution du flux de données en lui-même.
Avis de l’Expert
En termes de performances, SSIS et ADF disposent tous deux de paramètres permettant d’optimiser les temps d’exécution. Cependant, dans la plupart des opérations ETL ou ELT optimisées, la réponse aux problèmes de performance consiste à souscrire à davantage de ressources (mémoire, CPU, I/O de disque). C’est là que ADF est plus simple que SSIS, car vous pouvez facilement modifier les paramètres de performance en quelques clics, et vous pouvez le faire pour une seule exécution si vous le souhaitez. Les opérations ETL ne sont pas nécessairement exécutées 24 heures sur 24, et la possibilité de payer au fur et à mesure et d’augmenter les performances permet une plus grande flexibilité et un moindre coût.
Coûts
De tous ces paramètres, le coût est le plus difficile à comparer. En raison des différents modèles de tarification de SSIS (licence fixe) et d’ADF (paiement à l’utilisation), il n’existe pas de test décisif permettant d’identifier l’option la plus rentable. Il convient plutôt de se poser les questions suivantes lors de l’évaluation de SSIS par rapport à ADF :
- Mon organisation est-elle plus à l’aise avec des dépenses fixes ou des frais basés sur l’utilisation ?
- Devons-nous prévoir de commencer avec un coût faible jusqu’à ce que notre activité décolle, puis de payer davantage lorsque nous traitons davantage de données ? Ou devons-nous simplement acheter le matériel et les logiciels dont nous pensons avoir besoin pour notre croissance future ?
- Avons-nous besoin d’une puissance de calcul constante à la demande, ou nos besoins en ETL sont-ils plus cycliques et concentrés à certains moments de la journée ?
Lorsque vous considérez les coûts, gardez à l’esprit que vous devez prendre en compte tous les coûts liés à la prise en charge d’une architecture particulière. Par exemple, si vous exécutez une instance SQL Server on-Premise, il est très facile de ne pas tenir compte du temps nécessaire à l’installation du système d’exploitation, à la maintenance, aux coûts d’hébergement et à d’autres tâches administratives qui ne sont normalement pas considérées comme faisant partie de la maintenance de la base de données.
Avis de l’Expert
Il n’y a pas de vainqueur incontesté ici, car ADF a un modèle de tarification complètement différent de celui des instances SSIS on-Premise ou basées sur une Machine Virtuelle. Pour prendre la bonne décision financière, il est essentiel de savoir comment votre entreprise traite les données, comment elle prévoit de se développer et comment elle gère son budget.
Il existe désormais une calculatrice de prix Azure qui vous permet de calculer vos coûts horaires ou mensuels estimés pour l’utilisation d’Azure
CONCLUSION DE L’EXPERT
SSIS et ADF sont tous deux utilisés pour déplacer et transformer des données. SSIS est un outil mature qui existe depuis plus de 15 ans. Mais il n’y a pas eu beaucoup de changements dans le produit dans les dernières versions. ADF, quant à lui, est un outil Cloud qui évolue en permanence.
Lorsque vous devez choisir entre les deux, les questions suivantes peuvent vous aider à prendre une décision :
- Le projet est-il dans le cloud ? Si oui, ADF est le choix logique la plupart du temps. Dans le cas contraire, SSIS est probablement mieux adapté.
- Allez-vous traiter de grandes quantités de données ? Si oui, ADF et ses flux de données utilisant le moteur Spark sont généralement mieux adaptés aux charges de travail de type big data.
- Avez-vous déjà beaucoup investi dans des projets SSIS ? Dans ce cas, vous pouvez transférer vos projets existants vers ADF si vous souhaitez migrer vers le cloud. Vous pouvez choisir de créer de nouveaux projets en ADF ou en SSIS, en fonction des compétences de votre équipe et de son désir d’apprendre de nouvelles technologies.
- Quels types de machines de développement sont utilisés ? Le développement de packages SSIS nécessite Visual Studio, ce qui implique des machines de développement Windows. Si votre entreprise utilise un autre système d’exploitation comme iOS, ADF pourrait être une meilleure option.
SSIS fonctionne bien lorsque plusieurs de ces conditions sont satisfaites :
- Votre charge de travail est principalement ou complètement en local (On-Premise).
- Vous possédez déjà SQL Server 2016 ou une version plus récente
- Vos processus ETL s’exécutent de manière cohérente tout au long de la journée et ne sont pas concentrés sur certains moments de la journée.
- Votre organisation a déjà investi dans des ressources SSIS.
ADF est un excellent choix lorsque plusieurs des éléments suivants décrivent votre configuration :
- Votre organisation est en pleine croissance et vous souhaitez payer pour ce que vous utilisez actuellement, et non pour ce que vous prévoyez d’utiliser à l’avenir.
- La plupart ou la totalité de votre charge de travail se trouve dans le cloud.
- Vous avez des pics d’activité lorsque vos processus ETL sont en cours (tous les soirs, deux fois par jour, etc.).
- Vos dirigeants sont à l’aise avec un modèle de tarification variable, basé sur la consommation.
Les besoins de chaque entreprise sont différents. Vous devrez donc tenir compte de chacun de ces facteurs pour décider d’utiliser Azure Data Factory, SSIS ou un hybride des deux.