Architecture d’un projet Azure Data Factory v2

Je viens d’écrire une série d’article sur Azure Data Factory v2 que je ne voulais pas publier ici parce qu’elle est rédigée en anglais. Ceci n’étant pas une raison pour abandonner mes premières amours, voici la traduction du premier article de la série, centré sur l’architecture du projet.

Je ne pense pas traduire les autres: ils sont plus proches du code donc facile à comprendre même en traduction automatique. Désolé pour les fautes de frappes, je fais ce que je peux avec mon clavier qwerty 😉

Remarque: je suis employé de Microsoft au moment où je rédige cet article

Scenario

Périmètre

L’objectif de cet article est de partager les réflexions faites lors du design et de l’implémentation d’une pipeline d’ingestion de données, partie d’un projet plus large d’IoT basé sur des technologies Cloud.

Dans notre scenario, nous sommes un fournisseur de service gérant une plateforme Big Data centralisée. Les données que nous traitons viennent d’une multitude d’appareils similaires mais déployés chez plusieurs de nos clients (Company A, Company B…).

La chaîne de traitement va ingérer des fichiers publiés toutes les heures sur un serveur sFTP centralisé (un répertoire top niveau par client, cette étape est déjà implémentée). Elle va ensuite les décoder, les convertir (CSV a Parquet) et les déplacer dans le répertoire de staging de la plateforme Big Data.

Illustration de la chaine de traitement discute ci-dessus

Besoins techniques

  • Des fichiers encodés (raw) sont publiés toutes les heures sur un serveur sFTP déployé dans un Virtual Network
  • Le décodeur (decoder) est une application Windows qui convertit les fichiers en CSV
  • La plateforme Big Data attend des fichiers Parquet en entrée

En plus de cela, les fichiers doivent être réorganisés d’une structure de répertoires hiérarchisées (Company\Year\Month\Device ID\xyz.csv), vers une structure à plat (Staging\year_month_company_device_xyz.csv). Ceci afin de faciliter l’ingestion par la plateforme Big Data.

Illustration du changement de structure de repertoire

Approche générale

Nous allons traiter les fichiers dans un batch qui tournera toutes les heures, en s’alignant sur leur rythme de génération.

Cela étant dit, par nature (IoT) nous manipulons ici des évènements. L’approche naturelle pour traiter des évènements est le temps réel (streaming). Pour moi la vraie solution, pérenne à long terme, serait de régénérer un flux d’évènements (stream) à partir des fichiers et d’utiliser des technologies d’ingestion en temps réel (Event Hub, Functions, Stream Analytics…) pour la suite des traitements. L’ingestion et la consommation de ces données en batch n’étant que la conséquence d’un détail d’implémentation existant.

Nous sommes missionné pour délivrer une solution en production dans un temps raisonnable, sans risque technique… nous avons donc décidé d’attendre que le besoin d’analyse en temps réel se manifeste pour passer sur du temps réel 😉

Nous aurons besoin d’un ETL avec des capacités Cloud pour orchestrer et exécuter le job, de moteurs de traitement (compute) pour déplacer et convertir les fichiers, et de solutions de stockage.

Éléments de la solution

Nous commencerons par choisir l’ETL puisque c’est la pièce centrale du puzzle. De cet ETL découlera la liste de moteurs de traitement disponibles, qui à leur tour indiqueront les solutions de stockage que nous pourrons employer.

ETL dans le Cloud

Nous utiliserons Azure Data Factory v2 (ADFv2) pour nos besoins d’ETL. Ce service nous permettra d’accéder à un large choix de solution de processing, que l’on pourra intégrer dans un unique flux d’orchestration (Control Flow).

ADFv2 offre:

  • un connecteur natif sFTP
  • une méthode pour accéder à des ressources résidant dans un Virtual Network (via self-hosted integration runtime, discuté ci-dessous)
  • une conversion native de CSV à Parquet avec la Copy Activity
    • A noter que c’est une approche temporaire, les Data Flows étant à préférer pour ce cas, mais toujours en preview à l’écriture de cet article

Une autre bonne raison de choisir ADFv2 est simplement que nous voulions tester le produit, alors qu’il se positionne comme la solution d’intégration en batch par défaut sur Azure.

Processing

ADFv2 peut utiliser deux types de moteurs de traitement:

Toutes les activités natives d’ADFv2 sont exécutées par un IR. Ce qui est bien c’est que chaque Factory vient avec un IR par défaut, managé par Microsoft (autoResolve IR). Ce qui est moins bien c’est que cet IR ne peut pas être configuré, y compris autour du networking. Il n’est donc pas utilisable dans le contexte d’un Virtual Network, dans notre cas il ne pourra pas toucher le serveur sFTP qui met à disposition nos fichiers. Afin de résoudre ce problème, nous allons déployer nous-même un « self-hosted » IR, sur une VM Windows que nous provisionnerons dans le Virtual Network, et l’enregistrer dans notre Factory.

Dans notre Factory, nous déclarerons nos services de stockage et les ferons utiliser l’IR qui correspond (via la propriété connectVia):

  • soit self-hosted (pour accéder au Virtual Network)
  • soit autoResolve (car c’est la seule capable de faire la conversion csv-parquet)

Enfin, à l’écriture de cet article, il n’existe pas d’activité native dans ADFv2 pour effacer des fichiers. Pour ce faire nous avons décidé d’utiliser une Logic App, en suivant cette stratégie, appliquée sur un File Store (voir Stockage ci-dessous). En alternative, nous avons essayé d’appeler directement la Delete REST API du File Store via une Web Activity, mais sommes rester bloqués sur l’authentification (pas de MSI disponible, contrairement aux Blobs). Nous avons également essayé la même approche avec une Function, mais là non plus sans succès (pas de support via le SDK, l’authentification via REST n’est pas évidente).

Stockage

Le décodeur est une application Windows qui écoute un répertoire d’entrée A, attrape les fichiers qui y apparaissent, les décode et les déplace vers un répertoire de sortie B.

Le transfert sFTP étant opéré par ADFv2, par un self hosted IR déployé localement, la manière la plus simple de positionner le décodeur est de l’installer sur une VM située dans le même Virtual Network. Nous monterons deux File Stores sur cette VM: pour l’entrée (A) et la sortie (B) des fichiers. Ces espaces de stockage seront à la fois accessibles par les outils Cloud, et vus comme des répertoires locaux par le décodeur.

Les fichiers seront mis à disposition de la plateforme Big Data dans un Blob Store, beaucoup plus pratique à utiliser dans ce contexte.

Solution

Architecture

Illustration du flux de traitement complet

Vis à vis de la planification:

  • L’étape 1 (copie du serveur sFTP vers A) doit être déclenchée par un trigger externe (0), planifié pour s’exécuter toutes les heures
  • L’étape 2 (de A vers B) est rendu par le décodeur, déclenché automatiquement sur écoute du répertoire A (quand un nouveau fichier apparaît)
  • Ce qui veut dire qu’idéalement les étapes 3 et 4 (3: copie et conversion des fichiers de B vers le Blob, 4: Logic App qui efface les fichiers) devraient elles aussi être déclenchées sur écoute, mais du répertoire B. Malheureusement ce n’est pas une fonctionnalité existante des File Stores (via ADFv2, Logic App ou Function). Une solution de contournement satisfaisante dans notre cas sera de déclencher 3 et 4 via un trigger planifié pour s’exécuter toutes les 15 minutes

Pour le stockage:

Recapitulatif des operations sur les fichiers

Coûts

A partir du volume de donnée attendu et de la liste des services employés, nous pouvons utiliser la calculatrice des prix d’Azure et obtenir une première estimation de la consommation mensuelle pour notre solution (en USD):

  • Data Factory : 250$
  • Logic Apps : 70$
  • Storage : 140$
  • VMs : 600$
  • VNet : 2$
  • Total : 1062$ (USD, par mois, 24/7 toutes les 15 minutes)

Il est important de voir ce chiffre comme une hypothèse qui doit être testée et validée. Entre les métriques obscures de la calculatrice et les larges possibilités d’optimisation de coût, il faut savoir investir du temps pour maîtriser sa consommation à long terme.

Alternatives

Il existe un nombre d’alternatives valables, de la solution poids lourd (HDInsight, Databricks…) au serverless (Function, Logic Apps…).

La suite

En anglais:

 

 

 

Y’a un truc qui m’intrigue à Redmond…

Lors de la keynote du PASS Summit 2014, le mois dernier à Seattle, nous avions eu droit à la présentation de la nouvelle organisation de l’équipe Data Platform de Microsoft, par son leadership flambant neuf:

Des visages sur des noms

Trois patrons pour trois lignes de produit, alignées comme indiqué sur ce schéma (désolé pour la qualité patate):

L'organisation MS 2014 pour la Data en image

Si on repart du fond de la stack:

  1. Capture + Manage : T.K. « Ranga » Rengarajan, patron de Data Platform, Cloud & Entreprise. A comprendre : SQL Server, Azure SQL Database, Azure HDInsight, Azure DocumentDB, Azure Search and Analytics Platform System
  2. Transform + Analyze : Joseph Sirosh, patron de l’Information Management & Machine Learning. A comprendre : Tous les services Azure Data
  3. Visualize + Decide : James Phillips, patron de Power BI, tout du moins la partie sur O365 (dashboards, Q&A, Mobile…)

Là dessus je me fais les remarques suivantes:

  • Ranga ancien SAP, Joseph ancien Amazon, James co-fondateur de Couchbase, les 3 ont moins de 2 ans d’ancienneté chez MS, ça sent l’air frais, c’est plutôt bon signe
  • Ranga et Joseph sont CVP (haut gradés), James n’est « que » General Manager, bizarre cette différence de traitement…
  • Vis à vis des périmètres de chacun:
    • Pour Ranga on a une ligne claire de produits, énoncée dans sa fiche speaker, pas de doute possible
    • Pour Joseph, il fallait être là en scéance mais ont été nommés : Azure Data Factory, Azure Stream Analytics et Azure Machine Learning. On en reparle plus bas.
    • Pour James c’est moins clair. Power BI ça veut tout et rien dire, et si on s’en réfère au slide ci-dessus on note l’absence de la partie add-ins intégrée à Excel (soit à mon sens la plus importante), qui on le sait est retombée dans l’équipe Office. Bon il en parle quand même pendant la session, mais manifestement ça n’est pas dans son scope. Notons qu’il nous a parlé également de 2/3 autres trucs mignons qui arrivent et sont eux dans son scope : les Dashboards Power BI et l’amélioration du refresh on-premise/Power BI (genre SSAS et scheduling)

On en revient à Joseph, en reprennant le slide et en essayant de matcher les produits qu’on connaît en face:

  1. Orchestration -> Azure Data Factory
  2. Information Management -> ?
  3. Complex Event Processing -> Azure Stream Analytics
  4. Modeling -> ?
  5. Machine Learning -> Azure Machine Learning

Hum… Y’a des trous! Et si on observe le pattern, ça sent les services Azure managés, pour de l’Information Management et du Modeling! Wait, what?

Je ne sais pas vous, mais moi ça m’intrigue définitivement 😉

J'ai hâte!!

En Novembre cette année, c’est à Seattle que ça se passe!

Cette année encore c’est avec beaucoup de plaisir que j’irai au MVP Summit la première semaine de Novembre, invité par Microsoft, payé par ma boîte, Cellenza, autant vous dire que la vie est belle 🙂

La cerise sur le gâteau, c’est que la même semaine, en quinconce comme qui dirait, se déroule le PASS Summit. Vous le savez, le PASS c’est la Professional Association for SQL Server, le méga groupe mondial des utilisateurs des technos data issues de Microsoft. Evidemment le GUSS, notre groupe d’utilisateurs en France, est une émanation du PASS, c’est un « chapitre local » en mode Sons of Anarchy, local chapter for France !

Photo des motards de Sons of Anarchy

Et sinon… vous pensez quoi de Power Query dans un contexte de Data Governance ? Jean-Pierre tu préfèrerais pas qu’on aille boire une bière plutôt?

Le PASS Summit c’est genre la plus grosse conférence data dans l’écosystème Microsoft, et de loin. Sur place il y a juste toutes les stars du milieu (la liste est ridicule).

C’est simple, pour moi participer au PASS Summit c’est le meilleur retour sur investissement possible en terme de formation et motivation pour quelqu’un qui travaille dans la stack SQL Server. Oui l’addition peut paraître salée, entre le coût de la conférence, les billets d’avion et le logement sur place, mais rien d’autre ne déclenche un tel boost de compétences et d’implication chez un collaborateur.

Logo du PASS Summit 2014

Cette année la délégation française est vraiment nombreuse, c’est le moment, rejoignez-nous à Seattle 😉

Retour sur « Accélerez vos idées », la keynote de Microsoft du 15/04

Bon bin ça c’est fait : hier à 19h a eu lieu comme prévu la belle présentation de Microsoft sur leur plateforme Data / BI / Big Data, avec entre autres Satya Nadella (CEO) et Quentin Clark (cVP Data) sur scène.

Si vous voulez un compte rendu exhaustif, je conseille fortement l’article de JP sur le sujet.

Voir à travers le marketing...

Voir à travers le marketing…

Mon retour en vrac :

  • Il est bien Satya sur scène, j’aime beaucoup son élocution et sa présence, beaucoup plus que ce qui se faisait avant…
  • Autant le discours marketing est chouette, « Turn the data exhaust into Ambiant Intelligence », autant à mon sens les outils ne sont pas encore au niveau de ce qui est promis. C’est vrai que les premières briques sont là, et c’est vrai aussi que j’ai confiance dans la capacité des équipes produit à créer une offre cohérente à moyen terme. Mais ne mettons pas la grenouille avant les bœufs, sinon on aura des déçus.
  • D’ailleurs entendre un beau message marketing tout neuf, et voir que quasiment toutes les démos qui l’accompagnent ont déjà été présentées, et certaines depuis 1 an, c’est pas top top…
  • Un autre slogan qui fait sourire c’est « Mobile First, Cloud First », parce qu’en BI si on est couvert pour le Cloud, pour le Mobile c’est moins évident… Mais ça vient, ne faisons pas de mauvais esprit 🙂
  • Et dans le détail produit :
    • Polybase ça m’a l’air excellent (dans une même requête SQL on touche Hadoop et les bases relationnelles), dommage que pour le moment ça ne marche que sur PDW, pardon APS (l’appliance de MS change de nom). A quand dans Azure ?
    • On note qu’Office est présenté comme l’interface universelle pour tous les usages de données. Dommage pour SSRS 😉
    • Ça cause beaucoup Machine Learning, mais pour le moment rien de concret dans l’offre. On notera qu’à ce sujet pour une fois MS fait les choses à l’envers en termes de développement produit : ils partent d’une solution verticale existante (solution ML pour la recherche dans Bing) et tentent d’en faire un produit générique, alors que d’habitude ils développent les outils d’abord et recherchent les usages ensuite. Y’a du challenge !

Voilà, voilà. Content de voir que Satya mouille sa chemise pour la BI, mais ce n’était pas non plus une keynote à la Apple avec des annonces révolutionnaires qui font rêver. En fait ce qui m’a fait le plus plaisir pendant cette présentation, ce sont les commentaires en live des copains sur Twitter 😉

Oyez, oyez l’appel de Redmond : Accélérez vos idées le 15 avril à 19h!

Update 2014-04-16 : Le retour c’est ici.

Version courte : Si on fait de la BI, on ajoute ce webcast à venir dans son calendrier!

Version longue :

Je vous avoue que je suis un peu déçu. En effet j’étais partie faire une traduction automatique de « Accelerate your Insights« , le titre original de l’événement dont je vais vous parler, dans l’idée d’obtenir une expression bien moche à mettre en titre de cet article. On aurait tous bien ri, ça m’aurait fait l’accroche de l’article, vous vous seriez exclamé « ce Fleid, quel mec cool et marrant ! ». Mais non. A la place j’ai eu « Accélérer vos idées », qui est finalement une bonne traduction. Je dois dire que je n’aurais jamais cru être déçu de la bonne qualité d’une traduction automatique. Tout arrive.

Satya Nadella annonce l'événement du 15 avril 2014

Pour revenir au sujet, si vous suivez ce blog pour la partie Business Intelligence, vous vous devez d’entendre l’appel de Microsoft du 15 avril à 19h. Parce que ce soit sur Twitter, Facebook, les newsletters ou les blogs MSDN, tous les 2 jours on a un rappel de la convocation. Et vu le beau monde autour de la table, ils doivent avoir quelque chose d’important à nous dire. Je vous donne : Satya Nadella, le président, Kevin Turner, le premier ministre, et Quentin Clark, le ministre de la Data (qui sort du bois en ce moment).

Ça va causer SQL Server 2014, Power BI, et certainement Azure. J’espère également des news côté Big Data avec HDInsight et PDW.

Donc direction vos calendriers : le 15 avril à 19h00, surement sur Channel 9.

Des news de Redmond : Power BI et Quentin Clark

En ce moment Microsoft communique beaucoup autour de la BI (cf. pourquoi). Alors pour éviter d’être submergé, je vous ai fait une petite sélection avec mes commentaires:

Logo Power BI

  • Power BI passe en « General Availability »
    • Alors déjà GA ça veut dire quoi ? Mais qu’on va commencer à payer tiens donc! En toute honnêteté je ne trouve pas ça très cher pour les entreprises : 20€/utilisateur/mois si vous êtes en E3/E4 (ce qui devrait être le cas). Pour les particuliers le message est moins rose : si Office 365 Famille c’est vraiment pas cher (90€/an pour 5 machines), aucune possibilité d’avoir un petit morceau de Power BI avec. La version minimale d’Office pour y accéder semble être Office 365 ProPlus à 13€HT/utilisateur/mois, et avec ça on s’ouvre l’option Power BI à 40$/utilisateur/mois en plus. Ouch. Même combat pour les étudiants, qui touchent Office à 80€ pour 4 ans (c’est donné !), mais dont la version d’Office n’est pas éligible à Power BI (paf 52$/user/mois pour l’upgrade full…). Nul.
    • Une des conséquences du passage en GA est la clarification du destin de Power Map, qui rejoint la distribution Excel par défaut (dans les versions streamées – celles qui se mettent à jour toutes seules). Fini donc d’avoir à installer l’add-in en plus, c’est plutôt cool.
    • Alors oui, ça miaule dans les chaumières parce que Microsoft fait du gros forcing sur le passage en licence par abonnement (Office 365) plutôt qu’en boite. Mais de mon côté si d’une part je trouve les prix ultra agressifs (mais ok, rien ne nous met à l’abri d’une explosion des tarifs une fois que tout le monde aura signé… euh en fait si, la concurrence), d’autre part je trouve fantastique le principe des mises à jour continues, si possible via les Updates dans les applications. Ce dernier point on l’a vu à l’œuvre dans la preview de Power Query depuis le milieu de l’année dernière, avec des grosses mises à jour livrées tous les mois, et franchement c’est juste le top (de la même manière que Chrome ou Firefox se mettent à jour tout seul). Dans l’absolu je préfère largement avoir des cycles de release mensuels, plutôt que d’attendre 3 ans pour avoir à migrer de SQL Server 2005 à 2008 (ou pas).
Passage en GA de Power BI – Annonce sur le licensing

Passage en GA de Power BI – Annonce sur le licensing

  • Le deuxième gros sujet c’est les pontes de Microsoft qui prennent le micro, et celui qui nous intéresse c’est Quentin Clark, le grand patron de l’offre Data, sur la vision de Microsoft pour sa plateforme
    • En 2 mots, son message : « Cloud First »
      • Aujourd’hui : on rouille sur de l’IT à la papa, avec des bases OLTP, des DWH relationnels et de la BI opérationnelle. Tout ça c’est basé sur une approche, de construire des « systèmes d’enregistrement », comme les ERP et tous les autres applicatifs LoB, qui sont designés spécifiquement pour enregistrer ce qu’il se passe sur un flux métier de l’entreprise (une interface pour enregistrer une vente, un échange client, un recrutement)
      • Demain on pourra construire des « systèmes d’observation », complémentaires, qui auront l’approche inverse, soit observer les événements dans tout l’écosystème (et pas seulement dans l’entreprise) pour en déduire de l’information
    • A mon sens c’est encore très flou, mais pour Microsoft l’objectif devient alors de nous construire l’outillage nécessaire à cette vision, autour des briques suivantes:
      • Modern Transaction Processing : la communication inter-applications dans le cloud, et non plus on-premise, en fait c’est la cloudification des EAI – le concept est excellent
      • Modern Business Intelligence : Self-Service, Machine Learning, Data Viz, tout ce qui concerne la modernisation du rôle et de l’usage de la BI
      • Modern Data Warehouse : tout ce qui doit se faire en back office pour permettre la Modern BI, soit pour le moment principalement le traitement des hautes volumétries via Big Data
      • Le tout en cloud et PaaS, pour la scalabilité, et effacer les problèmes d’infrastructure afin de se concentrer sur les problématiques métier
  • On entend donc bien le message « Cloud First », à tous les niveaux, qui au-delà du changement de mentalité technologique, avec ses avantages et ses inconvénients, va surtout permettre à l’éditeur de terminer la transition de son business modèle de la vente de boîtes à la location de services
    • Et là moi je suis à 100% pour, puisque vous le savez j’ai un avis assez tranché sur l’économie numérique, et autant payer pour un .exe ça me pose un problème, autant payer tous les mois pour un service, qui m’apporte de la valeur, qui s’améliore dans le temps, je suis complétement d’accord
    • Maintenant si MS a fait la preuve de sa compétence Cloud (Azure c’est juste énorme), et si ça commence à sentir bon côté Modern Data Warehouse (HDInsight c’est top, StreamInsight c’est bien, manque plus que des IDE avec des IHM dignes de ce nom), on est encore léger côté Modern BI : toujours à poil sur le Machine Learning (le nouveau nom du Data Mining), et pas complétement convaincu par les capacités de Data Viz de la plateforme (mais c’est un point d’attention de leur côté). D’ailleurs sur ce dernier point, vous noterez dans l’article que le sujet est retourné du côté des équipes Office (cf les titres des auteurs à la fin) plutôt que Data Platform (chez Quentin). Est-ce positif ? Sincérement, vu SSRS, à mon avis oui…
    • Dans tous les cas, respect à Quentin Clark de faire l’effort de nous exprimer sa vision, même si c’est un exercice qui va devenir strictement nécessaire pour établir une vraie relation de confiance avec nous, les utilisateurs de ces services.
Ça va, c’est clair ?

Ça va, c’est clair ?

N’hésitez pas à réagir dans les commentaires 😉