Chers lecteurs, bonjour !
La nĂ©cessitĂ© de construire des plateformes IT pour l'accumulation et l'analyse de donnĂ©es se pose tĂŽt ou tard pour toute entreprise dont le modĂšle commercial repose sur des services intellectuellement exigeants ou sur la crĂ©ation de produits techniquement complexes. La construction de plateformes analytiques est une tĂąche complexe et laborieuse. Cependant, chaque tĂąche peut ĂȘtre simplifiĂ©e. Dans cet article, je souhaite partager mon expĂ©rience sur l'utilisation d'outils low-code qui aident Ă crĂ©er des solutions analytiques. Cette expĂ©rience a Ă©tĂ© acquise lors de la mise en Ćuvre de plusieurs projets dans le domaine des Solutions Big Data de l'entreprise Neoflex. Depuis 2005, le dĂ©partement des Solutions Big Data de Neoflex s'occupe de la construction de entrepĂŽts et de lacs de donnĂ©es, rĂ©sout des problĂšmes d'optimisation de la vitesse de traitement de l'information et travaille sur la mĂ©thodologie de gestion de la qualitĂ© des donnĂ©es.

Ăviter l'accumulation consciente de donnĂ©es faiblement et/ou fortement structurĂ©es sera impossible pour quiconque. MĂȘme pour une petite entreprise, cela s'applique. En effet, Ă mesure que l'entreprise se dĂ©veloppe, l'entrepreneur aspirant sera confrontĂ© Ă des questions telles que le dĂ©veloppement d'un programme de fidĂ©litĂ©, l'analyse de l'efficacitĂ© des points de vente, la rĂ©flexion sur la publicitĂ© ciblĂ©e, et se posera des questions sur la demande de produits complĂ©mentaires. Dans un premier temps, la tĂąche peut ĂȘtre rĂ©solue de maniĂšre improvisĂ©e. Mais avec la croissance de l'entreprise, le recours Ă une plateforme analytique devient inĂ©vitable.
Cependant, quand les tĂąches d'analyse de donnĂ©es peuvent-elles se transformer en problĂšmes de type « Rocket Science » ? Probablement au moment oĂč il s'agit de donnĂ©es vĂ©ritablement massives.
Pour simplifier la tùche « Rocket Science », il est possible de manger un éléphant morceau par morceau.

Plus la granularité et l'autonomie de vos applications/services/microservices sont grandes, plus il sera facile pour vous, vos collÚgues et l'ensemble de l'entreprise de digérer l'éléphant.
Cette assertion a été adoptée par presque tous nos clients, qui ont réaménagé leur paysage en s'appuyant sur les pratiques d'ingénierie des équipes DevOps.
Mais mĂȘme avec un rĂ©gime « sĂ©parĂ©, Ă base d'Ă©lĂ©phant », nous avons de bonnes chances de subir une « saturation » de l'environnement IT. Ă ce moment-lĂ , il convient de faire une pause, de respirer profondĂ©ment et de se tourner vers la plateforme d'ingĂ©nierie low-code.
De nombreux développeurs craignent de se retrouver à un point mort dans leur carriÚre en s'éloignant de l'écriture de code pour se diriger vers le « glisser-déposer » d'éléments dans les interfaces utilisateur des systÚmes low-code. Cependant, l'apparition des machines-outils n'a pas entraßné la disparition des ingénieurs, mais a plutÎt élevé leur travail à un nouveau niveau !
Voyons pourquoi.
L'analyse des données dans le domaine de la logistique, de l'industrie télécom, des études médiatiques et du secteur financier est toujours liée aux questions suivantes :
- La rapidité de l'analyse automatisée;
- La possibilité de réaliser des expériences sans affecter le flux principal de production de données;
- La fiabilité des données préparées;
- Le suivi des modifications et la versionning;
- La provenance des données, la lignée des données, CDC;
- La rapidité de livraison de nouvelles fonctionnalités dans l'environnement de production;
- Et le fameux : le coût de développement et de maintenance.
Cela signifie que les ingénieurs ont un grand nombre de tùches de haut niveau à accomplir, tùches que l'on peut réaliser avec une efficacité suffisante uniquement en libérant leur esprit des tùches de développement de bas niveau.
Les prérequis au passage des développeurs à un nouveau niveau ont été l'évolution et la numérisation des affaires. La valeur d'un développeur change également : il y a une forte pénurie de développeurs capables de plonger dans l'essence des concepts d'affaires à automatiser.
Faisons une analogie entre les langages de programmation de bas niveau et de haut niveau. Le passage des langages de bas niveau vers les langages de haut niveau reprĂ©sente un passage de l'Ă©criture de « directives directes en langage machine » vers « directives en langage humain ». Cela signifie l'ajout d'un certain niveau d'abstraction. Dans ce cas, le passage des plateformes low-code des langages de programmation de haut niveau reprĂ©sente un passage de « directives en langage humain » vers « directives en langage commercial ». Si des dĂ©veloppeurs dĂ©priment Ă ce sujet, alors ils sont peut-ĂȘtre tristes depuis le moment oĂč JavaScript est nĂ©, qui utilise des fonctions de tri de tableaux. Ces fonctions ont, bien entendu, une implĂ©mentation logicielle sous le capot, Ă l'aide des mĂȘmes moyens de programmation de haut niveau.
Par conséquent, le low-code n'est qu'un nouvel niveau d'abstraction.
L'expérience pratique de l'utilisation du low-code.
Le concept de low-code est assez vaste, mais je voudrais maintenant parler de l'application des « concepts low-code » à travers l'exemple d'un de nos projets.
La division Big Data Solutions de la société « Neoflex » se spécialise principalement dans le secteur financier, construisant des entrepÎts et des lacs de données et automatisant divers rapports. Dans ce créneau, l'utilisation de low-code est devenue une norme depuis longtemps. Parmi d'autres outils low-code, on peut mentionner des solutions pour organiser des processus ETL : Informatica Power Center, IBM Datastage, Pentaho Data Integration. Ou encore Oracle Apex, qui se présente comme un environnement de développement rapide pour les interfaces d'accÚs et de modification des données. Cependant, l'utilisation des outils de développement low-code n'est pas toujours associée à la création d'applications à usage spécifique sur une pile technologique commerciale avec une dépendance clairement définie envers le fournisseur.
Avec les plateformes low-code, il est également possible d'organiser l'orchestration des flux de données, de créer des plateformes de data science ou, par exemple, des modules de vérification de la qualité des données.
Un des exemples pratiques de l'utilisation d'outils de développement low-code est la collaboration entre « Neoflex » et la société Mediascope, un des leaders du marché russe de la recherche média. L'un des objectifs commerciaux de cette entreprise est de produire des données sur la base desquelles les annonceurs, les plateformes Internet, les chaßnes de télévision, les stations de radio, les agences de publicité et les marques prennent des décisions d'achat d'espaces publicitaires et planifient leurs communications marketing.

Les Ă©tudes mĂ©diatiques sont un domaine d'affaires technologiquement chargĂ©. La reconnaissance des sĂ©quences vidĂ©o, la collecte de donnĂ©es Ă partir d'appareils analysant les visionnages, la mesure de l'activitĂ© sur les ressources web â tout cela implique que l'entreprise dispose d'un grand personnel informatique et d'une Ă©norme expĂ©rience dans la construction de solutions analytiques. Mais la croissance exponentielle de la quantitĂ© d'informations, du nombre et de la diversitĂ© de ses sources oblige l'industrie informatique Ă progresser constamment. La solution la plus simple pour l'Ă©chelle d'une plateforme analytique existante de Mediascope aurait pu ĂȘtre d'augmenter le personnel informatique. Mais une solution beaucoup plus efficace est d'accĂ©lĂ©rer le processus de dĂ©veloppement. Un des pas vers cette direction pourrait ĂȘtre l'utilisation de plateformes low-code.
Au moment du lancement du projet, la sociĂ©tĂ© disposait dĂ©jĂ d'une solution produit fonctionnelle. Cependant, la mise en Ćuvre de la solution sur MSSQL ne pouvait pas pleinement rĂ©pondre aux attentes en matiĂšre d'Ă©volutivitĂ© des fonctionnalitĂ©s tout en maintenant un coĂ»t acceptable pour les ajustements.
La tĂąche qui nous attendait Ă©tait vĂ©ritablement ambitieuse â « Neoflex » et Mediascope devaient crĂ©er une solution industrielle en moins d'un an, avec la condition de lancer le MVP dĂšs le premier trimestre Ă compter de la date de dĂ©but des travaux.
Comme fondation pour la construction de la nouvelle plateforme de donnĂ©es, basĂ©e sur des calculs faible code, la pile technologique Hadoop a Ă©tĂ© choisie. Le standard de stockage des donnĂ©es est devenu HDFS avec l'utilisation de fichiers au format parquet. Pour accĂ©der aux donnĂ©es sur la plateforme, Hive a Ă©tĂ© utilisĂ©, oĂč toutes les vitrines disponibles se prĂ©sentent sous la forme de tables externes. Le chargement des donnĂ©es dans le stockage a Ă©tĂ© rĂ©alisĂ© Ă l'aide de Kafka et Apache NiFi.
L'outil faible code dans ce concept a Ă©tĂ© appliquĂ© pour optimiser la tĂąche la plus laborieuse dans la construction de la plateforme analytique â le calcul des donnĂ©es.

Le principal mécanisme de mapping des données a été choisi comme étant l'outil faible code Datagram. Neoflex Datagram est un moyen de développer des transformations et des flux de données.
En utilisant cet outil, il est possible de se passer de l'écriture de code en Scala « à la main ». Le code Scala est généré automatiquement en utilisant une approche d'Architecture Pilotée par ModÚle.
L'avantage évident de cette approche est d'accélérer le processus de développement. Cependant, en plus de la rapidité, il y a encore d'autres avantages :
- Visualisation du contenu et de la structure des sources/destinations;
- Suivi de l'origine des objets de flux de données jusqu'aux champs individuels (provenance);
- Exécution partielle des transformations avec visualisation des résultats intermédiaires;
- Visualisation du code source et de sa correction avant exécution;
- Validation automatique des transformations;
- Chargement automatique des données 1 à 1.
Le seuil d'entrĂ©e dans les solutions low-code pour la gĂ©nĂ©ration de transformations est assez bas : un dĂ©veloppeur doit connaĂźtre SQL et avoir de l'expĂ©rience avec des outils ETL. Cependant, il convient de prĂ©ciser que les gĂ©nĂ©rateurs de transformations basĂ©s sur le code ne sont pas des outils ETL au sens large du terme. Les outils low-code peuvent ne pas disposer de leur propre environnement d'exĂ©cution de code. Cela signifie que le code gĂ©nĂ©rĂ© sera exĂ©cutĂ© dans l'environnement qui existait sur le cluster avant l'installation de la solution low-code. Et c'est peut-ĂȘtre un autre plus pour le low-code. En effet, une Ă©quipe « classique » peut travailler en parallĂšle avec l'Ă©quipe low-code, mettant en Ćuvre des fonctionnalitĂ©s, par exemple, dans un code Scala pur. L'intĂ©gration des modifications des deux Ă©quipes dans la production sera simple et « sans couture ».
Il convient également de noter qu'en plus du low-code, il existe aussi des solutions no-code. En soi, ce sont des choses différentes. Le low-code permet dans une plus grande mesure au développeur d'intervenir dans le code généré. Dans le cas de Datagram, il est possible de visualiser et de modifier le code Scala généré, tandis que le no-code peut ne pas offrir cette possibilité. Cette différence est trÚs significative non seulement en termes de flexibilité de la solution, mais aussi en termes de confort et de motivation au travail des data engineers.
Architecture de la solution
Essayons de comprendre comment un outil low-code aide à résoudre le problÚme d'optimisation de la vitesse de développement des fonctionnalités de calcul des données. Pour commencer, examinons l'architecture fonctionnelle du systÚme. Dans ce cas, l'exemple est un modÚle de production de données pour des recherches médiatiques.

Les sources de données dans notre cas sont trÚs hétérogÚnes et diverses :
- Les Peoplemetres (mĂštres de tĂ©lĂ©vision) sont des dispositifs logiciels et matĂ©riels qui analysent le comportement des utilisateurs parmi les rĂ©pondants du panel tĂ©lĂ©visĂ©, en identifiant qui, quand et quelle chaĂźne ils ont regardĂ©e dans le foyer participant Ă l'Ă©tude. Les informations fournies constituent un flux d'intervalles d'audience directement liĂ© aux forfaits mĂ©diatiques et aux produits mĂ©diatiques. Les donnĂ©es lors du chargement dans le Data Lake peuvent ĂȘtre enrichies d'attributs dĂ©mographiques, de liens gĂ©ographiques, de fuseaux horaires et d'autres informations nĂ©cessaires Ă l'analyse des audiences des diffĂ©rents produits mĂ©diatiques. Les mesures obtenues peuvent ĂȘtre utilisĂ©es pour analyser ou planifier des campagnes publicitaires, Ă©valuer l'activitĂ© et les prĂ©fĂ©rences du public, ainsi que pour Ă©laborer une grille de programmes.
- Les données peuvent provenir de systÚmes de surveillance de la télévision en streaming et de mesures de visionnage de contenus sur des plateformes vidéo en ligne.
- Les outils de mesure dans l'environnement web comprennent à la fois des compteurs centrés sur le site et des compteurs centrés sur l'utilisateur. Une extension de navigateur, le research bar, et une application mobile intégrée peuvent servir de fournisseurs de données pour le Data Lake. VPN.
- Les donnĂ©es peuvent Ă©galement provenir de plateformes consolidant les rĂ©sultats des enquĂȘtes en ligne et les rĂ©sultats des interviews tĂ©lĂ©phoniques rĂ©alisĂ©es dans les recherches de l'entreprise.
- L'enrichissement additionnel du Data Lake peut se faire par le chargement d'informations Ă partir des journaux des entreprises partenaires.
L'implĂ©mentation du chargement tel quel des systĂšmes sources vers un staging primaire de donnĂ©es brutes peut ĂȘtre organisĂ©e de diffĂ©rentes maniĂšres. Dans le cas oĂč une approche low-code serait utilisĂ©e, il est possible de gĂ©nĂ©rer automatiquement des scĂ©narios de chargement basĂ©s sur les mĂ©tadonnĂ©es. Cela Ă©limine la nĂ©cessitĂ© de descendre au niveau de dĂ©veloppement de mappages source vers cible. Pour rĂ©aliser un chargement automatique, nous devons Ă©tablir une connexion avec la source, puis dĂ©finir dans l'interface de chargement la liste des entitĂ©s Ă charger. La crĂ©ation de la structure des rĂ©pertoires dans HDFS se fera automatiquement et correspondra Ă la structure de stockage des donnĂ©es dans le systĂšme source.
Cependant, dans le cadre de ce projet, nous avons décidé de ne pas utiliser cette capacité de la plateforme low-code, car la société Mediascope a déjà commencé à développer un service similaire basé sur Nifi + Kafka.
Il est important de préciser que ces outils ne sont pas interchangeables, mais se complÚtent plutÎt. Nifi et Kafka peuvent fonctionner tant dans une liaison directe (Nifi -> Kafka) que dans l'autre sens (Kafka -> Nifi). La premiÚre option a été utilisée pour la plateforme de recherche médiatique.

Dans notre cas, Nifi devait traiter diffĂ©rents types de donnĂ©es provenant des systĂšmes sources et les transmettre au broker Kafka. Dans ce contexte, l'acheminement des messages vers un topic spĂ©cifique de Kafka se faisait par l'utilisation de processeurs Nifi PublishKafka. L'orchestration et la gestion de ces pipelines sont rĂ©alisĂ©es via une interface visuelle. L'outil Nifi et l'utilisation de la combinaison Nifi + Kafka peuvent Ă©galement ĂȘtre qualifiĂ©s d'approche low-code pour le dĂ©veloppement, offrant un faible seuil d'entrĂ©e dans les technologies Big Data et accĂ©lĂ©rant le processus de dĂ©veloppement d'applications.
La prochaine Ă©tape de la rĂ©alisation du projet consistait Ă formater un niveau sĂ©mantique uniforme de donnĂ©es dĂ©taillĂ©es. En cas de prĂ©sence d'attributs historiques dans une entitĂ©, le calcul se fait dans le contexte de la partition considĂ©rĂ©e. Si l'entitĂ© n'est pas historique, il est optionnel de recalculer entiĂšrement le contenu de l'objet ou d'abandonner complĂštement le recalcul de cet objet (en raison de l'absence de changements). Ă ce stade, des clĂ©s sont gĂ©nĂ©rĂ©es pour toutes les entitĂ©s. Les clĂ©s sont sauvegardĂ©es dans les rĂ©pertoires de master-objets Hbase correspondants, contenant la correspondance entre les clĂ©s de la plateforme analytique et les clĂ©s des systĂšmes sources. La consolidation des entitĂ©s atomiques est accompagnĂ©e de l'enrichissement des rĂ©sultats de prĂ©-calcul des donnĂ©es analytiques. Le framework pour le calcul des donnĂ©es Ă©tait Spark. La fonctionnalitĂ© dĂ©crite pour le formatage des donnĂ©es en une sĂ©mantique unique a Ă©galement Ă©tĂ© mise en Ćuvre sur la base des mappings de l'outil low-code Datagram.
Dans l'architecture cible, il était nécessaire d'assurer un accÚs SQL aux données pour les utilisateurs métiers. Pour cette option, Hive a été utilisé. L'enregistrement des objets dans Hive se fait automatiquement lorsque l'option « Enregistrer la table Hive » est activée dans l'outil low-code.

Gestion du flux de calcul
Datagram a une interface pour la conception de flux de travail. Le lancement des mappages peut ĂȘtre effectuĂ© Ă l'aide du planificateur Oozie. Dans l'interface dĂ©veloppeur des flux, il est possible de crĂ©er des schĂ©mas d'exĂ©cution de transformations de donnĂ©es parallĂšles, sĂ©quentielles ou dĂ©pendantes de conditions donnĂ©es. Il y a un support pour les scripts shell et les programmes Java. L'utilisation est Ă©galement possible. de serveurs Apache Livy. Apache Livy est utilisĂ© pour exĂ©cuter des applications directement depuis l'environnement de dĂ©veloppement.
Si une entreprise possÚde déjà son propre orchestrateur de processus, il est possible d'utiliser l'API REST pour intégrer des mappages dans un flux existant. Par exemple, nous avons eu une expérience assez réussie d'intégration de mappages en Scala dans des orchestrateurs écrits en PLSQL et Kotlin. L'API REST de l'outil low-code implique des opérations telles que la génération d'une année exécutable basée sur le design du mappage, l'appel du mappage, l'appel d'une séquence de mappages et, bien sûr, la transmission de paramÚtres dans l'URL pour lancer les mappages.
En plus d'Oozie, il est possible d'organiser un flux de calcul avec Airflow. Je ne vais pas trop m'attarder sur la comparaison entre Oozie et Airflow, je dirai simplement que, dans le contexte des travaux sur le projet d'études médiatiques, le choix s'est porté sur Airflow. Les principaux arguments cette fois-ci étaient une communauté plus active développant le produit, et une interface + API plus avancées.
Airflow est également apprécié car il utilise le trÚs apprécié Python pour décrire les processus de calcul. D'ailleurs, il n'existe pas beaucoup de plateformes de gestion des flux de travail open source. Le lancement et la surveillance de l'exécution des processus (y compris avec un diagramme de Gantt) ajoutent des points appréciables à la réputation d'Airflow.
Le format du fichier de configuration pour le lancement de mappages de solutions low-code est devenu spark-submit. Cela s'est produit pour deux raisons. PremiÚrement, spark-submit permet de lancer directement un fichier jar depuis la console. DeuxiÚmement, il peut contenir toutes les informations nécessaires pour configurer le flux de travail (ce qui facilite l'écriture de scripts formant le Dag).
L'élément le plus fréquemment rencontré dans notre flux de travail Airflow est devenu le SparkSubmitOperator.
Le SparkSubmitOperator permet de lancer des jar â des mappages Datagram emballĂ©s avec des paramĂštres d'entrĂ©e prĂ©alablement dĂ©finis.
Il convient de mentionner que chaque tùche Airflow s'exécute dans un thread séparé et ne sait rien des autres tùches. Ainsi, l'interaction entre les tùches se fait via des opérateurs de contrÎle tels que DummyOperator ou BranchPythonOperator.
L'utilisation conjointe de la solution low-code Datagram et de l'universalisation des fichiers de configuration (formant le Dag) a permis d'accélérer et de simplifier considérablement le processus de développement des flux de chargement de données.
Calcul des vitrines
Sans doute, l'Ă©tape la plus intellectuellement exigeante dans la production de donnĂ©es analytiques est la construction des vitrines. Dans le contexte de l'un des flux de calcul des donnĂ©es d'une sociĂ©tĂ© de recherche, Ă ce stade, une rĂ©fĂ©rence est Ă©tablie en tenant compte du fuseau horaire en rapport avec la grille de diffusion. Une correction peut Ă©galement ĂȘtre appliquĂ©e pour le rĂ©seau de diffusion local (actualitĂ©s locales et publicitĂ©). Parmi d'autres, cette Ă©tape implique la segmentation des intervalles d'Ă©coute continue des produits mĂ©diatiques basĂ©e sur l'analyse des intervalles d'Ă©coute. C'est aussi Ă cette Ă©tape que se produit le « poids » des valeurs d'Ă©coute en fonction des informations sur leur importance (calcul d'un coefficient de correction).

Une étape distincte de la préparation des vitrines est la validation des données. L'algorithme de validation est lié à l'application d'un certain nombre de modÚles mathématiques. Cependant, l'utilisation d'une plateforme low-code permet de décomposer un algorithme complexe en plusieurs mappages lisibles visuellement. Chacun de ces mappages remplit une tùche spécifique. En conséquence, un débogage intermédiaire, un logging et une visualisation des étapes de préparation des données sont possibles.
Il a été décidé de discrétiser l'algorithme de validation en sous-étapes suivantes :
- Construction de régressions des dépendances d'écoute de la télé dans la région par rapport à l'écoute de toutes les chaßnes dans la région sur 60 jours.
- Calcul des résidus studentisés (écarts entre les valeurs réelles et prévues par le modÚle de régression) pour tous les points de régression et pour le jour de calcul.
- Ăchantillonnage des paires anormales rĂ©gion-tĂ©lĂ©vision, oĂč le rĂ©sidu studentisĂ© du jour de calcul dĂ©passe la norme (dĂ©finie par les paramĂštres de l'opĂ©ration).
- Le recalcul du solde ajusté standardisé pour des paires anormales région-télé réseau pour chaque répondant ayant regardé le réseau dans la région, déterminant la contribution de ce répondant (le montant du changement du solde standardisé) en excluant la contribution de ce répondant de l'échantillon.
- Recherche de candidats dont l'exclusion ramÚne le solde standardisé du jour de calcul à la normale.
L'exemple ci-dessus confirme l'hypothĂšse selon laquelle un data engineer a dĂ©jĂ trop d'idĂ©es en tĂȘte⊠Et, si c'est vraiment un « ingĂ©nieur » et non un « codeur », alors la peur de la dĂ©gradation professionnelle due Ă l'utilisation d'outils low-code devrait le quitter dĂ©finitivement.
Que peut faire de plus le low-code ?
Le champ d'application de l'outil low-code pour le traitement par lots et en flux de donnĂ©es sans nĂ©cessiter d'Ă©criture manuelle de code en Scala ne s'arrĂȘte pas lĂ .
L'utilisation de low-code dans le développement de datalakes est déjà devenue une certaine norme pour nous. On peut probablement dire que les solutions basées sur la pile Hadoop suivent le chemin de développement des DWH classiques basés sur les SGBD. Les outils low-code sur la pile Hadoop peuvent résoudre à la fois des tùches de traitement de données et des tùches de création d'interfaces BI finales. Il convient de noter que le BI peut ne pas seulement impliquer la représentation des données, mais aussi leur édition par des utilisateurs professionnels. Cette fonctionnalité est souvent utilisée par nous pour construire des plateformes analytiques pour le secteur financier.

Parmi d'autres, grùce au low-code et en particulier à Datagram, il est possible de résoudre la problématique du suivi de l'origine des objets de flux de données avec une granularité jusqu'aux champs individuels (lineage). Pour cela, l'outil low-code intÚgre un couplage avec Apache Atlas et Cloudera Navigator. En essence, le développeur doit enregistrer une série d'objets dans les dictionnaires Atlas et faire référence à ces objets enregistrés lors de la construction des mappages. Le mécanisme de traçabilité des données ou d'analyse des dépendances des objets permet de gagner un temps considérable lors de la nécessité d'apporter des modifications aux algorithmes de calcul. Par exemple, lors de l'établissement de rapports financiers, cette fonctionnalité permet de mieux surmonter les périodes de changements législatifs. En effet, plus nous comprenons la dépendance inter-formulaire en ce qui concerne les objets du niveau détaillé, moins nous serons confrontés à des défauts « soudains » et nous réduirons le nombre de révisions.

Qualité des données & Low-code
Une autre tĂąche mise en Ćuvre par l'outil low-code dans le projet de la sociĂ©tĂ© Mediascope Ă©tait de la classe QualitĂ© des donnĂ©es. La particularitĂ© de la mise en Ćuvre du pipeline de vĂ©rification des donnĂ©es pour le projet de cette sociĂ©tĂ© de recherche Ă©tait l'absence d'impact sur la fonctionnalitĂ© et la vitesse de l'Ă©coulement principal du calcul des donnĂ©es. Pour orchestrer des flux indĂ©pendants de vĂ©rification des donnĂ©es, nous avons utilisĂ© le dĂ©jĂ connu Apache Airflow. Ă mesure que chaque Ă©tape de production des donnĂ©es Ă©tait prĂȘte, une partie distincte du pipeline DQ se lançait parallĂšlement.
Une bonne pratique consiste Ă surveiller la qualitĂ© des donnĂ©es dĂšs leur crĂ©ation dans la plateforme analytique. En ayant des informations sur les mĂ©tadonnĂ©es, nous pouvons dĂ©jĂ , dĂšs l'entrĂ©e des informations dans la couche primaire, vĂ©rifier le respect des conditions de base â not null, contraintes, clĂ©s Ă©trangĂšres. Cette fonctionnalitĂ© est rĂ©alisĂ©e sur la base de mappages gĂ©nĂ©rĂ©s automatiquement de la famille qualitĂ© des donnĂ©es dans Datagram. La gĂ©nĂ©ration de code, dans ce cas, repose Ă©galement sur les mĂ©tadonnĂ©es du modĂšle. Dans le projet de la sociĂ©tĂ© Mediascope, le couplage s'est fait avec les mĂ©tadonnĂ©es du produit Enterprise Architect.
Grùce au couplage de l'outil low-code et d'Enterprise Architect, les vérifications suivantes ont été générées automatiquement :
- Vérification de la présence de valeurs « null » dans les champs avec le modificateur « not null » ;
- Vérification de la présence de doublons de clé primaire ;
- ContrÎle de la clé étrangÚre de l'entité;
- Vérification de l'unicité d'une ligne par ensemble de champs.
Pour des vérifications plus complexes de la disponibilité et de la fiabilité des données, un mappage avec Scala Expression a été créé, prenant en entrée le code Spark SQL externe de vérification, préparé par les analystes dans Zeppelin.

Bien sĂ»r, l'autogĂ©nĂ©ration des contrĂŽles doit ĂȘtre abordĂ©e progressivement. Dans le cadre du projet dĂ©crit, les Ă©tapes suivantes ont prĂ©cĂ©dĂ© :
- DQ, implémentées dans des notebooks Zeppelin;
- DQ, intégrées dans le mappage;
- DQ sous forme de mappages massifs séparés, contenant un ensemble complet de vérifications pour chaque entité;
- Mappages DQ universels paramétrés, prenant en entrée des informations sur les métadonnées et les contrÎles métiers.
Sans doute, le principal avantage de la création d'un service de vérifications paramétrées est la réduction du temps de livraison des fonctionnalités dans l'environnement de production. De nouveaux contrÎles de qualité peuvent contourner le modÚle classique de livraison de code, indirectement via les environnements de développement et de test :
- Tous les contrÎles de métadonnées sont générés automatiquement lors de la modification du modÚle dans l'EA;
- Les contrĂŽles de disponibilitĂ© des donnĂ©es (dĂ©termination de la prĂ©sence de certaines donnĂ©es Ă un moment donnĂ©) peuvent ĂȘtre gĂ©nĂ©rĂ©s sur la base d'un annuaire stockant le timing attendu de l'apparition de la prochaine sĂ©rie de donnĂ©es par objets;
- Les contrÎles métiers de fiabilité des données sont réalisés par les analystes dans des notebooks Zeppelin. Ceux-ci sont directement envoyés dans les tableaux de configuration du module DQ dans l'environnement de production.
Les risques d'envoi direct de scripts en production sont pratiquement inexistants. MĂȘme en cas d'erreur syntaxique, la pire chose qui pourrait arriver serait de ne pas exĂ©cuter un contrĂŽle, car le flux de calcul des donnĂ©es et le flux de lancement des contrĂŽles de qualitĂ© sont sĂ©parĂ©s.
Essentiellement, le service DQ est en permanence actif dans l'environnement de production et prĂȘt Ă commencer son travail dĂšs l'arrivĂ©e d'une nouvelle sĂ©rie de donnĂ©es.
En conclusion
L'avantage d'utiliser le low-code est évident. Les développeurs n'ont pas besoin de créer une application « de zéro ». De plus, un programmeur libéré de tùches supplémentaires obtient des résultats plus rapidement. La vitesse, à son tour, libÚre des ressources supplémentaires en temps pour résoudre des questions d'optimisation. Par conséquent, dans ce cas, on peut s'attendre à une solution de meilleure qualité et plus rapide.
Bien sĂ»r, le low-code n'est pas une panacĂ©e, et la magie ne se produira pas d'elle-mĂȘme :
- L'industrie du low-code traverse une phase de « consolidation », et il n'existe pas encore de normes industrielles homogÚnes ;
- De nombreuses solutions low-code ne sont pas gratuites, et leur acquisition doit ĂȘtre un choix rĂ©flĂ©chi, Ă faire uniquement avec une certitude totale de la rentabilitĂ© financiĂšre de leur utilisation ;
- De nombreuses solutions low-code ne s'entendent pas toujours bien avec GIT / SVN. Elles peuvent ĂȘtre difficiles Ă utiliser en cas de masquage du code gĂ©nĂ©rĂ© ;
- Lors de l'expansion de l'architecture, des ajustements de la solution low-code peuvent ĂȘtre nĂ©cessaires - ce qui, Ă son tour, provoque un effet de « dĂ©pendance » vis-Ă -vis du fournisseur de la solution low-code.
- Un niveau de sĂ©curitĂ© adĂ©quat est possible, mais il est trĂšs laborieux et complexe Ă mettre en Ćuvre pour les moteurs des systĂšmes low-code. Les plateformes low-code ne devraient pas ĂȘtre choisies uniquement en fonction de la recherche de bĂ©nĂ©fices liĂ©s Ă leur utilisation. Lors du choix, il convient de se poser des questions sur la prĂ©sence de fonctionnalitĂ©s de gestion des accĂšs et de dĂ©lĂ©gation / escalade des donnĂ©es d'identification au niveau de l'ensemble du paysage informatique de l'organisation.

Cependant, si tous les inconvénients du systÚme choisi vous sont connus, et que les bénéfices de son utilisation sont néanmoins dominants, alors passez au low-code sans crainte. D'autant plus que la transition vers celui-ci est inévitable - tout comme toute évolution.
Si un dĂ©veloppeur sur une plateforme low-code peut accomplir son travail plus rapidement que deux dĂ©veloppeurs sans low-code, alors cela donne Ă l'entreprise un avantage sur tous les fronts. Le seuil d'accĂšs aux solutions low-code est plus bas que celui des technologies « traditionnelles », ce qui a un impact positif sur le problĂšme de la pĂ©nurie de main-d'Ćuvre. L'utilisation d'outils Ă faible code permet d'accĂ©lĂ©rer l'interaction entre les Ă©quipes fonctionnelles et de prendre des dĂ©cisions plus rapides sur la validitĂ© du chemin choisi pour des recherches en data science. Les plateformes Ă faible code peuvent ĂȘtre Ă l'origine de la transformation numĂ©rique de l'organisation, car les solutions produites peuvent ĂȘtre comprises par des non-techniques (en particulier, des utilisateurs mĂ©tier).
Si vous avez des délais serrés, une logique commerciale complexe, une pénurie d'expertise technologique, et que vous devez accélérer le time to market, alors le low-code est l'un des moyens de répondre à vos besoins.
Il ne faut pas sous-estimer l'importance des outils de développement traditionnels, cependant, dans de nombreux cas, l'application de solutions à faible code est le meilleur moyen d'augmenter l'efficacité des tùches à accomplir.
Source : habr.com
