{"id":33757,"date":"2022-08-08T11:28:30","date_gmt":"2022-08-08T15:28:30","guid":{"rendered":"https:\/\/www.canarie.ca\/?page_id=33757"},"modified":"2024-10-30T09:46:40","modified_gmt":"2024-10-30T13:46:40","slug":"solution-type-pipeline-de-donnees-automatise-adp","status":"publish","type":"page","link":"https:\/\/www.canarie.ca\/fr\/catalogue\/plan-de-vol-pour-projet-argus\/solution-type-pipeline-de-donnees-automatise-adp\/","title":{"rendered":"Solution type : Pipeline de donn\u00e9es automatis\u00e9 (ADP)"},"content":{"rendered":"\n<section class=\"section section--banner simple-fade light-blue alignfull\">\n  <div class=\"grid-container text-center\">\n  \t\t  \t\t  \t  <div class=\"large\"><p><span class=\"TextRun SCXW20856404 BCX0\" lang=\"EN-CA\" xml:lang=\"EN-CA\" data-contrast=\"none\"><span class=\"NormalTextRun SCXW20856404 BCX0\">Bien que le programme ATIR <\/span><span class=\"NormalTextRun SpellingErrorV2Themed SCXW20856404 BCX0\">n\u2019accepte<\/span><span class=\"NormalTextRun SCXW20856404 BCX0\"> plus les <\/span><span class=\"NormalTextRun SpellingErrorV2Themed SCXW20856404 BCX0\">demandes<\/span><span class=\"NormalTextRun SCXW20856404 BCX0\"> pour les <\/span><span class=\"NormalTextRun SpellingErrorV2Themed SCXW20856404 BCX0\">ressources<\/span> <span class=\"NormalTextRun SpellingErrorV2Themed SCXW20856404 BCX0\">en<\/span> <span class=\"NormalTextRun SpellingErrorV2Themed SCXW20856404 BCX0\">nuage<\/span><span class=\"NormalTextRun SCXW20856404 BCX0\">, <\/span><span class=\"NormalTextRun SpellingErrorV2Themed SCXW20856404 BCX0\">vous<\/span> <span class=\"NormalTextRun SpellingErrorV2Themed SCXW20856404 BCX0\">avez<\/span> <span class=\"NormalTextRun SpellingErrorV2Themed SCXW20856404 BCX0\">toujours<\/span> <span class=\"NormalTextRun SpellingErrorV2Themed SCXW20856404 BCX0\">acc\u00e8s<\/span><span class=\"NormalTextRun SCXW20856404 BCX0\"> aux <\/span><span class=\"NormalTextRun SpellingErrorV2Themed SCXW20856404 BCX0\">Propulseurs<\/span><span class=\"NormalTextRun SCXW20856404 BCX0\"> et \u00e0 <\/span><span class=\"NormalTextRun SpellingErrorV2Themed SCXW20856404 BCX0\">leur<\/span><span class=\"NormalTextRun SCXW20856404 BCX0\"> documentation, qui <\/span><span class=\"NormalTextRun SpellingErrorV2Themed SCXW20856404 BCX0\">seront<\/span> <span class=\"NormalTextRun SpellingErrorV2Themed SCXW20856404 BCX0\">pr\u00e9serv\u00e9s<\/span><span class=\"NormalTextRun SCXW20856404 BCX0\"> et <\/span><span class=\"NormalTextRun SpellingErrorV2Themed SCXW20856404 BCX0\">b\u00e9n\u00e9ficieront<\/span><span class=\"NormalTextRun SCXW20856404 BCX0\"> d\u2019un <\/span><span class=\"NormalTextRun SpellingErrorV2Themed SCXW20856404 BCX0\">soutien<\/span> <span class=\"NormalTextRun SpellingErrorV2Themed SCXW20856404 BCX0\">jusqu\u2019au<\/span><strong><span class=\"NormalTextRun SCXW20856404 BCX0\"> 17 <\/span><span class=\"NormalTextRun SpellingErrorV2Themed SCXW20856404 BCX0\">janvier<\/span><span class=\"NormalTextRun SCXW20856404 BCX0\"> 2025.<\/span><\/strong><\/span><strong><span class=\"EOP SCXW20856404 BCX0\" data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335551550&quot;:0,&quot;335551620&quot;:0,&quot;335559738&quot;:240,&quot;335559739&quot;:240}\">\u00a0<\/span><\/strong><\/p>\n<\/div>\n\t  \t  \t\t  <\/div>\n<\/section>\n\n\n\n<section class=\"section section--text-columns no-background\">\n    <div class=\"grid-container\">\n      <div class=\"grid-x grid-padding-x\">\n        <div class=\"cell\">\n                  \t<h3>Apr\u00e8s le 17 janvier 2025:\u00a0<\/h3>\n                    <ul>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"4\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559683&quot;:0,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" aria-setsize=\"-1\" data-aria-posinset=\"1\" data-aria-level=\"1\"><span data-contrast=\"none\">Les saisies d\u2019\u00e9cran devraient rester fid\u00e8les, mais au lieu de vous connecter \u00e0 votre compte ATIR dans AWS quand on vous le demande, vous devrez vous connecter \u00e0 un compte AWS personnel.<\/span><span data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335551550&quot;:0,&quot;335551620&quot;:0,&quot;335559738&quot;:240,&quot;335559739&quot;:240}\">\u00a0<\/span><\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"4\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559683&quot;:0,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" aria-setsize=\"-1\" data-aria-posinset=\"1\" data-aria-level=\"1\"><span data-contrast=\"none\">Les liens vers les scripts CloudFormation d\u2019AWS permettant le d\u00e9ploiement automatique de l\u2019application type devraient rester les m\u00eames et \u00eatre fonctionnels.<\/span><\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"4\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559683&quot;:0,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" aria-setsize=\"-1\" data-aria-posinset=\"1\" data-aria-level=\"1\"><span data-contrast=\"none\">Les liens vers les d\u00e9p\u00f4ts GitHub permettant de t\u00e9l\u00e9charger le code source du Propulseur resteront valables puisque c\u2019est le cr\u00e9ateur du Propulseur (celui qui a \u00e9labor\u00e9 les applications de source ouverte servant d\u2019exemple) qui en est le propri\u00e9taire et en assure le maintien.<\/span><span data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335551550&quot;:0,&quot;335551620&quot;:0,&quot;335559738&quot;:240,&quot;335559739&quot;:240}\">\u00a0<\/span><\/li>\n<\/ul>\n                  <\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n\n\n<section class=\"section section--text-with-image  alignfull full-width grey \">\n    <div class=\"grid-container simple-fade\">\n    <div class=\"grid-x grid-padding-x align-middle\">\n      <div class=\"cell large-6 medium-order-2\">\n\t\t  \t\t\t  <div class=\"full-width-img\" style=\"background-image: url(https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/08\/DAIR-Web-Graphics-6.png); background-size: cover; background-position: center center;\"><\/div>\n\t\t\t  <div class=\"image-mask\"><\/div>\n\t\t        <\/div>\n      <div class=\"cell large-6 medium-order-1 text-left text-cell light\">\n  \t\t                          <div class=\"fade-in-delay text-cell-text\"><h1 id=\"block-fac777b6-edd2-4234-8a73-7b0fa00ea6ce\" class=\"block-editor-rich-text__editable block-editor-block-list__block wp-block is-selected wp-block-heading rich-text\" tabindex=\"0\" role=\"document\" contenteditable=\"true\" aria-multiline=\"true\" aria-label=\"Block: Heading\" data-block=\"fac777b6-edd2-4234-8a73-7b0fa00ea6ce\" data-type=\"core\/heading\" data-title=\"Heading\"><strong data-rich-text-format-boundary=\"true\">Pipeline de donn\u00e9es automatis\u00e9 (ADP)<\/strong><\/h1>\n<p>Voici ce que vous trouverez dans cet solution type :<\/p>\n<ul>\n<li><a href=\"#introduction\">Introduction<\/a><\/li>\n<li><a href=\"#samplesolution\">ADP \u2013 Solution type<\/a><\/li>\n<li><a href=\"#deploiement\">D\u00e9ploiement et configuration<\/a><\/li>\n<li><a href=\"#demonstration\">D\u00e9monstration de la technologie<\/a><\/li>\n<li><a href=\"#cl\u00f4ture\">Cl\u00f4ture<\/a><\/li>\n<li><a href=\"#cconsid\u00e9ration\">Consid\u00e9ration<\/a><\/li>\n<li><a href=\"#glossaire\">Glossaire<\/a><\/li>\n<\/ul>\n<\/div>\n                      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"introduction\">Introduction<\/h2>\n\n\n\n<p>Dans cette solution, nous vous montrerons comment <a href=\"https:\/\/canarie.sharepoint.com\/sites\/DAIR-Programs\/Shared%20Documents\/2020-2024%20Mandate\/Initiatives\/DAIR%20BoosterPack%205-20\/02.%20BoosterPack%20Submissions\/BP-037%20Intelius%20AI\/intelius.ai\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Intelius Analytics<\/strong><\/a> s\u2019est servi de Kubernetes, d\u2019Airflow d\u2019Apache, de MySQL, de FastAPI, de Kafka d\u2019Apache et de React.js pour automatiser deux pipelines de donn\u00e9es en cr\u00e9ant un cadre int\u00e9gr\u00e9 \u00e0 partir de ressources ouvertes.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u00c9nonc\u00e9 du probl\u00e8me<\/h3>\n\n\n\n<p>Trouver un cadre peu co\u00fbteux qui automatisera un pipeline de donn\u00e9es dans son int\u00e9gralit\u00e9 et qu\u2019on pourra adapter aux multiples besoins d\u2019une entreprise n\u2019est pas ais\u00e9. Une architecture \u00e0 trois ou quatre paliers r\u00e8glera la plupart des probl\u00e8mes de donn\u00e9es de l\u2019entreprise. Toutefois, il est difficile de d\u00e9nicher un produit de base ou un prototype \u00e0 partir desquels on pourra structurer des microservices.<\/p>\n\n\n\n<p>Le plus souvent, l\u2019organisation embauchera des architectes (sp\u00e9cialis\u00e9s dans les donn\u00e9es ou les entreprises) pour concevoir et d\u00e9velopper une architecture, puis confiera l\u2019\u00e9laboration des services ind\u00e9pendamment \u00e0 une \u00e9quipe de d\u00e9veloppement (regroupant des comp\u00e9tences pr\u00e9cises). Cr\u00e9er une architecture de base demande en soi plusieurs mois et l\u2019organisation d\u00e9pensera des milliers de dollars en personnel pour amorcer le travail quand on doit partir de z\u00e9ro. La solution que voici servira de point de d\u00e9part et \u00e9vitera \u00e0 l\u2019organisation de b\u00e2tir un pipeline de donn\u00e9es automatis\u00e9 de A \u00e0 Z.<\/p>\n\n\n\n<p>Bien que la solution propos\u00e9e automatise l\u2019ingestion, le traitement, le stockage et la pr\u00e9sentation des donn\u00e9es et des informations boursi\u00e8res, on pourra s\u2019en servir comme approche g\u00e9n\u00e9rale aux probl\u00e8mes les plus fr\u00e9quents dans une entreprise. La majorit\u00e9 des pipelines automatis\u00e9s sont con\u00e7us de la m\u00eame fa\u00e7on pour g\u00e9rer les donn\u00e9es. L\u2019organisation aura donc une longueur d\u2019avance et n\u2019aura qu\u2019\u00e0 adapter la solution selon les besoins qui lui sont propres.<\/p>\n\n\n\n<p>Applications potentielles<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Analyse des donn\u00e9es venant de l\u2019Internet des objets (IdO) dans diverses industries&nbsp;: des donn\u00e9es issues de capteurs aux d\u00e9ductions, ce Propulseur servira de fondation au calcul informatis\u00e9 en p\u00e9riph\u00e9rie de r\u00e9seau et au traitement des donn\u00e9es en arri\u00e8re-plan<\/li>\n\n\n\n<li>Traitement robotis\u00e9 des donn\u00e9es en temps r\u00e9el et int\u00e9gration aux activit\u00e9s effectu\u00e9es en arri\u00e8re-plan<\/li>\n\n\n\n<li>La d\u00e9tection des fraudes, la formulation de recommandations en temps r\u00e9el et l\u2019analyse assist\u00e9e par la voix (assistant personnel) figurent parmi les applications possibles de l\u2019architecture propos\u00e9e pour les microservices<\/li>\n<\/ul>\n\n\n\n<p>N\u2019importe quelle entreprise qui souhaite instaurer un service d\u2019analyse en temps r\u00e9el ou quasi-r\u00e9el tirera parti de cette architecture qui n\u2019est assujettie \u00e0 aucun nuage commercial.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"samplesolution\">Pipelines de donn\u00e9es automatis\u00e9s (ADP) dans le nuage de l\u2019ATIR \u2013 Solution type<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Diagramme<\/h3>\n\n\n\n<p>Voici une illustration de la solution type sous forme de diagramme.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"332\" src=\"https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP-diagram.jpg\" alt=\"\" class=\"wp-image-33759\" style=\"width:942px;height:501px\" srcset=\"https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP-diagram.jpg 624w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP-diagram-300x160.jpg 300w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/figure>\n<\/div>\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u00c9l\u00e9ments<\/h2>\n\n\n\n<p>Le tableau qui suit r\u00e9sume les principaux \u00e9l\u00e9ments dont est constitu\u00e9e la Solution type. Le Plan de vol donne un aper\u00e7u des technologies et des outils qu\u2019elle emploie et qui apparaissent dans le diagramme ci-dessus (Kubernetes, Airflow et Kafka d\u2019Apache, FastAPI, MySQL).<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-regular\"><table><thead><tr><th><strong>Composant<\/strong><\/th><th><strong>Description<\/strong><\/th><\/tr><\/thead><tbody><tr><td>Service d\u2019ingestion<strong><\/strong><\/td><td>Service cr\u00e9\u00e9 en Python pouvant \u00eatre d\u00e9ploy\u00e9 ind\u00e9pendamment et au moyen duquel les donn\u00e9es venant de l\u2019ext\u00e9rieur sont ing\u00e9r\u00e9es puis achemin\u00e9es au service de messagerie Kafka.<br>La Solution type compte deux pipelines de graphes orient\u00e9s acycliques (GOA) sur une instance Airflow pour l\u2019ingestion des donn\u00e9es :<br><br>1) le premier saisit le cours boursier toutes les minutes, pendant les heures d\u2019ouverture normales de la bourse [de 9 h 30 \u00e0 16 h, HE];<br>2) le second saisit les informations du t\u00e9l\u00e9scripteur sur cinq titres cot\u00e9s en bourse aux <br><br>\u00c9tats-Unis [AAL, AAPL, AMD, MSFT et TSLA] toutes les cinq minutes.<br>Le cours de la bourse est ing\u00e9r\u00e9 \u00e0 partir d\u2019une API gratuite de <a href=\"http:\/\/finnhib.io\/\" target=\"_blank\" rel=\"noreferrer noopener\">Finnhib.io<\/a> et les informations boursi\u00e8res, au moyen d\u2019une <a href=\"https:\/\/polygon.io\/docs\/stocks\/get_v2_reference_news\" target=\"_blank\" rel=\"noreferrer noopener\">API pour t\u00e9l\u00e9scripteur<\/a> gratuite de <a href=\"https:\/\/polygon.io\/\" target=\"_blank\" rel=\"noreferrer noopener\">Polygon.io<\/a>.<\/td><\/tr><tr><td>Service de traitement<strong><\/strong><\/td><td>Service d\u00e9ployable ind\u00e9pendamment, cr\u00e9\u00e9 en Python, qui traite les donn\u00e9es ing\u00e9r\u00e9es \u00e0 l\u2019\u00e9tape pr\u00e9c\u00e9dente. Il permet \u00e0 l\u2019utilisateur de traiter les donn\u00e9es plus en profondeur par en ajoutant de nouvelles fonctionnalit\u00e9s comme leur adaptation \u00e0 un nouveau sch\u00e9ma, leur \u00e9puration, leur configuration et leur int\u00e9gration aux donn\u00e9es d\u2019autres sources. Deux pipelines sur la m\u00eame instance Airflow ing\u00e8rent les donn\u00e9es \u00e0 traiter, c\u2019est-\u00e0-dire&nbsp;: <br><br>1. le cours de la bourse sous forme de messages Kafka;<br>2. les informations boursi\u00e8res sauvegard\u00e9es dans une table de la base de donn\u00e9es MySQL.&nbsp; <br><br>Dans le premier pipeline, l\u2019indicateur technique EMA9 [moyenne mobile exponentielle de neuf jours] est calcul\u00e9 puis enregistr\u00e9 dans la base de donn\u00e9es MySQL pour illustrer une proc\u00e9dure de traitement typique. Dans le deuxi\u00e8me, les informations sont envoy\u00e9es \u00e0 une API qui pr\u00e9dit le sentiment suscit\u00e9 par l\u2019information et la pr\u00e9vision est stock\u00e9e dans la base de donn\u00e9es MySQL.<\/td><\/tr><tr><td>Service d\u2019analyse<strong><\/strong><\/td><td>Service cr\u00e9\u00e9 en Python et d\u00e9ployable seul, permettant l\u2019\u00e9laboration de mod\u00e8les d\u2019analyse simples ou complexes, en vertu de l\u2019usage qu\u2019on souhaite en faire.<br>La Solution type utilise un mod\u00e8le de pr\u00e9vision des sentiments pr\u00e9form\u00e9 pour pr\u00e9dire quelle influence (positive, neutre ou n\u00e9gative) chaque information ing\u00e9r\u00e9e aura sur le titre suivi par le t\u00e9l\u00e9scripteur. <br><br>La nature du sentiment est d\u00e9finie d\u2019apr\u00e8s la note qu\u2019attribue le mod\u00e8le de traitement en langage naturel (NLP). La fonction pr\u00e9visionnelle s\u2019exprime sous la forme d\u2019une API cr\u00e9\u00e9e par un outil <a href=\"https:\/\/fastapi.tiangolo.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">FastAPI<\/a>, que convoque le pipeline de traitement des informations boursi\u00e8res.<\/td><\/tr><tr><td>Service de donn\u00e9es<strong><\/strong><\/td><td>La Solution type utilise MySQL comme outil de source ouverte pour stocker les donn\u00e9es. Par d\u00e9faut, elle cr\u00e9e une base de donn\u00e9es appel\u00e9e \u00ab&nbsp;pipelines de donn\u00e9es automatis\u00e9s&nbsp;\u00bb et comprenant trois tables lors de son d\u00e9ploiement. <br><br>La Solution type recourt aussi \u00e0 la plateforme de messagerie de source ouverte Kafka d\u2019Apache pour enregistrer les donn\u00e9es \u00e0 chaud (comme cela se fait habituellement avec la diffusion en continu \u00e0 faible latence). Ce service cr\u00e9e le sujet \u00ab&nbsp;DAIR-dataingestion-1min-topic&nbsp;\u00bb, qui correspond au cours de la bourse que le t\u00e9l\u00e9scripteur actualise toutes les minutes.&nbsp;<\/td><\/tr><tr><td>Service interm\u00e9diaire (en arri\u00e8re-plan)<strong><\/strong><\/td><td>Les r\u00e9sultats du syst\u00e8me sont r\u00e9cup\u00e9r\u00e9s avec les API de ce service, qui correspond \u00e0 la couche s\u00e9parant celles de traitement et de pr\u00e9sentation des donn\u00e9es.<br><br>La Solution type cr\u00e9e deux API donnant acc\u00e8s aux donn\u00e9es et aux informations boursi\u00e8res trait\u00e9es avec FastAPI. Bien que ces API soient normalement convoqu\u00e9es par les services clients, on peut y acc\u00e9der avec l\u2019interface utilisateur Swagger ou Redoc. Pour en savoir plus \u00e0 ce sujet, lisez <a href=\"https:\/\/fastapi.tiangolo.com\/features\/\" target=\"_blank\" rel=\"noreferrer noopener\">cette page<\/a> de la documentation sur FastAPI.<\/td><\/tr><tr><td>Service client (pr\u00e9sentation des donn\u00e9es)<strong><\/strong><\/td><td>Ce service \u00e9tablit une interface avec laquelle l\u2019utilisateur acc\u00e8de aux r\u00e9sultats du syst\u00e8me. L\u2019application dans cette couche pourrait correspondre \u00e0 un tableau de bord, \u00e0 des pages Web, \u00e0 une application mobile ou \u00e0 d\u2019autres outils frontaux. <br><br>La Solution type d\u00e9ploie une page Web sur laquelle apparaissent le cours du titre cot\u00e9 en bourse sous forme de graphique en chandelier et les plus r\u00e9centes informations boursi\u00e8res, dont le sentiment pr\u00e9vu, une fois qu\u2019on a choisi un titre et une date. La page a \u00e9t\u00e9 d\u00e9velopp\u00e9e avec la technologie <a href=\"https:\/\/reactjs.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">React.js.<\/a><\/td><\/tr><tr><td>Kafdrop<\/td><td><a href=\"https:\/\/github.com\/obsidiandynamics\/kafdrop#:~:text=Kafdrop%20is%20a%20web%20UI,x%2C%20Helm%20and%20Kubernetes.\" target=\"_blank\" rel=\"noreferrer noopener\">Kafdrop <\/a>est une interface utilisateur de source ouverte permettant de voir les courtiers, les sujets, les consommateurs et les producteurs de Kafka, ainsi que de parcourir les messages de Kafka.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"deploiement\">D\u00e9ploiement et configuration<\/h2>\n\n\n\n<p>Si vous \u00eates inscrit \u00e0 l\u2019ATIR, la Solution type peut \u00eatre d\u00e9ploy\u00e9e sur une nouvelle instance pour vue que les instructions qui suivent soient respect\u00e9es.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u00c0 v\u00e9rifier avant le d\u00e9ploiement<\/h3>\n\n\n\n<p>La Solution type s\u2019appuie sur le <a href=\"https:\/\/www.canarie.ca\/fr\/nuage\/propulseurs\/catalogue\/plan-de-vol-ido-automatisation-de-lorchestration-en-nuage-avec-kubernetes\/solution-type-trousse-dautomatisation-kubernetes-kat\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Propulseur \u00ab&nbsp;Trousse d\u2019automatisation Kubernetes&nbsp;\u00bb (KAT)<\/strong><\/a>, qui repose sur les hypoth\u00e8ses ou les pr\u00e9requis que voici&nbsp;:<\/p>\n\n\n\n<ol class=\"wp-block-list\" style=\"list-style-type:1\">\n<li>vous avez cr\u00e9\u00e9 un groupe de s\u00e9curit\u00e9 donnant acc\u00e8s aux machines virtuelles (MV) \u00e9tablies dans le nuage de l\u2019ATIR par SSH, \u00e0 leur adresse IP (TCP port 22);<\/li>\n\n\n\n<li>vous avez configur\u00e9 une cl\u00e9 SSH priv\u00e9e pour acc\u00e9der aux MV de l\u2019ATIR;<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button has-custom-width wp-block-button__width-100\"><a class=\"wp-block-button__link has-light-grey-color has-cyan-background-color has-text-color has-background wp-element-button\" href=\"https:\/\/docs.aws.amazon.com\/fr_fr\/vpc\/latest\/userguide\/security-group-rules.html#adding-security-group-rules\" style=\"border-radius:41px\"><strong>Ajouter des r\u00e8gles entrantes \u00e0 un groupe de s\u00e9curit\u00e9 dans AWS<\/strong><\/a><\/div>\n<\/div>\n\n\n\n<p>Vous devez pouvoir cr\u00e9er une MV Linux dans le nuage de l\u2019ATIR et vous y connecter par SSH avant de continuer.<\/p>\n\n\n\n<p><strong>Attention&nbsp;: <\/strong>Le Propulseur KAT n\u2019a pas besoin d\u2019\u00eatre install\u00e9 avant le Propulseur ADP, car celui-ci int\u00e8gre le script n\u00e9cessaire pour cr\u00e9er un n\u0153ud microK8 de Kubernetes et installer les outils pertinents, comme le tableau de bord Kubernetes, le contr\u00f4leur d\u2019entr\u00e9e NGINX et le gestionnaire de paquets Helm.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Obtenez les cl\u00e9s des API de Finnhub.io et Polygon.io<\/h3>\n\n\n\n<p>Pour ing\u00e9rer les cotes et les informations boursi\u00e8res en temps r\u00e9el, inscrivez-vous gratuitement aux services <a href=\"https:\/\/finnhub.io\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>finnhub.io<\/strong><\/a> et <a href=\"https:\/\/polygon.io\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>polygon.io<\/strong><\/a>. Ces deux organisations proposent un abonnement gratuit qui vous permettra d\u2019obtenir le cours des titres cot\u00e9s en bourse et les informations pertinentes (des limites s\u2019appliquent) dont le Propulseur aura besoin. La Solution type est con\u00e7ue pour fonctionner normalement avec le nombre restreint d\u2019appels lanc\u00e9s par l\u2019API en vertu de ces abonnements gratuits.<\/p>\n\n\n\n<p>Une fois inscrit, copiez les cl\u00e9s de l\u2019API (jeton) qui correspond \u00e0 chaque source de donn\u00e9es. Vous en aurez besoin lors du d\u00e9ploiement de la Solution type.<\/p>\n\n\n\n<p>Dans le cas de finnhub.io, apr\u00e8s vous \u00eatre connect\u00e9, vous trouverez la cl\u00e9 gratuite et pourrez la copier sur le tableau de bord principal, comme le montre l\u2019illustration ci-dessous.<\/p>\n\n\n<div class=\"wp-block-image is-style-default\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"562\" src=\"https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP1-1024x562.png\" alt=\"\" class=\"wp-image-33767\" srcset=\"https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP1-1024x562.png 1024w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP1-300x165.png 300w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP1-768x421.png 768w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP1.png 1276w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p><\/p>\n\n\n\n<p>Pour polygon.io, apr\u00e8s l\u2019inscription, vous devrez vous rendre \u00e0 la page <strong>API Keys<\/strong> et cliquer <strong>Add API Key<\/strong>. Ensuite, il vous suffira de copier la cl\u00e9 gratuite de la mani\u00e8re indiqu\u00e9e ci-dessous.<\/p>\n\n\n<div class=\"wp-block-image is-style-default\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"664\" src=\"https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP2-1024x664.png\" alt=\"\" class=\"wp-image-33769\" srcset=\"https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP2-1024x664.png 1024w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP2-300x195.png 300w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP2-768x498.png 768w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP2.png 1291w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">D\u00e9ploiement de la Solution type dans le nuage de l\u2019ATIR<\/h2>\n\n\n\n<p>Connectez-vous \u00e0 votre compte AWS de l\u2019ATIR en suivant les instructions que vous a fournies l\u2019\u00e9quipe de l\u2019ATIR.<\/p>\n\n\n\n<p>Ouvrez une autre fen\u00eatre dans le navigateur et allez \u00e0 la page du <a href=\"https:\/\/www.canarie.ca\/fr\/nuage\/propulseurs\/\"><strong>Catalogue des Propulseurs de l\u2019ATIR<\/strong><\/a> puis \u00e0 la section d\u2019Intelius (Pipeline de donn\u00e9es automatis\u00e9) et cliquez <strong>D\u00c9PLOYER<\/strong> pour lancer le Propulseur avec la pile AWS Cloudformation.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"431\" src=\"https:\/\/www.canarie.ca\/wp-content\/uploads\/2023\/08\/image-9.png\" alt=\"\" class=\"wp-image-39945\" srcset=\"https:\/\/www.canarie.ca\/wp-content\/uploads\/2023\/08\/image-9.png 975w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2023\/08\/image-9-300x133.png 300w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2023\/08\/image-9-768x339.png 768w\" sizes=\"auto, (max-width: 975px) 100vw, 975px\" \/><\/figure>\n<\/div>\n\n\n<p>Cliquez <strong>Suivant<\/strong> pour passer \u00e0 la deuxi\u00e8me \u00e9tape de Cloudformation et remplissez le formulaire de configuration. Dans les champs <strong>APIKeyFINNHUB<\/strong> et <strong>APIKeyPOLYGON<\/strong>, respectivement, saisissez les cl\u00e9s de l\u2019API que vous avez copi\u00e9es apr\u00e8s vous \u00eatre inscrit gratuitement sur Finnhub.io et polygon.io. Dans le champ <strong>InstanceName<\/strong>, donnez un nom unique \u00e0 une instance de votre serveur d\u2019application, puis compl\u00e9tez le formulaire avec les menus d\u00e9roulants. Veuillez noter que certains param\u00e8tres comme <strong>ApplicationImage<\/strong> et <strong>InstanceType <\/strong>sont d\u00e9j\u00e0 configur\u00e9s et ne peuvent \u00eatre modifi\u00e9s.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"942\" height=\"636\" src=\"https:\/\/www.canarie.ca\/wp-content\/uploads\/2023\/08\/image-10.png\" alt=\"\" class=\"wp-image-39947\" srcset=\"https:\/\/www.canarie.ca\/wp-content\/uploads\/2023\/08\/image-10.png 942w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2023\/08\/image-10-300x203.png 300w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2023\/08\/image-10-768x519.png 768w\" sizes=\"auto, (max-width: 942px) 100vw, 942px\" \/><\/figure>\n<\/div>\n\n\n<p>Cliquez <strong>SUIVANT<\/strong> pour passer \u00e0 la troisi\u00e8me \u00e9tape de CloudFormation. Cette partie concerne la configuration d\u2019options avanc\u00e9es ou suppl\u00e9mentaires, inutiles dans le cas qui nous int\u00e9resse. Cliquez simplement <strong>Suivant<\/strong> au bas de la page pour sauter cette \u00e9tape et passer \u00e0 la quatri\u00e8me et derni\u00e8re de CloudFormation.<\/p>\n\n\n\n<p>La derni\u00e8re partie vous permet de v\u00e9rifier la configuration actuelle du Propulseur et d\u2019y apporter des modifications avec le bouton <strong>Modifier<\/strong>, si vous le d\u00e9sirez. Une fois que la configuration vous convient, cliquez <strong>Soumettre<\/strong>, au bas de la page, pour d\u00e9ployer le Propulseur.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"906\" height=\"616\" src=\"https:\/\/www.canarie.ca\/wp-content\/uploads\/2023\/08\/image-11.png\" alt=\"\" class=\"wp-image-39949\" srcset=\"https:\/\/www.canarie.ca\/wp-content\/uploads\/2023\/08\/image-11.png 906w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2023\/08\/image-11-300x204.png 300w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2023\/08\/image-11-768x522.png 768w\" sizes=\"auto, (max-width: 906px) 100vw, 906px\" \/><\/figure>\n<\/div>\n\n\n<p>Le d\u00e9ploiement commence par la cr\u00e9ation d\u2019une nouvelle instance. Le reste est automatique. Suivre le d\u00e9veloppement de l\u2019instance AWS n\u2019est possible qu\u2019avec les onglets <strong>\u00c9v\u00e9nements<\/strong> et<strong> Ressources<\/strong> de la console CloudFormation. Pour v\u00e9rifier l\u2019avancement du d\u00e9ploiement, vous devrez donc vous connecter au serveur de l\u2019application.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"856\" height=\"392\" src=\"https:\/\/www.canarie.ca\/wp-content\/uploads\/2023\/08\/image-12.png\" alt=\"\" class=\"wp-image-39951\" srcset=\"https:\/\/www.canarie.ca\/wp-content\/uploads\/2023\/08\/image-12.png 856w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2023\/08\/image-12-300x137.png 300w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2023\/08\/image-12-768x352.png 768w\" sizes=\"auto, (max-width: 856px) 100vw, 856px\" \/><\/figure>\n<\/div>\n\n\n<p>Notez l\u2019adresse IP qui appara\u00eet sur l\u2019onglet<strong> Sorties<\/strong> de la page CloudFormation du Propulseur. Il s\u2019agit de l\u2019adresse IP externe de l\u2019instance qui vient d\u2019\u00eatre cr\u00e9\u00e9e. Vous en aurez besoin pour acc\u00e9der \u00e0 l\u2019interface web de l\u2019application ou vous connecter au serveur par le protocole SSH.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"291\" src=\"https:\/\/www.canarie.ca\/wp-content\/uploads\/2023\/08\/image-13.png\" alt=\"\" class=\"wp-image-39953\" srcset=\"https:\/\/www.canarie.ca\/wp-content\/uploads\/2023\/08\/image-13.png 975w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2023\/08\/image-13-300x90.png 300w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2023\/08\/image-13-768x229.png 768w\" sizes=\"auto, (max-width: 975px) 100vw, 975px\" \/><\/figure>\n<\/div>\n\n\n<p>Connectez-vous au serveur de l\u2019application \u00e0 partir d\u2019une coquille ou d\u2019un terminal utilisant le protocole SSH avec la commande suivante&nbsp;:<\/p>\n\n\n\n<p><kbd>ssh -i&nbsp; key_file.pem ubuntu@Public_IP<\/kbd><\/p>\n\n\n\n<p>Remplacez \u00ab&nbsp;key_file&nbsp;\u00bb par la cl\u00e9 priv\u00e9e de la bicl\u00e9 SSH choisie sur le formulaire des param\u00e8tres de configuration et remplacez \u00ab&nbsp;Public_IP&nbsp;\u00bb par l\u2019adresse IP de l\u2019onglet <strong>Sorties<\/strong>, que vous avez pr\u00e9c\u00e9demment not\u00e9e.<\/p>\n\n\n\n<p>Une fois la connexion avec le serveur de l\u2019application \u00e9tablie, vous pourrez suivre le d\u00e9ploiement du script d\u2019automatisation avec les commandes que voici&nbsp;:<\/p>\n\n\n\n<p><kbd>source \/etc\/profile.d\/boosterpack.sh<\/kbd><\/p>\n\n\n\n<p><kbd>tail -f \/var\/log\/boosterpack.log<\/kbd><\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"788\" height=\"361\" src=\"https:\/\/www.canarie.ca\/wp-content\/uploads\/2023\/08\/image-14.png\" alt=\"\" class=\"wp-image-39955\" srcset=\"https:\/\/www.canarie.ca\/wp-content\/uploads\/2023\/08\/image-14.png 788w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2023\/08\/image-14-300x137.png 300w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2023\/08\/image-14-768x352.png 768w\" sizes=\"auto, (max-width: 788px) 100vw, 788px\" \/><\/figure>\n<\/div>\n\n\n<p>Notez le jeton indiqu\u00e9 \u00e0 la fin du journal d\u2019installation du Propulseur (encadr\u00e9 en rouge sur l\u2019illustration qui pr\u00e9c\u00e8de). Vous en aurez besoin plus tard, quand vous vous connecterez \u00e0 la console Kubernetes. Vous retrouverez aussi ce jeton sur le serveur d\u2019application du Propulseur en ex\u00e9cutant la commande que voici&nbsp;:<\/p>\n\n\n\n<p><kbd>microk8s config<\/kbd><\/p>\n\n\n\n<p>Avant d\u2019aller plus loin, vous devrez ajouter une r\u00e8gle entrante au groupe de s\u00e9curit\u00e9 par d\u00e9faut s\u00e9lectionner lors du param\u00e9trage de CloudFormation afin que la machine locale (<strong>SOURCE<\/strong>) puisse acc\u00e9der \u00e0 la plage de ports 30000 \u00e0 32768 du TCP.<\/p>\n\n\n\n<p><a href=\"https:\/\/docs.aws.amazon.com\/fr_fr\/vpc\/latest\/userguide\/security-group-rules.html#adding-security-group-rules\"><strong>Plus sur les groupes de s\u00e9curit\u00e9 d\u2019AWS<\/strong><\/a><\/p>\n\n\n\n<p>Voir plus bas la r\u00e8gle offerte en exemple.<\/p>\n\n\n\n<p><em>Astuce&nbsp;: Trouvez facilement l\u2019adresse IP de la machine en cherchant \u00ab&nbsp;quelle est mon adresse ip&nbsp;\u00bb dans Google.<\/em><\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"883\" height=\"112\" src=\"https:\/\/www.canarie.ca\/wp-content\/uploads\/2023\/08\/image-15.png\" alt=\"\" class=\"wp-image-39957\" srcset=\"https:\/\/www.canarie.ca\/wp-content\/uploads\/2023\/08\/image-15.png 883w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2023\/08\/image-15-300x38.png 300w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2023\/08\/image-15-768x97.png 768w\" sizes=\"auto, (max-width: 883px) 100vw, 883px\" \/><\/figure>\n<\/div>\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"demonstration\">D\u00e9monstration<\/h2>\n\n\n\n<p>Cette partie montre comment l\u2019application automatise l\u2019ingestion, le traitement, le stockage et la pr\u00e9sentation des donn\u00e9es boursi\u00e8res et des informations pertinentes analys\u00e9es par le mod\u00e8le pr\u00e9form\u00e9 de pr\u00e9vision des sentiments.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Tableau de bord Kubernetes<\/h3>\n\n\n\n<p>Les services et les applications de la Solution type s\u2019installent sur une grappe microK8 \u00e0 un n\u0153ud de Kubernetes gr\u00e2ce au Propulseur KAT. L\u2019installation du tableau de bord Kubernetes suit celle des services et des applications dans la grappe, une op\u00e9ration qui ressemble \u00e0 l\u2019installation du Propulseur KAT. Le d\u00e9ploiement, script d\u2019automatisation inclus, dure dix \u00e0 quinze minutes. Les principales \u00e9tapes permettant d\u2019y acc\u00e9der sont expos\u00e9es plus bas. Lisez le fichier ReadMe dans la <a href=\"https:\/\/github.com\/BigBitBusInc\/kubernetes-automation-toolkit\/tree\/main\/code\/k8s-common-code\/k8sdashboard\"><strong>documentation KAT sur Github<\/strong><\/a> pour en savoir plus.<\/p>\n\n\n\n<p>Comme on l\u2019explique \u00e0 la partie \u00ab&nbsp;D\u00e9ploiement&nbsp;\u00bb de la <a href=\"https:\/\/www.canarie.ca\/fr\/nuage\/propulseurs\/catalogue\/plan-de-vol-ido-automatisation-de-lorchestration-en-nuage-avec-kubernetes\/solution-type-trousse-dautomatisation-kubernetes-kat\/\"><strong>Solution type KAT<\/strong><\/a>, vous devrez cr\u00e9er un tunnel SSH de localhost:8080, sur l\u2019ordinateur, \u00e0 localhost:80, sur le serveur d\u2019application du Propulseur au moyen de l\u2019IP externe de cette derni\u00e8re, \u00e0 partir de l\u2019ordinateur ou avec l\u2019outil Putty.<\/p>\n\n\n\n<p><kbd>ssh -i&nbsp; key_file&nbsp; ubuntu@Public_IP&nbsp; -L 8080:localhost:80<\/kbd><\/p>\n\n\n\n<p>Tel qu\u2019indiqu\u00e9 pr\u00e9c\u00e9demment, \u00ab&nbsp;key_file&nbsp;\u00bb correspond \u00e0 la cl\u00e9 priv\u00e9e de la bicl\u00e9 SSH choisie lors du param\u00e9trage de CloudFormation et \u00ab&nbsp;Public_IP&nbsp;\u00bb \u00e0 l\u2019adresse IP publique que vous avez not\u00e9e pr\u00e9c\u00e9demment \u00e0 l\u2019onglet <strong>Sorties<\/strong> de la console CloudFormation.<\/p>\n\n\n\n<p>Allez \u00e0 <a href=\"http:\/\/localhost:8080\/dashboard\/#\/logina\"><strong>http:\/\/localhost:8080\/dashboard\/#\/login<\/strong><\/a> et connectez-vous avec le jeton venant du serveur d\u2019application du Propulseur.<\/p>\n\n\n<div class=\"wp-block-image is-style-default\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"910\" height=\"364\" src=\"https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP10.png\" alt=\"\" class=\"wp-image-33785\" srcset=\"https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP10.png 910w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP10-300x120.png 300w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP10-768x307.png 768w\" sizes=\"auto, (max-width: 910px) 100vw, 910px\" \/><\/figure>\n<\/div>\n\n\n<p><strong>Remarque&nbsp;:<\/strong> N\u2019oubliez pas d\u2019ex\u00e9cuter la commande SSH avec l\u2019argument de tunnelisation avant de vous connecter au tableau de bord Kubernetes avec le jeton. Consultez la <a href=\"https:\/\/kubernetes.io\/docs\/tasks\/access-application-cluster\/web-ui-dashboard\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>documentation sur Kubernetes<\/strong><\/a> pour conna\u00eetre les fonctionnalit\u00e9s du tableau de bord. Si la connexion est \u00e9tablie correctement, l\u2019\u00e9cran affichera ce qui suit.<\/p>\n\n\n<div class=\"wp-block-image is-style-default\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"667\" src=\"https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP11-1024x667.png\" alt=\"\" class=\"wp-image-33787\" srcset=\"https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP11-1024x667.png 1024w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP11-300x195.png 300w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP11-768x500.png 768w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP11.png 1201w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Pipelines de donn\u00e9es dans Airflow d\u2019Apache<\/h3>\n\n\n\n<p>L\u2019application Airflow est l\u2019\u00e9l\u00e9ment le plus important de la Solution type en ce qui concerne la gestion et l\u2019usage des pipelines de donn\u00e9es. Le service Kubernetes qui expose l\u2019interface utilisateur d\u2019Airflow s\u2019appelle \u00ab&nbsp;airflow-webserver&nbsp;\u00bb. On y acc\u00e8de de l\u2019ext\u00e9rieur avec l\u2019URL que voici&nbsp;:<\/p>\n\n\n\n<p>http:\/\/{EXTERNAL_HOST_IP}:{NODEPORT}<\/p>\n\n\n\n<p><em>PUBLIC_IP<\/em> correspond \u00e0 l\u2019adresse IP publique du serveur d\u2019application du Propulseur relev\u00e9e sur l\u2019onglet <strong>Sorties <\/strong>de la console CloudFormation.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"291\" src=\"https:\/\/www.canarie.ca\/wp-content\/uploads\/2023\/08\/image-16.png\" alt=\"\" class=\"wp-image-39959\" srcset=\"https:\/\/www.canarie.ca\/wp-content\/uploads\/2023\/08\/image-16.png 975w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2023\/08\/image-16-300x90.png 300w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2023\/08\/image-16-768x229.png 768w\" sizes=\"auto, (max-width: 975px) 100vw, 975px\" \/><\/figure>\n<\/div>\n\n\n<p><\/p>\n\n\n\n<p>La valeur de NODEPORT correspond \u00e0 un nombre al\u00e9atoire entre 30000 et 32768. <\/p>\n\n\n\n<p>Pour l\u2019obtenir&nbsp;:<\/p>\n\n\n\n<p>1. ouvrez le tableau de bord Kubernetes;<\/p>\n\n\n\n<p>2. s\u00e9lectionnez Airflow dans la bo\u00eete \u00ab&nbsp;combo&nbsp;\u00bb, au sommet de la page (parcourez la liste pour le trouver).<\/p>\n\n\n<div class=\"wp-block-image is-style-default\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"430\" src=\"https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP13-1024x430.png\" alt=\"\" class=\"wp-image-33791\" srcset=\"https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP13-1024x430.png 1024w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP13-300x126.png 300w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP13-768x323.png 768w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP13.png 1092w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p>3. S\u00e9lectionnez <strong>Services<\/strong> dans le menu \u00e0 gauche et trouvez <em>airflow-webserver<\/em> dans la liste. Le num\u00e9ro du port du deuxi\u00e8me \u00ab&nbsp;Internal Endpoint&nbsp;\u00bb correspond \u00e0 la valeur de NODEPORT que vous devez remplacer dans l\u2019URL.<\/p>\n\n\n<div class=\"wp-block-image is-style-default\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"459\" src=\"https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP14-1024x459.png\" alt=\"\" class=\"wp-image-33793\" srcset=\"https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP14-1024x459.png 1024w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP14-300x135.png 300w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP14-768x344.png 768w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP14.png 1115w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p><\/p>\n\n\n\n<p>4. Allez \u00e0 l\u2019URL de vos instances (\u00e0 savoir, <a href=\"http:\/\/3.97.56.244:32431\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>http:\/\/3.97.56.244:32431\/<\/strong><\/a>) et ouvrez une s\u00e9ance avec les identifiants par d\u00e9faut que voici&nbsp;:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>nom d\u2019utilisateur&nbsp;:<\/strong> admin<\/li>\n\n\n\n<li><strong>mot de passe&nbsp;:<\/strong> admin<\/li>\n<\/ul>\n\n\n\n<p><em>Indices: Nous vous sugg\u00e9rons fortement de modifier le mot de passe dans la partie \u00ab&nbsp;Admin&nbsp;\u00bb de l\u2019interface lors de la premi\u00e8re s\u00e9ance.<\/em><\/p>\n\n\n\n<p><strong>Remarque&nbsp;:<\/strong> La commande SSH ne doit \u00eatre ex\u00e9cut\u00e9e que pour le tableau de bord Kubernetes, pas pour l\u2019interface utilisateur d\u2019Airflow, ni les autres interfaces Web d\u00e9ploy\u00e9es par le Propulseur.<\/p>\n\n\n\n<p>Une fois que vous vous \u00eates connect\u00e9 \u00e0 l\u2019application Airflow, une page appara\u00eetra \u00e0 l\u2019\u00e9cran indiquant les quatre pipelines de donn\u00e9es fournis avec la Solution type.<\/p>\n\n\n<div class=\"wp-block-image is-style-default\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"464\" src=\"https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP15-1024x464.png\" alt=\"\" class=\"wp-image-33795\" srcset=\"https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP15-1024x464.png 1024w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP15-300x136.png 300w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP15-768x348.png 768w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP15.png 1436w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p><\/p>\n\n\n\n<p>La page principale indique l\u2019\u00e9tat de chaque GOA, le nombre d\u2019ex\u00e9cutions et les t\u00e2ches. D\u2019autres fonctionnalit\u00e9s sont accessibles quand on clique sur un GOA et parcourt les pages suppl\u00e9mentaires. Celle-ci-dessous, par exemple, montre l\u2019arborescence des ex\u00e9cutions et des t\u00e2ches du GOA.<\/p>\n\n\n<div class=\"wp-block-image is-style-default\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"337\" src=\"https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP16-1024x337.png\" alt=\"\" class=\"wp-image-33797\" srcset=\"https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP16-1024x337.png 1024w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP16-300x99.png 300w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP16-768x253.png 768w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP16.png 1436w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p><\/p>\n\n\n\n<p>Cette interface propose plusieurs fonctionnalit\u00e9s permettant de g\u00e9rer l\u2019instance d\u2019Airflow qui a \u00e9t\u00e9 d\u00e9ploy\u00e9e. Pour un aper\u00e7u rapide de l\u2019interface, lisez ceci, dans la <a href=\"https:\/\/airflow.apache.org\/docs\/apache-airflow\/stable\/ui.html\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>documentation officielle d\u2019Airflow<\/strong><\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><a id=\"_Updating_Finnhub_and\"><\/a>Actualisation de la cl\u00e9 des API Finnhub et polygon<\/h3>\n\n\n\n<p>Les cl\u00e9s des API saisies lors du d\u00e9ploiement du Propulseur ont \u00e9t\u00e9 sauvegard\u00e9es dans les <a href=\"https:\/\/airflow.apache.org\/docs\/apache-airflow\/stable\/howto\/variable.html\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>variables d\u2019Airflow<\/strong><\/a>, qu\u2019on peut g\u00e9rer en allant \u00e0 la page <strong>Admin &gt; Variables<\/strong> de l\u2019interface.<\/p>\n\n\n\n<p>Pour actualiser ces cl\u00e9s apr\u00e8s avoir chang\u00e9 l\u2019abonnement aux deux fournisseurs de donn\u00e9es, modifiez simplement la valeur des variables sur cette page, de la fa\u00e7on illustr\u00e9e ci-dessous.<\/p>\n\n\n<div class=\"wp-block-image is-style-default\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"489\" src=\"https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP17-1024x489.png\" alt=\"\" class=\"wp-image-33799\" srcset=\"https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP17-1024x489.png 1024w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP17-300x143.png 300w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP17-768x367.png 768w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP17.png 1436w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p><\/p>\n\n\n\n<p><strong>Remarque&nbsp;:<\/strong> Ne modifiez pas les cl\u00e9s (<strong>POLYGON_API_KEY<\/strong> et <strong>FINNHUB_API_KEY<\/strong>) tant que vous n\u2019aurez pas chang\u00e9 d\u2019abonnement ou ne serez pas pass\u00e9 \u00e0 un service payant.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Kafdrop, une interface Web pour Kafka d\u2019Apache<\/h3>\n\n\n\n<p>Bien qu\u2019on puisse surveiller et g\u00e9rer les serveurs Kafka de diverses mani\u00e8res, nous avons choisi Kafdrop comme interface Web de source ouverte. Dans cette application, le sujet \u00ab&nbsp;dair-dataingestion-1min-topic&nbsp;\u00bb de Kafka sert d\u2019interm\u00e9diaire entre les pipelines d\u2019ingestion et de traitement des donn\u00e9es boursi\u00e8res, converties en graphiques en chandelier. Pour la surveillance et le d\u00e9bogage, il est possible de v\u00e9rifier le moment o\u00f9 les messages ont \u00e9t\u00e9 re\u00e7us et leur contenu en cliquant sur le titre de l\u2019objet, sur la page d\u2019accueil, puis en cliquant <strong>View Messages<\/strong> (voir les messages).<\/p>\n\n\n\n<p>Kafdrop propose aussi des fonctionnalit\u00e9s permettant de g\u00e9rer et de voir les param\u00e8tres des serveurs Kafka et des objets, ce qui peut avoir son utilit\u00e9 dans les cas complexes.<\/p>\n\n\n\n<p>L\u2019application Web de Kafdrop est disponible \u00e0 l\u2019adresse suivante&nbsp;:<\/p>\n\n\n\n<p>http:\/\/{EXTERNAL_HOST_IP}:30900<\/p>\n\n\n<div class=\"wp-block-image is-style-default\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"791\" src=\"https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP18-1024x791.png\" alt=\"\" class=\"wp-image-33801\" srcset=\"https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP18-1024x791.png 1024w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP18-300x232.png 300w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP18-768x593.png 768w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP18.png 1032w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">MySQL, pour le stockage des donn\u00e9es<\/h3>\n\n\n\n<p>Au d\u00e9ploiement de la Solution type, le syst\u00e8me installera une instance MySQL comprenant la base de donn\u00e9es (automated_data_pipelines) et trois tableaux dans la grappe Kubernetes.<\/p>\n\n\n\n<p>Pour acc\u00e9der \u00e0 la base de donn\u00e9es \u00e0 partir de l\u2019ordinateur, suivez les \u00e9tapes du fichier <a href=\"https:\/\/github.com\/Intelius\/automated-data-pipelines\/tree\/main\/mysql\/helm\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>readme<\/strong><\/a> apr\u00e8s vous \u00eatre connect\u00e9 au serveur SSH de votre MV.<\/p>\n\n\n\n<p>Si vous pr\u00e9f\u00e9rez une application comme <a href=\"https:\/\/www.mysql.com\/products\/workbench\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>MySQL Workbench<\/strong><\/a>, connectez-vous d\u2019abord au serveur SSH de la MV et \u00e9tablissez un tunnel entre le port&nbsp;3306 et le m\u00eame port sur votre MV avec la commande que voici&nbsp;:<\/p>\n\n\n\n<p><kbd>ssh [nom_utilisateur_linux]@[external_host_ip] -L 3306:localhost:3306<\/kbd><\/p>\n\n\n\n<p>Une fois connect\u00e9 au serveur, lancez la commande suivante&nbsp;:<\/p>\n\n\n\n<p><kbd>kubectl port-forward service\/my-release-mysql-headless 3306:3306 -n data<\/kbd><\/p>\n\n\n\n<p>Vous devriez voir le suivi des messages, comme sur l\u2019image ci-dessous.<\/p>\n\n\n<div class=\"wp-block-image is-style-default\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"108\" src=\"https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP19-1024x108.png\" alt=\"\" class=\"wp-image-33803\" srcset=\"https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP19-1024x108.png 1024w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP19-300x32.png 300w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP19-768x81.png 768w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP19.png 1280w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p>Quand le suivi entre ports fonctionne, il est possible d\u2019\u00e9tablir une connexion dans l\u2019application pour g\u00e9rer la base de donn\u00e9es. Rappelez-vous de saisir \u2018localhost\u2019 comme h\u00f4te (port&nbsp;: 3306) et un des identifiants ci-dessous.<\/p>\n\n\n\n<p><strong>Privil\u00e8ge de super administrateur<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>nom d\u2019utilisateur&nbsp;:<\/strong> root<\/li>\n\n\n\n<li><strong>mot de passe&nbsp;:<\/strong> BoosterPack202!<\/li>\n<\/ul>\n\n\n\n<p><strong>Utilisateur avec privil\u00e8ge d\u2019acc\u00e8s \u00e0 la base de donn\u00e9es <\/strong>automated_data_pipelines<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>nom d\u2019utilisateur&nbsp;:<\/strong> adp_serviceaccount<\/li>\n\n\n\n<li><strong>mot de passe&nbsp;:<\/strong> DAIRDBPass<\/li>\n<\/ul>\n\n\n\n<p>N\u2019oubliez pas de modifier le mot de passe \u00ab&nbsp;root&nbsp;\u00bb par d\u00e9faut et le nom d\u2019utilisateur du service pour plus de s\u00fbret\u00e9. Pour mettre fin au suivi entre ports sur l\u2019ordinateur, enfoncez <strong>Ctrl+C<\/strong>.<\/p>\n\n\n\n<p>Pour ouvrir une s\u00e9ance sur MySQL Workbench, cr\u00e9ez une nouvelle connexion et v\u00e9rifiez-la avec les justificatifs ci-dessus \u00e0 partir de l\u2019\u00e9cran \u00ab&nbsp;Manage Connections&nbsp;\u00bb.<\/p>\n\n\n<div class=\"wp-block-image is-style-default\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"994\" height=\"665\" src=\"https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP20.png\" alt=\"\" class=\"wp-image-33805\" srcset=\"https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP20.png 994w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP20-300x201.png 300w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP20-768x514.png 768w\" sizes=\"auto, (max-width: 994px) 100vw, 994px\" \/><\/figure>\n<\/div>\n\n\n<p><\/p>\n\n\n\n<p>Une fois connect\u00e9 \u00e0 la base de donn\u00e9es <strong>automated_data_pipelines<\/strong>, il est possible de la modifier et de consulter les tableaux, comme on le fait avec n\u2019importe quel autre syst\u00e8me de gestion de base de donn\u00e9es.<\/p>\n\n\n\n<p>Exemple<\/p>\n\n\n<div class=\"wp-block-image is-style-default\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"546\" src=\"https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP21-1024x546.png\" alt=\"\" class=\"wp-image-33807\" srcset=\"https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP21-1024x546.png 1024w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP21-300x160.png 300w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP21-768x409.png 768w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP21.png 1092w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">API du service d\u2019analyse et du service interm\u00e9diaire<\/h3>\n\n\n\n<p>Les fonctionnalit\u00e9s de ces services sont visibles au moyen d\u2019API REST, ce qui en garantit l\u2019adaptation et la souplesse. Les appels des API ne n\u00e9cessitent pas d\u2019\u00e9nonc\u00e9 et puisque chaque requ\u00eate est ind\u00e9pendante, elle doit inclure toutes les informations requises. On peut acc\u00e9der \u00e0 ces API \u2013 expliqu\u00e9es dans le Plan de vol \u2013 ou les tester avec une interface Redoc ou Swagger. L\u2019image qui suit, par exemple, illustre l\u2019interface Swagger de l\u2019API qui pr\u00e9dit le sentiment suscit\u00e9 par une information boursi\u00e8re.<\/p>\n\n\n<div class=\"wp-block-image is-style-default\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"990\" src=\"https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP22-1024x990.png\" alt=\"\" class=\"wp-image-33761\" srcset=\"https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP22-1024x990.png 1024w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP22-300x290.png 300w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP22-768x743.png 768w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP22.png 1176w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p><\/p>\n\n\n\n<p>Vous trouverez des informations suppl\u00e9mentaires sur chacune des trois API ci-dessous.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">API de pr\u00e9vision des sentiments suscit\u00e9s par les informations boursi\u00e8res<\/h4>\n\n\n\n<p>Indique l\u2019\u00e9motion que devrait engendrer une information boursi\u00e8re particuli\u00e8re.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Comment y acc\u00e9der&nbsp;:<\/strong> {HOST_IP}:30602\/docs OU {HOST_IP}:30602\/redoc&nbsp;<\/li>\n\n\n\n<li><strong>Requ\u00eate&nbsp;: <\/strong>GET \/news\/description<\/li>\n\n\n\n<li><strong>Corps de la requ\u00eate&nbsp;:<\/strong> (voir la documentation de Polygon.io sur l\u2019<a href=\"https:\/\/polygon.io\/docs\/stocks\/get_v2_reference_news\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>API \u00ab&nbsp;Ticker News&nbsp;\u00bb<\/strong><\/a> pour certains des champs qui suivent)\n<ul class=\"wp-block-list\">\n<li><strong>ticker&nbsp;: <\/strong>symbole du titre cot\u00e9 en bourse<\/li>\n\n\n\n<li><strong>title&nbsp;:<\/strong> titre de l\u2019article<\/li>\n\n\n\n<li><strong>news_url&nbsp;:<\/strong> URL menant \u00e0 l\u2019article<\/li>\n\n\n\n<li><strong>news_content&nbsp;<\/strong>: teneur de l\u2019article<\/li>\n\n\n\n<li><strong>summary&nbsp;<\/strong>: r\u00e9sum\u00e9 de l\u2019article produits par l\u2019API de Polygon.io<\/li>\n\n\n\n<li><strong>id&nbsp;<\/strong>: identifiant unique de la table news_description dans la base de donn\u00e9es de la solution type<\/li>\n\n\n\n<li><strong>datetime&nbsp;: <\/strong>date \u00e0 laquelle l\u2019information a \u00e9t\u00e9 diffus\u00e9e (format \u00ab&nbsp;aaaa-mm-jj HH:MM).<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">API de description des nouvelles<\/h4>\n\n\n\n<p>Indique et d\u00e9crit le sentiment \u00e9voqu\u00e9 par l\u2019information boursi\u00e8re.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Comment y acc\u00e9der&nbsp;: <\/strong>{HOST_IP}:30300\/docs OU {HOST_IP}:30300\/redoc<\/li>\n\n\n\n<li><strong>Requ\u00eate&nbsp;:<\/strong> GET \/news\/description<\/li>\n\n\n\n<li><strong>Corps de la requ\u00eate<\/strong>\n<ul class=\"wp-block-list\">\n<li><strong>ticker&nbsp;<\/strong>: symbole du titre cot\u00e9 en bourse<\/li>\n\n\n\n<li><strong>day&nbsp;<\/strong>: date dans le format \u00ab&nbsp;aaaa-mm-jj&nbsp;\u00bb<\/li>\n\n\n\n<li><strong>limit&nbsp;<\/strong>: nombre maximum d\u2019informations boursi\u00e8res restitu\u00e9es<\/li>\n\n\n\n<li><strong>skip&nbsp;<\/strong>: nombre d\u2019articles \u00e0 \u00e9carter<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">API sur le cours de la bourse<\/h4>\n\n\n\n<p>Produit la cote par minute pour la date et la valeur mobili\u00e8re donn\u00e9es. Faute de date, fournit les donn\u00e9es pour la journ\u00e9e en cours.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Comment y acc\u00e9der&nbsp;:<\/strong> {HOST_IP}:30300\/docs OU {HOST_IP}:30300\/redoc<\/li>\n\n\n\n<li><strong>Requ\u00eate&nbsp;: <\/strong>GET \/marketData\/oneMinute<\/li>\n\n\n\n<li><strong>Corps de la requ\u00eate<\/strong>\n<ul class=\"wp-block-list\">\n<li><strong>ticker&nbsp;: <\/strong>symbole du titre cot\u00e9 en bourse<\/li>\n\n\n\n<li><strong>date&nbsp;: <\/strong>date sous le format \u00ab&nbsp;aaaa-mm-jj&nbsp;\u00bb<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Interface utilisateur de la solution type ADP<\/h3>\n\n\n\n<p>Enfin, l\u2019ensemble se termine par les r\u00e9sultats, c\u2019est-\u00e0-dire le cours des titres exprim\u00e9s sous forme de graphe en chandelier et les informations qui s\u2019y apparentent. Ces r\u00e9sultats sont pr\u00e9sent\u00e9s sur une simple interface Web, accessible \u00e0 l\u2019URL que voici&nbsp;:<\/p>\n\n\n\n<p>{EXTERNAL_HOST_IP}:30333<\/p>\n\n\n\n<p>La page par d\u00e9faut de l\u2019application Web est actualis\u00e9e automatiquement \u00e0 la <strong>date <\/strong>choisie, \u00e0 la cl\u00f4turew de la <strong>bourse<\/strong>. Elle pr\u00e9sentera le graphe en chandelier du titre boursier et les actualit\u00e9s connexes pour les trois derniers jours. Le sentiment pr\u00e9vu pour chaque nouvelle correspond \u00e0 une valeur num\u00e9rique de son influence et \u00e0 une \u00e9tiquette pr\u00e9cisant la nature du sentiment [n\u00e9gative, neutre, positive], apr\u00e8s le r\u00e9sum\u00e9 de l\u2019article.<\/p>\n\n\n\n<p>Remarque&nbsp;: Si l\u2019application est install\u00e9e pendant les heures d\u2019activit\u00e9 d\u2019une bourse des \u00c9tats-Unis ou en dehors, il est possible que vous ne voyiez pas de graphe ni de nouvelles avant sa r\u00e9ouverture, le lendemain. D\u00e8s qu\u2019un nouveau graphe ou les informations d\u2019un t\u00e9l\u00e9scripteur sont enregistr\u00e9s dans la base de donn\u00e9es, les donn\u00e9es devraient s\u2019afficher de la fa\u00e7on illustr\u00e9e ci-dessous.<\/p>\n\n\n<div class=\"wp-block-image is-style-default\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"968\" height=\"1024\" src=\"https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP23-968x1024.png\" alt=\"\" class=\"wp-image-33763\" srcset=\"https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP23-968x1024.png 968w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP23-284x300.png 284w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP23-768x812.png 768w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP23.png 1211w\" sizes=\"auto, (max-width: 968px) 100vw, 968px\" \/><\/figure>\n<\/div>\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"cl\u00f4ture\">Cl\u00f4ture<\/h2>\n\n\n\n<p>Pour arr\u00eater la solution et lib\u00e9rer les ressources qu\u2019elle exploite, revenez \u00e0 la page Piles de la console CloudFormation et supprimez la pile qui correspond au Propulseur. <\/p>\n\n\n\n<p><a href=\"https:\/\/docs.aws.amazon.com\/fr_fr\/AWSCloudFormation\/latest\/UserGuide\/cfn-console-delete-stack.html\"><strong>En savoir plus sur la fa\u00e7on de supprimer une pile dans AWS.<\/strong><\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"consid\u00e9ration\">\u00c9l\u00e9ments \u00e0 prendre en consid\u00e9ration<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Autres possibilit\u00e9s de d\u00e9ploiement<\/h3>\n\n\n\n<p>La solution type se d\u00e9ploie sur une grappe Kubernetes constitu\u00e9e d\u2019un seul n\u0153ud. Pour accro\u00eetre la performance et la disponibilit\u00e9 de solutions plus volumineuses, vous devrez peut-\u00eatre cr\u00e9er d\u2019autres instances dans le nuage, sur l\u2019ATIR, et \u00e9tablir une grappe Kubernetes de plusieurs n\u0153uds. La grappe disposera alors de ressources suppl\u00e9mentaires auxquelles attribuer les \u00e9l\u00e9ments de la solution \u00e0 travers les diverses instances (les n\u0153uds), au cas o\u00f9 l\u2019une d\u2019elles ferait d\u00e9faut. Avec une telle configuration, cependant, acc\u00e9der aux services par NodePort pourrait s\u2019av\u00e9rer malcommode, car les \u00e9l\u00e9ments de la solution et les services seront d\u00e9ploy\u00e9s sur des h\u00f4tes distincts. Dans une grappe comptant plusieurs n\u0153uds, il serait pr\u00e9f\u00e9rable d\u2019utiliser le contr\u00f4leur d\u2019entr\u00e9e NGINX, d\u00e9crit dans le <a href=\"https:\/\/www.canarie.ca\/fr\/nuage\/propulseurs\/catalogue\/plan-de-vol-ido-automatisation-de-lorchestration-en-nuage-avec-kubernetes\/solution-type-trousse-dautomatisation-kubernetes-kat\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Propulseur KAT<\/strong><\/a> et plus loin, dans la pr\u00e9sente partie.<\/p>\n\n\n\n<p>G\u00e9rer une grappe Kubernetes pour de petites solutions telle celle d\u00e9crite ici pourrait donner lieu \u00e0 une complexit\u00e9 et \u00e0 des frais inutiles, comparativement \u00e0 une architecture de microservices similaire sur Swarm de Docker. Vous pourriez, si vous le pr\u00e9f\u00e9rez, installer les outils et les technologies de la Solution type (Airflow, Kafka, Kafdrop et MySQL) avec Docker, ce qui vous simplifiera la t\u00e2che et r\u00e9duira les co\u00fbts. Pour cela toutefois, vous devrez modifier les fichiers de configuration des outils en question afin qu\u2019ils soient compatibles avec la solution remani\u00e9e. Des changements mineurs devront \u00eatre apport\u00e9s au code source des services d\u2019ingestion, de traitement et d\u2019analyse ainsi que des services interm\u00e9diaires et frontaux.&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Technologies de rechange<\/h3>\n\n\n\n<p>Les technologies et les outils que propose la Solution type ont \u00e9t\u00e9 s\u00e9lectionn\u00e9s parmi des technologies de source ouverte populaires qui cohabitent bien. Vous pourriez n\u00e9anmoins les remplacer par d\u2019autres, de propri\u00e9t\u00e9 exclusive ou de source ouverte, en fonction de votre plateforme, de vos comp\u00e9tences et de vos besoins en soutien technique. En voici un exemple.<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-regular\"><table><tbody><tr><td><strong>\u00c9l\u00e9ment<\/strong><\/td><td><strong>Source exclusive<\/strong><\/td><td><strong>Source ouverte<\/strong><\/td><\/tr><tr><td><strong>Outils d\u2019orchestration<\/strong><strong><\/strong> <strong>(pour remplacer Airflow)<\/strong><strong><\/strong><\/td><td>Azure Data Factory<\/td><td>Kubeflow, Luigi, Argo, etc.<\/td><\/tr><tr><td><strong>Diffusion en continu<\/strong> <strong>(pour remplacer Kafka)<\/strong><\/td><td>Azure Event Hubs<\/td><td>RabbitMQ, Amazon MQ, Redis<\/td><\/tr><tr><td><strong>Stockage et gestion des donn\u00e9es<\/strong><strong><\/strong> <strong>(pour remplacer MySQL)<\/strong><strong><\/strong><\/td><td>Azure SQL<\/td><td>PostgreSQL, MariaDB<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>La couche de pr\u00e9sentation peut elle aussi \u00eatre d\u00e9velopp\u00e9e avec d\u2019autres outils comme PowerBI ou on peut recourir \u00e0 des solutions compl\u00e8tes comme JavaScript, Node.js, Django, Ruby, etc.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Consid\u00e9rations relatives aux donn\u00e9es et aux API<\/h3>\n\n\n\n<p>Les donn\u00e9es de la Solution type \u00e9manent principalement des sources suivantes&nbsp;:<\/p>\n\n\n\n<ol class=\"wp-block-list\" style=\"list-style-type:1\">\n<li><a href=\"https:\/\/finnhub.io\/docs\/api\/stock-candles\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>API de Finnhib.io donnant le cours boursier sous forme de graphe en chandelier<\/strong><\/a>;<\/li>\n\n\n\n<li><a href=\"https:\/\/polygon.io\/docs\/stocks\/get_v2_reference_news\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>API de polygon.io diffusant les actualit\u00e9s du t\u00e9lescripteur sur le titre<\/strong><\/a>.<\/li>\n<\/ol>\n\n\n\n<p>La Solution type recourt \u00e0 l\u2019abonnement gratuit offert par ces deux fournisseurs, mais les abonnements de ce genre ont leurs limites. Pour exploiter la Solution type \u00e0 d\u2019autres fins qu\u2019une d\u00e9monstration ou l\u2019apprentissage, vous devrez souscrire \u00e0 une autre forme d\u2019abonnement. Le site Web de chaque fournisseur donne plus d\u2019informations sur le co\u00fbt d\u2019un tel abonnement. Apr\u00e8s avoir chang\u00e9 d\u2019abonnement, vous devrez actualiser les variables correspondantes d\u2019Airflow au moyen des nouveaux jetons, comme nous l\u2019avons expliqu\u00e9 plus haut (<a href=\"#_Updating_Finnhub_and\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>actualisation de la cl\u00e9 des API Finnhub et Polygon)<\/strong><\/a>.<\/p>\n\n\n\n<p>Il est possible d\u2019adapter la Solution type pour automatiser l\u2019ingestion, le traitement, le stockage et la pr\u00e9sentation de nombreuses sortes de donn\u00e9es comme la temp\u00e9rature, les relev\u00e9s venant de l\u2019IdO, les op\u00e9rations bancaires et le reste.<\/p>\n\n\n\n<p>Si vous d\u00e9sirez changer la source des donn\u00e9es, veuillez noter ce qui suit.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Pipelines Airflow<\/h4>\n\n\n\n<p>Le pipeline d\u2019ingestion convoque les API d\u2019apr\u00e8s la d\u00e9finition des fichiers GOA donn\u00e9e dans l\u2019annexe correspondante, puis enregistre les donn\u00e9es ing\u00e9r\u00e9es dans la base de donn\u00e9es ou les envoie vers un sujet Kafka. De m\u00eame, le pipeline de traitement peut \u00eatre d\u00e9clench\u00e9 au moyen d\u2019une annexe ou d\u2019un message Kafka afin qu\u2019il commence \u00e0 lire et \u00e0 traiter les donn\u00e9es ing\u00e9r\u00e9es. Pour changer la nature ou la source des donn\u00e9es, vous pourriez devoir modifier le <a href=\"https:\/\/github.com\/Intelius\/automated-data-pipelines\/tree\/main\/airflow\/dags\/src\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>code source de ces pipelines<\/strong><\/a> et la <a href=\"https:\/\/github.com\/Intelius\/automated-data-pipelines\/tree\/main\/airflow\/dags\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>d\u00e9finition des fichiers GOA<\/strong><\/a> ou actualiser les param\u00e8tres g\u00e9n\u00e9raux de ce <a href=\"https:\/\/github.com\/Intelius\/automated-data-pipelines\/blob\/main\/airflow\/dags\/src\/dataconfig.yml\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>fichier de configuration<\/strong><\/a>.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Table de la base de donn\u00e9es MySQL<\/h4>\n\n\n\n<p>Si vous utilisez des donn\u00e9es d\u2019une autre nature ou une source de donn\u00e9es diff\u00e9rente, vous pourriez devoir changer l\u2019agencement de la base de donn\u00e9es en l\u2019adaptant aux champs des API. Dans ce cas, vous pourriez utiliser le syst\u00e8me de gestion de base de donn\u00e9es de votre choix (p. ex., MySQL Workbench), tel qu\u2019indiqu\u00e9 plus haut.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">API du service interm\u00e9diaire<\/h4>\n\n\n\n<p>Convoqu\u00e9es par le service frontal, les API du service interm\u00e9diaire extraient les donn\u00e9es des tables de la base pour que vous les visualisiez. Si vous changez la source des donn\u00e9es et l\u2019organisation de la base de donn\u00e9es, vous devrez aussi modifier le code et les signatures du <a href=\"https:\/\/github.com\/Intelius\/automated-data-pipelines\/tree\/main\/middle-tier\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>code source du service interm\u00e9diaire<\/strong><\/a>.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Service d\u2019analyse<\/h4>\n\n\n\n<p>Si la nature des donn\u00e9es change, vous devrez remplacer le <a href=\"https:\/\/github.com\/Intelius\/automated-data-pipelines\/tree\/main\/news-sentiment\/src\/newssentiment-service\/model_news\/news\/news_sentiment_artifacts\/artifacts\/sentiment-prediction\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>mod\u00e8le de pr\u00e9vision des sentiments<\/strong><\/a> par le v\u00f4tre. Le mod\u00e8le employ\u00e9 par l\u2019application de la Solution type repose sur le cadre TensorFlow. Selon le cadre qu\u2019utilise votre mod\u00e8le et le type de donn\u00e9es, vous devrez aussi apporter des modifications au <a href=\"https:\/\/github.com\/Intelius\/automated-data-pipelines\/tree\/main\/news-sentiment\/src\/newssentiment-service\/src\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>code source de ce service<\/strong><\/a>.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Conception du service frontal<\/h4>\n\n\n\n<p>L\u2019interface utilisateur que propose la Solution type a \u00e9t\u00e9 con\u00e7ue \u00e0 des fins de d\u00e9monstration. Pour changer son aspect ou ses fonctionnalit\u00e9s, vous devrez modifier son <a href=\"https:\/\/github.com\/Intelius\/automated-data-pipelines\/tree\/main\/frontend\/src\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>code source<\/strong><\/a>.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">D\u00e9ploiement<\/h4>\n\n\n\n<p>Enfin, apr\u00e8s avoir adapt\u00e9 ces services, red\u00e9ployez la solution sur la plateforme Kubernetes. Lisez les fichiers ReadMe de chaque service pour savoir comment proc\u00e9der (<a href=\"https:\/\/github.com\/Intelius\/automated-data-pipelines\/tree\/main\/airflow#deploying-changes-in-the-code-and-build-your-own-image\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>ReadMe d\u2019Airflow<\/strong><\/a>,<a href=\"https:\/\/github.com\/Intelius\/automated-data-pipelines\/blob\/main\/news-sentiment\/README.md\"><strong> ReadMe du service de pr\u00e9vision des sentiments<\/strong><\/a> et <a href=\"https:\/\/github.com\/Intelius\/automated-data-pipelines\/blob\/main\/frontend\/README.md\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>ReadMe du service frontal<\/strong><\/a>).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">S\u00e9curit\u00e9<\/h2>\n\n\n\n<p>La Solution type a \u00e9t\u00e9 con\u00e7ue aux fins de d\u00e9monstration. Vous pouvez vous en servir comme cadre de base pour d\u00e9velopper plus rapidement votre propre solution. La Solution type n\u2019est pas adapt\u00e9e \u00e0 un environnement de production, ce qui exigerait diverses mesures de s\u00e9curit\u00e9 ou am\u00e9liorations. Voici quelques points \u00e0 prendre en consid\u00e9ration pour rendre la solution plus s\u00fbre.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Grappe Kubernetes<\/h3>\n\n\n\n<p>Pour s\u00e9curiser la grappe, lisez les recommandations correspondantes de la Solution type KAT (partie \u00ab&nbsp;s\u00e9curit\u00e9&nbsp;\u00bb) et cette partie de la <a href=\"https:\/\/kubernetes.io\/docs\/concepts\/security\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>documentation officielle de Kubernetes<\/strong><\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Pipelines d\u2019ingestion et de traitement des donn\u00e9es<\/h3>\n\n\n\n<p>En s\u00e9parant ces deux pipelines dans l\u2019architecture de votre syst\u00e8me, vous rendrez celui-ci plus s\u00fbr, car seul le pipeline d\u2019ingestion sera expos\u00e9 aux donn\u00e9es venant de l\u2019ext\u00e9rieur. Bien que nous l\u2019ayons fait dans la Solution type, les deux pipelines sont orchestr\u00e9s par la m\u00eame instance d\u2019Airflow pour plus de simplicit\u00e9 et une plus grande \u00e9conomie de moyens. Pour renforcer la s\u00e9curit\u00e9, vous pourriez utiliser des instances d\u2019Airflow distinctes et modifier leur configuration en cons\u00e9quence.<\/p>\n\n\n\n<p>Pour les autres consid\u00e9rations concernant la s\u00e9curisation d\u2019Airflow et les lignes directrices sur le d\u00e9ploiement dans un environnement de production, veuillez lire la partie \u00ab&nbsp;Pratiques exemplaires&nbsp;\u00bb du Plan de vol.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Mots de passe<\/h3>\n\n\n\n<p>Plusieurs points doivent \u00eatre pris en consid\u00e9ration \u00e0 cet \u00e9gard afin de renforcer la s\u00e9curit\u00e9.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Nous avons \u00e9tabli des mots de passe par d\u00e9faut pour plusieurs outils et applications de la Solution type, notamment Airflow et MySQL. Changez-les toujours en privil\u00e9giant des mots de passe robustes.<\/li>\n\n\n\n<li>Quelques services de la Solution type ne sont pas prot\u00e9g\u00e9s par mot de passe (service d\u2019analyse et service interm\u00e9diaire). Lisez ce <a href=\"https:\/\/fastapi.tiangolo.com\/tutorial\/security\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>document officiel<\/strong><\/a> pour savoir comment s\u00e9curiser leur API.<\/li>\n\n\n\n<li>Pour plus de simplicit\u00e9, la majorit\u00e9 des mots de passe de la Solution type sont r\u00e9unis dans des fichiers de configuration en texte clair ou dans le code source.<\/li>\n\n\n\n<li>Nous pr\u00e9conisons l\u2019usage de Secrets, de Kubernetes (o\u00f9 son \u00e9quivalent), pour enregistrer les donn\u00e9es sensibles comme les mots de passe et les jetons.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Images<\/h3>\n\n\n\n<p>Quelques modules de la Solution type tirent des images publiques des d\u00e9p\u00f4ts Docker Hub d\u2019Intelius AI. Si vous b\u00e2tissez vos propres images apr\u00e8s avoir modifi\u00e9 un service, nous vous recommandons de cr\u00e9er votre propre d\u00e9p\u00f4t priv\u00e9 (clonez-le). Lisez cette <a href=\"https:\/\/kubernetes.io\/docs\/tasks\/configure-pod-container\/pull-image-private-registry\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>documentation<\/strong><\/a> pour conna\u00eetre les changements indispensables qui vous permettront d\u2019extraire les images d\u2019un r\u00e9pertoire priv\u00e9.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">R\u00e9seautique<\/h2>\n\n\n\n<p>Pour des raisons de commodit\u00e9, les ports donnant acc\u00e8s \u00e0 la plupart des services de la Solution type se trouvent dans un NodePort. Vous devez ajouter des r\u00e8gles au pare-feu pour autoriser l\u2019acc\u00e8s \u00e0 chacun. D\u2019autres possibilit\u00e9s sont n\u00e9anmoins envisageables, comme l\u2019usage d\u2019un contr\u00f4leur d\u2019entr\u00e9e ou d\u2019un \u00e9quilibreur de charge, selon vos besoins. Puisque la grappe Kubernetes cr\u00e9\u00e9e par la Solution type repose sur le Propulseur KAT, peut-\u00eatre voudrez-vous exposer ces services avec le contr\u00f4leur d\u2019entr\u00e9e NGINX, ce qui en rehaussera la souplesse ou la protection. Dans un tel cas, rappelez-vous qu\u2019il faut ouvrir un tunnel SSH sur le port 8080 local pour avoir acc\u00e8s au tableau de bord de Kubernetes.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Mise \u00e0 l\u2019\u00e9chelle<\/h2>\n\n\n\n<p>La mise \u00e0 l\u2019\u00e9chelle de la solution ADP peut \u00eatre g\u00e9r\u00e9e \u00e0 diff\u00e9rents niveaux et pour diff\u00e9rents composants. Par exemple, comme on a pu le lire plus haut, on pourrait envisager une grappe Kubernetes de plusieurs n\u0153uds afin d\u2019ajouter plus de ressources au syst\u00e8me, donc l\u2019\u00e9tendre. Kubernetes permet une expansion ou une contraction manuelle ou automatique de diverses mani\u00e8res. Ainsi, on pourra agrandir le service d\u2019analyse ou le service interm\u00e9diaire en augmentant le nombre de modules (<em>pods<\/em>) qu\u2019ils int\u00e8grent. Bien qu\u2019il existe diff\u00e9rentes fa\u00e7ons d\u2019y parvenir, l\u2019illustration qui suit montre comment configurer manuellement le module de pr\u00e9vision des sentiments engendr\u00e9s par les informations boursi\u00e8res avec le tableau de bord de Kubernetes.<\/p>\n\n\n<div class=\"wp-block-image is-style-default\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"624\" src=\"https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP24-1024x624.png\" alt=\"\" class=\"wp-image-33765\" srcset=\"https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP24-1024x624.png 1024w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP24-300x183.png 300w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP24-768x468.png 768w, https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP24.png 1436w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p><\/p>\n\n\n\n<p>Pour en savoir plus sur les fonctionnalit\u00e9s de Kubernetes concernant la mise \u00e0 l\u2019\u00e9chelle, lisez la documentation qui accompagne le Propulseur KAT ou cette partie de la <a href=\"https:\/\/kubernetes.io\/docs\/tasks\/run-application\/horizontal-pod-autoscale\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>documentation officielle de Kubernetes<\/strong><\/a>, qui explique en d\u00e9tail comment \u00e9largir horizontalement les \u00ab&nbsp;pods&nbsp;\u00bb de Kubernetes.<\/p>\n\n\n\n<p>Le nombre d\u2019unit\u00e9s de travail Airflow peut lui aussi \u00eatre augment\u00e9 en vue d\u2019une ex\u00e9cution des t\u00e2ches pr\u00e9vues en parall\u00e8le. Dans la Solution type, l\u2019instance d\u2019Airflow utilise l\u2019ex\u00e9cuteur \u00ab&nbsp;Celery&nbsp;\u00bb, module qui autorise un traitement efficace et simultan\u00e9 de plusieurs t\u00e2ches sur maintes unit\u00e9s de travail. Chaque unit\u00e9 peut \u00eatre d\u00e9ploy\u00e9e sur des n\u0153uds diff\u00e9rents dans une grappe qui en comprend plusieurs. On peut augmenter manuellement le nombre d\u2019unit\u00e9s de travail \u00e0 partir du tableau de bord de Kubernetes ou accro\u00eetre la valeur du param\u00e8tre \u00ab&nbsp;workers.replicas&nbsp;\u00bb dans le fichier de configuration principal d\u2019Airflow (values.yaml) avant l\u2019installation. Pour en savoir plus sur le fonctionnement de l\u2019ex\u00e9cuteur Celery, lisez la <a href=\"https:\/\/airflow.apache.org\/docs\/apache-airflow\/stable\/executor\/celery.html\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>documentation d\u2019Airflow<\/strong><\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Disponibilit\u00e9<\/h2>\n\n\n\n<p>Un des principaux avantages de Kubernetes est qu\u2019on peut cr\u00e9er une plateforme d\u2019une tr\u00e8s grande disponibilit\u00e9, avec peu de points de d\u00e9faillance, voire aucun. Y parvenir exige toutefois ne compr\u00e9hension approfondie de l\u2019architecture de Kubernetes.<\/p>\n\n\n\n<p>Pour en savoir plus \u00e0 ce sujet, lisez les parties suivantes de la documentation officielle (en anglais) sur Kubernetes et MicroK8s&nbsp;:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/kubernetes.io\/docs\/setup\/production-environment\/tools\/kubeadm\/high-availability\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Cr\u00e9ation de grappes d\u2019une grande disponibilit\u00e9 avec kubeadm<\/strong><\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/kubernetes.io\/docs\/setup\/production-environment\/tools\/kubeadm\/ha-topology\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Topologies accroissant la disponibilit\u00e9<\/strong><\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/microk8s.io\/high-availability\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Disponibilit\u00e9 \u00e9lev\u00e9e de MicroK8s<\/strong><\/a><\/li>\n<\/ul>\n\n\n\n<p>Dans la Solution type, par exemple, appliquer les recommandations concernant la cr\u00e9ation d\u2019une grappe Kubernetes de plusieurs n\u0153uds (ou comptant plusieurs n\u0153uds principaux ou sites) ou permettre une mise \u00e0 l\u2019\u00e9chelle horizontale automatique des \u00ab&nbsp;pods&nbsp;\u00bb en augmente la disponibilit\u00e9. On pourrait aussi cr\u00e9er des r\u00e9pliques de l\u2019ordonnanceur d\u2019Airflow, mais la disponibilit\u00e9 sup\u00e9rieure obtenue ne garantira pas une meilleure performance.<\/p>\n\n\n\n<p>Enfin, les recommandations du Plan de vol concernant la cr\u00e9ation d\u2019une grappe InnoDB de MySQL pourraient accro\u00eetre la disponibilit\u00e9 et la tol\u00e9rance \u00e0 une d\u00e9faillance du syst\u00e8me par une multiplication des r\u00e9pliques des bases de donn\u00e9es MySQL.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Co\u00fbt<\/h2>\n\n\n\n<p>Un avantage de la Solution type est que tous les outils et toutes les technologies qu\u2019elle int\u00e8gre sont de source ouverte, donc que leur licence d\u2019exploitation est gratuite. Cependant, quand vous l\u2019adapterez aux besoins de l\u2019entreprise, il se peut que certains co\u00fbts s\u2019ajoutent. Si vous songez suivre un plus grand nombre de t\u00e9l\u00e9scripteurs, par exemple, vous pourriez devoir changer votre abonnement \u00e0 <a href=\"https:\/\/canarie.sharepoint.com\/sites\/DAIR-Programs\/Shared%20Documents\/2020-2024%20Mandate\/Initiatives\/DAIR%20BoosterPack%205-20\/02.%20BoosterPack%20Submissions\/BP-037%20Intelius%20AI\/Finnhub.io\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Finnhub.io<\/strong><\/a> ou <a href=\"https:\/\/canarie.sharepoint.com\/sites\/DAIR-Programs\/Shared%20Documents\/2020-2024%20Mandate\/Initiatives\/DAIR%20BoosterPack%205-20\/02.%20BoosterPack%20Submissions\/BP-037%20Intelius%20AI\/Polygon.io\"><strong>polygon.io<\/strong><\/a>, ou passer \u00e0 un autre fournisseur de donn\u00e9es boursi\u00e8res. Peut-\u00eatre pr\u00e9f\u00e9rez-vous recourir \u00e0 des sources de donn\u00e9es payantes. Des co\u00fbts s\u2019ajouteront \u00e9galement si on remplace les technologies du syst\u00e8me par des technologies analogues, mais de source exclusive.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Licence d\u2019exploitation<\/h2>\n\n\n\n<p>Les codes et les configurations du Propulseur sont couverts par la licence d\u2019exploitation <a href=\"https:\/\/www.apache.org\/licenses\/LICENSE-2.0\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Apache 2.0<\/strong><\/a>. On pourra aussi prendre connaissance des conditions associ\u00e9es \u00e0 la <a href=\"https:\/\/airflow.apache.org\/docs\/apache-airflow\/stable\/license.html\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>licence Apache d\u2019Airflow<\/strong><\/a>, \u00e0 la <a href=\"https:\/\/github.com\/apache\/kafka\/blob\/trunk\/LICENSE\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>licence Apache de Kafka<\/strong><\/a> et \u00e0 la <a href=\"https:\/\/artifacthub.io\/packages\/helm\/bitnami\/mysql#license\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>licence de Bitnami pour le tableau Helm de MySQL<\/strong><\/a>.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Codes de lancement<\/h1>\n\n\n\n<p>On trouvera le code source de la Solution type et la documentation d\u00e9taill\u00e9e qui l\u2019accompagne dans ce <a href=\"https:\/\/github.com\/Intelius\/automated-data-pipelines\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>d\u00e9p\u00f4t public de GitHub<\/strong><\/a>.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"glossaire\">Glossaire<\/h1>\n\n\n\n<p>Expressions revenant dans le document<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-regular\"><table><tbody><tr><td><strong>Expression<\/strong><\/td><td><strong>Description<\/strong><\/td><td><strong>Lien\/source<\/strong><\/td><\/tr><tr><td><strong>Graphe orient\u00e9 acyclique (GOA)<\/strong><\/td><td>En math\u00e9matiques, et plus particuli\u00e8rement dans la th\u00e9orie des graphes ou en informatique, un \u00ab&nbsp;graphe orient\u00e9 acyclique&nbsp;\u00bb est un graphe orient\u00e9 qui ne poss\u00e8de pas de circuit. En d\u2019autres termes, le graphe n\u2019est compos\u00e9 que de sommets et de segments, chaque segment unissant un sommet \u00e0 un autre de mani\u00e8re \u00e0 ne former aucune boucle.<\/td><td><a href=\"https:\/\/fr.wikipedia.org\/wiki\/Graphe_orient%C3%A9_acyclique\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>https:\/\/fr.wikipedia.org\/wiki\/Graphe_orient%C3%A9_acyclique<\/strong><\/a><\/td><\/tr><tr><td><strong>Pipeline de donn\u00e9es<\/strong><\/td><td>Moyen employ\u00e9 pour d\u00e9placer des donn\u00e9es d\u2019un endroit (la source) \u00e0 un autre (un d\u00e9p\u00f4t de donn\u00e9es, par exemple). Les donn\u00e9es sont transform\u00e9es et optimis\u00e9es en cours de route, de sorte qu\u2019elles parviennent \u00e0 destination dans un \u00e9tat qui en permet l\u2019analyse et l\u2019utilisation \u00e0 diverses fins.<\/td><td><a href=\"https:\/\/www.snowflake.com\/guides\/data-pipeline\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Guide Snowflake sur les pipelines de donn\u00e9es<\/strong><\/a><\/td><\/tr><tr><td><strong>Chandelier japonais<\/strong><\/td><td>Graphique employ\u00e9 en analyse technique boursi\u00e8re pour repr\u00e9senter les variations d\u2019un cours. Il indique le cours le plus \u00e9lev\u00e9 d\u2019un titre, son cours le plus bas, le cours \u00e0 l\u2019ouverture et le cours \u00e0 la cl\u00f4ture sur une p\u00e9riode donn\u00e9e<\/td><td><a href=\"https:\/\/www.investopedia.com\/terms\/c\/candlestick.asp\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Page d\u2019Investopedia sur le chandelier japonais<\/strong><\/a><\/td><\/tr><tr><td><strong>Indicateur technique<\/strong><\/td><td>Formule math\u00e9matique qui utilise le prix (et le volume) historique d\u2019une valeur mobili\u00e8re pour pr\u00e9dire l\u2019\u00e9volution des cours.<\/td><td><a href=\"https:\/\/en.wikipedia.org\/wiki\/Technical_indicator\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Page de Wikipedia<\/strong><\/a> et <a href=\"https:\/\/www.investopedia.com\/terms\/t\/technicalindicator.asp\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Page d\u2019Investopedia<\/strong><\/a><\/td><\/tr><tr><td><strong>Pr\u00e9vision des sentiments \u00e0 partir des informations boursi\u00e8res<\/strong><\/td><td>Service qui pr\u00e9dit l\u2019impact d\u2019un article sur une valeur mobili\u00e8re par traitement du langage naturel (NLP) ou au moyen d\u2019une autre technique de traitement linguistique du texte. L\u2019impact est habituellement qualifi\u00e9 de positif, n\u00e9gatif ou neutre selon la note (influence) attribu\u00e9e au sentiment.<\/td><td><a href=\"https:\/\/en.wikipedia.org\/wiki\/Sentiment_analysis\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Page de Wikipedia<\/strong><\/a><\/td><\/tr><tr><td><strong>Contr\u00f4leur d\u2019entr\u00e9e NGINX<\/strong><\/td><td>Ingress-nginx est le contr\u00f4leur d\u2019entr\u00e9e Nginx employ\u00e9 par Kubernetes comme \u00e9quilibreur de charge et serveur de procuration invers\u00e9.<\/td><td><a href=\"https:\/\/kubernetes.io\/docs\/concepts\/services-networking\/ingress\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Kubernetes Official Documentation<\/strong><\/a><\/td><\/tr><tr><td><strong>NodePort<\/strong><\/td><td>Ce service de Kubernetes expose le service \u00e0 l\u2019adresse IP dans chaque n\u0153ud sous forme de port statique (le NodePort). On peut contacter le service NodePort de l\u2019ext\u00e9rieur de la grappe avec une requ\u00eate &lt;NodeIP&gt;:&lt;NodePort&gt;.<\/td><td><a href=\"https:\/\/kubernetes.io\/docs\/concepts\/services-networking\/service\/#publishing-services-service-types\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Documentation officielle de Kubernetes<\/strong><\/a><\/td><\/tr><\/tbody><\/table><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Introduction Dans cette solution, nous vous montrerons comment Intelius Analytics s\u2019est servi de Kubernetes, d\u2019Airflow d\u2019Apache, de MySQL, de FastAPI, [&hellip;]<\/p>\n","protected":false},"author":19,"featured_media":0,"parent":31486,"menu_order":0,"comment_status":"open","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-33757","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Solution type : Pipeline de donn\u00e9es automatis\u00e9 (ADP) - CANARIE<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.canarie.ca\/fr\/nuage\/catalogue\/plan-de-vol-pour-projet-argus\/solution-type-pipeline-de-donnees-automatise-adp\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Solution type : Pipeline de donn\u00e9es automatis\u00e9 (ADP) - CANARIE\" \/>\n<meta property=\"og:description\" content=\"Introduction Dans cette solution, nous vous montrerons comment Intelius Analytics s\u2019est servi de Kubernetes, d\u2019Airflow d\u2019Apache, de MySQL, de FastAPI, [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.canarie.ca\/fr\/nuage\/catalogue\/plan-de-vol-pour-projet-argus\/solution-type-pipeline-de-donnees-automatise-adp\/\" \/>\n<meta property=\"og:site_name\" content=\"CANARIE\" \/>\n<meta property=\"article:modified_time\" content=\"2024-10-30T13:46:40+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP-diagram.jpg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.canarie.ca\\\/fr\\\/nuage\\\/catalogue\\\/plan-de-vol-pour-projet-argus\\\/solution-type-pipeline-de-donnees-automatise-adp\\\/\",\"url\":\"https:\\\/\\\/www.canarie.ca\\\/fr\\\/nuage\\\/catalogue\\\/plan-de-vol-pour-projet-argus\\\/solution-type-pipeline-de-donnees-automatise-adp\\\/\",\"name\":\"Solution type : Pipeline de donn\u00e9es automatis\u00e9 (ADP) - CANARIE\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.canarie.ca\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.canarie.ca\\\/fr\\\/nuage\\\/catalogue\\\/plan-de-vol-pour-projet-argus\\\/solution-type-pipeline-de-donnees-automatise-adp\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.canarie.ca\\\/fr\\\/nuage\\\/catalogue\\\/plan-de-vol-pour-projet-argus\\\/solution-type-pipeline-de-donnees-automatise-adp\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.canarie.ca\\\/wp-content\\\/uploads\\\/2022\\\/07\\\/ADP-diagram.jpg\",\"datePublished\":\"2022-08-08T15:28:30+00:00\",\"dateModified\":\"2024-10-30T13:46:40+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.canarie.ca\\\/fr\\\/nuage\\\/catalogue\\\/plan-de-vol-pour-projet-argus\\\/solution-type-pipeline-de-donnees-automatise-adp\\\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.canarie.ca\\\/fr\\\/nuage\\\/catalogue\\\/plan-de-vol-pour-projet-argus\\\/solution-type-pipeline-de-donnees-automatise-adp\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/www.canarie.ca\\\/fr\\\/nuage\\\/catalogue\\\/plan-de-vol-pour-projet-argus\\\/solution-type-pipeline-de-donnees-automatise-adp\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.canarie.ca\\\/wp-content\\\/uploads\\\/2022\\\/07\\\/ADP-diagram.jpg\",\"contentUrl\":\"https:\\\/\\\/www.canarie.ca\\\/wp-content\\\/uploads\\\/2022\\\/07\\\/ADP-diagram.jpg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.canarie.ca\\\/fr\\\/nuage\\\/catalogue\\\/plan-de-vol-pour-projet-argus\\\/solution-type-pipeline-de-donnees-automatise-adp\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.canarie.ca\\\/fr\\\/homepage\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Le nuage de l&#8217;ATIR\",\"item\":\"https:\\\/\\\/www.canarie.ca\\\/fr\\\/?page_id=44361\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Catalogue des Propulseurs de l\u2019ATIR\",\"item\":\"https:\\\/\\\/www.canarie.ca\\\/fr\\\/?page_id=6557\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Plan de vol pour : Analyse statique et dynamique automatis\u00e9e de la s\u00e9curit\u00e9 des applications\",\"item\":\"https:\\\/\\\/www.canarie.ca\\\/fr\\\/nuage\\\/catalogue\\\/plan-de-vol-pour-projet-argus\\\/\"},{\"@type\":\"ListItem\",\"position\":5,\"name\":\"Solution type : Pipeline de donn\u00e9es automatis\u00e9 (ADP)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.canarie.ca\\\/#website\",\"url\":\"https:\\\/\\\/www.canarie.ca\\\/\",\"name\":\"CANARIE\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.canarie.ca\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Solution type : Pipeline de donn\u00e9es automatis\u00e9 (ADP) - CANARIE","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.canarie.ca\/fr\/nuage\/catalogue\/plan-de-vol-pour-projet-argus\/solution-type-pipeline-de-donnees-automatise-adp\/","og_locale":"fr_FR","og_type":"article","og_title":"Solution type : Pipeline de donn\u00e9es automatis\u00e9 (ADP) - CANARIE","og_description":"Introduction Dans cette solution, nous vous montrerons comment Intelius Analytics s\u2019est servi de Kubernetes, d\u2019Airflow d\u2019Apache, de MySQL, de FastAPI, [&hellip;]","og_url":"https:\/\/www.canarie.ca\/fr\/nuage\/catalogue\/plan-de-vol-pour-projet-argus\/solution-type-pipeline-de-donnees-automatise-adp\/","og_site_name":"CANARIE","article_modified_time":"2024-10-30T13:46:40+00:00","og_image":[{"url":"https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP-diagram.jpg","type":"","width":"","height":""}],"twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.canarie.ca\/fr\/nuage\/catalogue\/plan-de-vol-pour-projet-argus\/solution-type-pipeline-de-donnees-automatise-adp\/","url":"https:\/\/www.canarie.ca\/fr\/nuage\/catalogue\/plan-de-vol-pour-projet-argus\/solution-type-pipeline-de-donnees-automatise-adp\/","name":"Solution type : Pipeline de donn\u00e9es automatis\u00e9 (ADP) - CANARIE","isPartOf":{"@id":"https:\/\/www.canarie.ca\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.canarie.ca\/fr\/nuage\/catalogue\/plan-de-vol-pour-projet-argus\/solution-type-pipeline-de-donnees-automatise-adp\/#primaryimage"},"image":{"@id":"https:\/\/www.canarie.ca\/fr\/nuage\/catalogue\/plan-de-vol-pour-projet-argus\/solution-type-pipeline-de-donnees-automatise-adp\/#primaryimage"},"thumbnailUrl":"https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP-diagram.jpg","datePublished":"2022-08-08T15:28:30+00:00","dateModified":"2024-10-30T13:46:40+00:00","breadcrumb":{"@id":"https:\/\/www.canarie.ca\/fr\/nuage\/catalogue\/plan-de-vol-pour-projet-argus\/solution-type-pipeline-de-donnees-automatise-adp\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.canarie.ca\/fr\/nuage\/catalogue\/plan-de-vol-pour-projet-argus\/solution-type-pipeline-de-donnees-automatise-adp\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.canarie.ca\/fr\/nuage\/catalogue\/plan-de-vol-pour-projet-argus\/solution-type-pipeline-de-donnees-automatise-adp\/#primaryimage","url":"https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP-diagram.jpg","contentUrl":"https:\/\/www.canarie.ca\/wp-content\/uploads\/2022\/07\/ADP-diagram.jpg"},{"@type":"BreadcrumbList","@id":"https:\/\/www.canarie.ca\/fr\/nuage\/catalogue\/plan-de-vol-pour-projet-argus\/solution-type-pipeline-de-donnees-automatise-adp\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.canarie.ca\/fr\/homepage\/"},{"@type":"ListItem","position":2,"name":"Le nuage de l&#8217;ATIR","item":"https:\/\/www.canarie.ca\/fr\/?page_id=44361"},{"@type":"ListItem","position":3,"name":"Catalogue des Propulseurs de l\u2019ATIR","item":"https:\/\/www.canarie.ca\/fr\/?page_id=6557"},{"@type":"ListItem","position":4,"name":"Plan de vol pour : Analyse statique et dynamique automatis\u00e9e de la s\u00e9curit\u00e9 des applications","item":"https:\/\/www.canarie.ca\/fr\/nuage\/catalogue\/plan-de-vol-pour-projet-argus\/"},{"@type":"ListItem","position":5,"name":"Solution type : Pipeline de donn\u00e9es automatis\u00e9 (ADP)"}]},{"@type":"WebSite","@id":"https:\/\/www.canarie.ca\/#website","url":"https:\/\/www.canarie.ca\/","name":"CANARIE","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.canarie.ca\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"}]}},"_links":{"self":[{"href":"https:\/\/www.canarie.ca\/fr\/wp-json\/wp\/v2\/pages\/33757","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.canarie.ca\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.canarie.ca\/fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.canarie.ca\/fr\/wp-json\/wp\/v2\/users\/19"}],"replies":[{"embeddable":true,"href":"https:\/\/www.canarie.ca\/fr\/wp-json\/wp\/v2\/comments?post=33757"}],"version-history":[{"count":3,"href":"https:\/\/www.canarie.ca\/fr\/wp-json\/wp\/v2\/pages\/33757\/revisions"}],"predecessor-version":[{"id":44495,"href":"https:\/\/www.canarie.ca\/fr\/wp-json\/wp\/v2\/pages\/33757\/revisions\/44495"}],"up":[{"embeddable":true,"href":"https:\/\/www.canarie.ca\/fr\/wp-json\/wp\/v2\/pages\/31486"}],"wp:attachment":[{"href":"https:\/\/www.canarie.ca\/fr\/wp-json\/wp\/v2\/media?parent=33757"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}