add: context and more state of art, start writing the realisation

This commit is contained in:
Freezlex 2024-07-23 00:36:40 +02:00
parent 1e400b96c9
commit 2fb32ece70
5 changed files with 63 additions and 28 deletions

View File

@ -14,18 +14,33 @@ Le master, également en alternance, impose une période en entreprise plus sout
== Mon parcours académique
Après l'obtention de mon baccalauréat scientifique, j'ai intégré l'UHA 4.0 pour y suivre trois années de formation. Ces années m'ont permis de réaliser deux stages de 6 mois dans deux entreprises et une troisième année en alternance chez Unit Solutions AG.
Après l'obtention de ma Licence, j'ai décidé de poursuivre en master à l'UHA 4.0 pour compléter mes acquis et acquérir de nouvelles compétences. Cette formation en alternance privilégie le temps en entreprise, passant de 6 à 9 mois.
=== Jusqu'à la licence
Durant ma première année en DU 4.0.4, j'ai eu l'opportunité d'aborder des sujet complexes d'algorithmie, d'intelligence artificielle, de fouille de données et quelques notions de sécurité informatique.
Pour mettre en pratique nos acquis lors des topos nous réalisons, en groupe de 3 élèves, un fil-rouge regroupant les connaissances acquises dans un sujet concret. Durant cette première année, nous avons pu mettre en place un système de suivi et d'alerte de l'état d'une plante par analyse d'./images, relevé de données environnementales, algorithmes de prédiction, ...
Après avoir obtenu un baccalauréat scientifique, option science de l'ingénieur, j'ai choisi de m'orienter vers le cursus proposé par l'UHA 4.0. J'ai alors pu réaliser mes trois première années d'études superieures en engregeant de nombreuses connaissances en toute autonomie dans le de l'informatique orienté web et de cotoyer des milieux professionnel via les projets et les stages.
J'ai pu conclure ces trois premières années d'études à l'UHA 4.0 il y'a deux ans en obtenant ma licence professionnelle.
=== Le parcours master
Une année à l'UHA 4.0 du parcours "Master Informatique et Mobilité" se divise en deux partie dupliquées sur deux années. Dans un premier temps, l'étudiant doit réaliser, en groupe de 3 ou 4 élèves, un "fil rouge". Ce projet à pour but de mettre en pratique les connaissances acquises durant les scéances de cours assurées par des enseignants chercheurs ou autres intervenants. Les cours portent sur les technologies qui pourront et seront réutilisées durant le fil-rouge tel que l'Intelligence Artificielle, l'optimisation combinatoire, la fouille de données, etc. La seconde partie de l'année est une phase de neufs moins durant laquelle l'étudiant est dans une entreprise pour mettre en pratique, consolider et acquerir de nouvelles connaissances.
Lors de ma première année du parcours de master, nous avons eu comme sujet de fil rouge, la gestion et l'automatisation de l'arrosage des plantes. Le but était de pouvoir récolter des données environnementale liées à une plante, puis les réutiliser pour prendre des décision à l'aide de divers outils.\
Nous avons pu utiliser une sonde de température et un capteur d'humidité pour récolter les données, les envoyer grâce à un microcontroleur vers un serveur pour stocker et traiter les données.\
Nous avons également pu utiliser des caméras pour nous permettre d'effectuer des constatations d'assechement à partir des feuille d'une plante qui réagit de manière assez marquée à ce facteur.\
J'ai eu comme principales tâche de mettre en place IOT pour récolter les données environnementales et les images puis les envoyer vers un serveur distant. J'ai également pu participer aux développements et à la recherche de solutions d'analyse des données collectées.
Cette année pour la seconde année de mon pacrous au sein du master, le sujet était de pouvoir prédire le confort moyen d'une salle de travail basé sur le ressenti des utilisateurs. Basé sur de la collecte de données et de l'analyse de ces dernière pour effectuer des prédictions nous avions accès à une sonde de température, des microphones et des caméras pour analyser l'environnement. Comme à l'itération précédente du fil-rouge, un système de stockage et d'analyse des données nous à permis de réaliser des prédictions basées sur les données collectées.
En tant que scrum master, j'ai pu développer un sytème IOT de collecte de données et mettre en place un système de prédiction par analyse des données entrantes.
Mes deux années de master on consecutivement été réalisées au sein de l'entreprise Unit Solutions.
== Lentreprise Unit solutions
Unit Solutions est une entreprise Suisse, située à Allschwil dans le canton de Bâle-Campagne. Elle a été fondée en 1986 initialement sous le nom de « CAD Rechenzentrum AG », nom qui a été changé en 2015 pour « Unit Solutions AG ». Lentreprise est spécialisée dans la conception d'applications modernes web et mobiles, dans les systèmes de localisation (Système d'information géographique SIG, plans, modèles 3D, photos, GPS) et dans l'exploitation de données et la génération de rapports. Unit Solutions comptabilise une vingtaine demployés décomposés en plusieurs équipes, avec pour chacune dentre elles, un responsable (Cf. annexe 1). Léquipe du support est directement en relation avec les clients, ils sont chargés du bon fonctionnement des outils utilisés en interne
à lentreprise et des serveurs utilisés pour la publication des différentes solutions développées. Ensuite chaque équipe a la responsabilité du suivi et du développement dune ou plusieurs applications. Jai été intégré dans léquipe de développement Mobility-team (Cf. la figure 1, ci- après). Figure 1 : organigramme de léquipe de développement Mobility-team Lentreprise concentre principalement son activité sur la réalisation des projets InfKuba, Kuba,
Mobilité douce et Observo :
- InfKuba et Kuba sont une suite de logiciels permettant le suivi et la maintenance d'infrastructures tels quune route, un pont, une barrière anti-avalanche ou encore un filet anti-éboulement.
- Observo est une application mobile permettant de relever des observations sur des infrastructures au travers dune carte. Initialement autonome, elle tend à collaborer avec la suite InfKuba. En effet, nous pouvons désormais importer et exporter des données entre les applications. Lutilisation dObservo est plutôt destinée à une utilisation en déplacement en se rendant directement auprès de linfrastructure ciblée.
- Mobilité douce est une application web, facilitant la coordination à travers les cantons de Suisse pour lentretien de chemins, la planification ditinéraires ainsi que la signalisation pour les modes de mobilité douce comme la randonnée, le vélo et le roller.
Unit Solutions est une entreprise suisse, basée à Allschwil dans le canton de Bâle-Campagne. Fondée en 1986 premièrement sous le nom CADRZ, dédiée à la création dun cadastre numérique pour la ville dAllschwil, elle est aujourdhui dirigée par M. Thierry MOEBEL.\
La philosophie de lentreprise va par la suite changer pour finalement réaliser ses propres logiciels et en faire la maintenance. Lentreprise compte actuellement une vingtaine demployés pour le développement des différentes solutions, le support et ladministratif.
Les développements au sein de lentreprise reposent sur quatre gros projets :
- Langsam Verkehr2 est une solution visant la gestion des sentiers de mobilité douce en Suisse. Cela comprend la gestion des sentiers de randonnée ou les pistes cyclables.
- Kuba et InfKuba sont les deux solutions principales portées par Unit Solutions. Ces deux logiciels sont relativement similaires dans leur but, mais leur conception est totalement différente. Kuba est sous forme de client lourd (application à installer) tandis qu'InfKuba est une application web qui ne nécessite rien dautre quun navigateur. Elle est la version moderne de Kuba.
- Observo est un projet servant dextension au projet InfKuba, ou alors doutil totalement indépendant pour gérer des domaines dapplications qui lui sont propres. Il permet par exemple de gérer de petits ouvrages, du mobilier urbain… Durant mon alternance, jai pu intégrer léquipe chargée des développements pour la suite logicielle InfSuite. Entouré de plusieurs collègues, jai pu développer mes bases de connaissances sur le projet et les différentes technologies utilisées.

View File

@ -43,11 +43,12 @@ Le dernier service complémentaire est un serveur GIS. Ce serveur permet de four
Le schéma ci-dessous représente les trois tiers de l'application communiquant ensemble et le serveur GIS permettant de fournir des informations complémentaires. L'application propose à l'utilisateur de personnaliser toute l'application. Cela comprend par exemple quel fond de carte afficher, quelles données afficher, personnaliser l'affichage de ces données tel que le type d'affichage des épingles… Ces configurations sont propres à l'utilisateur et sont sauvegardées en base de données, en parallèle de toutes les autres données de l'application.
#pagebreak(weak: true)
== PostgreSQL, un système open source
=== Présentation de PostgreSQL
PostgreSQL est un système de gestion de base de données relationnelle (SGBDR#footnote("Système de gestion de base de données relationnelle")<SGBDR_def>). Le projet est initié en 1986 par Michael Stonebraker et Andrew Yu à l'Université de Californie à Berkley.
PostgreSQL est un système de gestion de base de données relationnelle (SGBDR#display-def("SGBDR")). Le projet est initié en 1986 par Michael Stonebraker et Andrew Yu à l'Université de Californie à Berkley.
L'une des force majeur de ce système est d'être OpenSource, ce qui signifie qu'il est développé et maintenu par la communauté en plus des développements apportés par la société mère PostgreSQL.
@ -55,7 +56,7 @@ PostgreSQL tient sa réputation de sa fiabilité, sa robustesse et sa richesse f
=== Les principes de base
Comme dit précédement, PostgreSQL est un SGBDR@SGBDR_def. Il utilise le language SQL#footnote("Structured Query Language")<SQL_def> pour chercher ou manipuler les données stockées. Le système met à disposition une serie de fonctions pour permettre ces interactions, à savoir:
Comme dit précédement, PostgreSQL est un SGBDR. Il utilise le language SQL#footnote("Structured Query Language")<SQL_def> pour chercher ou manipuler les données stockées. Le système met à disposition une serie de fonctions pour permettre ces interactions, à savoir:
- Les transactions: un ensemble d'une ou de plusieures opérations regroupées en une seule opération atomique.
- Les vues: table virtuelle qui sélectionne et affiche des données à partir d'une ou plusieurs tables réelles.
- Les contraintes d'inrégrité: règles qui garantissent la validité et la cohérence des données dans une base de données.
@ -72,7 +73,7 @@ PostgreSQL à également l'avantage d'être multiplateforme. Il peut ainsi fonct
=== Les avantages de PostgreSQL
PostgreSQL est un SGBDR@SGBDR_def très populaire pour plusieurs raisons:
PostgreSQL est un SGBDR très populaire pour plusieurs raisons:
- Il est open source, ce qui signifie qu'il est gratuit et que son code source est disponible pour tous. Cela permet à la communauté de développeurs de contribuer à son amélioration et de créer des extensions pour ajouter des fonctionnalités supplémentaires.
- Il est très fiable et robuste, ce qui en fait un choix idéal pour les applications critiques et les environnements de production.
- Comme vu précédement il est très performant, grâce à son moteur de stockage et son optimiseur de requêtes. Il est capable de gérer de gros volumes de données et de supporter des charges de travail élevées.
@ -86,9 +87,9 @@ En type de fichiers volumineux, on peut par exemple citer les fichiers MAJICS, R
=== Les inconvénients de PostgreSQL
PostgreSQL présente également quelques inconvénients qu'il faut prendre en compte:
- Il peut être plus complexe à installer et à configurer que d'autres SGBDR@SGBDR_def, tels que MySQL ou SQLite.
- Il peut nécessiter plus de ressources matérielles (mémoire, CPU, espace disque) que d'autres SGBDR@SGBDR_def pour fonctionner de manière optimale.
- Il peut être moins performant que d'autres SGBDR@SGBDR_def pour certaines tâches spécifiques, telles que les requêtes de type OLAP (Online Analytical Processing).
- Il peut être plus complexe à installer et à configurer que d'autres SGBDR, tels que MySQL ou SQLite.
- Il peut nécessiter plus de ressources matérielles (mémoire, CPU, espace disque) que d'autres SGBDR pour fonctionner de manière optimale.
- Il peut être moins performant que d'autres SGBDR pour certaines tâches spécifiques, telles que les requêtes de type OLAP (Online Analytical Processing).
"PostgreSQL 12 - Guide de l'administrateur" de Guillaume Lelarge et Stéphane Schildknecht, éditions Eyrolles, 2020.
@ -98,10 +99,20 @@ PostgreSQL présente également quelques inconvénients qu'il faut prendre en co
=== Conclusion
PostgreSQL est un SGBDR@SGBDR_def open source très populaire, grâce à sa fiabilité, sa robustesse, sa richesse fonctionnelle et sa flexibilité. Il est utilisé dans de nombreux domaines, tels que la finance, la santé, l'éducation, le gouvernement, etc. Il est également compatible avec de nombreux langages de programmation et de nombreux systèmes d'exploitation. Cependant, il peut être plus complexe à installer et à configurer que d'autres SGBDR@SGBDR_def et nécessiter plus de ressources matérielles. Malgré ces inconvénients, PostgreSQL reste un choix idéal pour de nombreuses applications critiques et environnements complexes.
PostgreSQL est un SGBDR open source très populaire, grâce à sa fiabilité, sa robustesse, sa richesse fonctionnelle et sa flexibilité. Il est utilisé dans de nombreux domaines, tels que la finance, la santé, l'éducation, le gouvernement, etc. Il est également compatible avec de nombreux langages de programmation et de nombreux systèmes d'exploitation. Cependant, il peut être plus complexe à installer et à configurer que d'autres SGBDR et nécessiter plus de ressources matérielles. Malgré ces inconvénients, PostgreSQL reste un choix idéal pour de nombreuses applications critiques et environnements complexes.
#pagebreak(weak: true)
== Problématique
L'application InfSuite s'appuie sur de nombreuses technologies, développées en externe de l'entreprise, pour fonctionner. Je peux par exemple citer Angular, un framework front-end développé par Google, qui est régulièrement mis à jour avec des réparation de bugs, des ajouts de nouveautées,... et qui est utilisé dans l'application. Ce framework est régulièrement mis à jour sans préavis pour les utilisateurs mais utilise un système de versionning. Le versionning permet d'éviter les changements trop fréquents et perturbateurs, tout en offrant la possibilité d'introduire des améliorations et des nouvelles fonctionnalités de manière contrôlée. Il aide également les développeurs à anticiper les changements majeurs et à maintenir leurs applications à jour avec les dernières versions d'Angular.\
Par exemple dans le cas ou Google déploierait des changements de code majeurs qui rendent le code ulterieur obselète, le système de versionning lui permet de rendre sa mise à jour accésible au grand public, sans pour autant forcer la main aux développeur à effectuer une mise à jour qui pourrait mettre le fonctionnement de leur application en péril.\
La majorité des technologies utilisées par InfSuite suivent ce système de versionning. Malheuresement, réaliser de nouveau développements pour l'application tout en surveillant les mises à jour des composants externes, anaylser leur impact, les intégrer à l'application dés que ces dernières sont disponibles, n'est clairement pas possible. La stratégie de mises à jour utilisées est donc alors d'effectuer occasionellement ces mises à jour, soit lors moments clefs (de nouvelles fonctionnalités importantes, des mises à jour de sécurité, des gains de performances, ..), soit spontanément pour maintenanir l'environnement à jour.\
Ce cas de figure est présent à toutes les couches de l'architecture logicielle d'InfSuite, front-end, back-end, bases de données. Depuis un certain temps l'application InfSuite utilise la version 14 du SGBDR PostgreSQL. Sortie en septembre 2021, cette version est maintenant dépréciée en faveur de la dernière version stable de l'application 16. Cependant la version 14 à été adoptée très tot par InfSuite et est restée depuis la version utilisée dans l'environnement InfSuite.
Pour suivre la philosophie de de l'application, le sujet d'une mise à jour de la base de données d'InfSuite, de la version 14 vers la version stable la plus récente, à été mis sur la table. Le chef de projet en charge d'InfSuite à alors demandé une expertise pour la réalisation de cette migration pour s'assurer de la viabilité, mais également d'envisager, si possible, de réaliser cette migration en utilisant les nouveautés disponibles pour cette migration.
Je vais donc cherhcer à savoir quelles sont les étapes préliminaires pour s'assurer de la viabilité d'une telle migration, comment réaliser cette migration de manière optimale dans le contexte d'InfSuite et comment s'assurer de la qualité de la réalisation de cette dernière.
#pagebreak(weak: true)
== Existants
Effectuer une migration de base de données n'est pas une tâche anodine. Cela demande du travail en amont, il faut analyser les différents scénarios possibles, estimer un budget pour une telle tâche, réaliser de potentiels développements, s'assurer de la fiabilités avant de mettre tout ça en pratique et enfin la réalisation de l'étape cruciale sur les environnements sensibles.
@ -112,7 +123,7 @@ Pour faire une migration de base de données il existes de nombreuses solutions,
On peut dans un premier temps penser à effectuer cette migration grâce à des outils spécialisés qui se chargent de faire la migration automatiquement et de s'assurer de la pérennité entre les données de l'ancienne base et les données insérée dans la nouvelle.\
En prenant pour exemple l'outil Oracle Data Dump fournit par l'entreprise Oracle, ce logiciel permet de sauvegarder et restaurer des données et des métadonnées pour les bases Oracle.\
Il est rapide et fiable, on peut ainsi lui fournir un fichier #ref-glossary(term: "Dump")[dump] de la base source et l'outil va se charger, grâce à ce fichier, d'intégrer les données dans la base cible.\
Microsoft propose sa solution alternative SSMA pour importer les types de bases Access, DB2, MySQL, Oracle, SAP ASE vers leurs différents SGBDR@SGBDR_def propriétaires (à savoir les suites SQL Server).\
Microsoft propose sa solution alternative SSMA pour importer les types de bases Access, DB2, MySQL, Oracle, SAP ASE vers leurs différents SGBDR propriétaires (à savoir les suites SQL Server).\
Sur le même principe les outils MySQL workbench, AWS Database Migration Service (DMS) et PgAdmin permettent de réaliser le même type de migration vers leurs systèmes propriétaires à savoir respectivement MySQL, AWS et PostgreSQL.
Les principaux désavantages de ce genre de solutions sont:

View File

@ -3,12 +3,23 @@
== Introduction
Je présente dans cette section le travail réalisé durant les 9 mois au sein de l'entreprise UnitSolutions. Portant sur le sujet d'une migration de base de données dans le but de maintenir les technologies de l'application à jour, je présente tout d'abord les différents éléments qui justifient le choix d'effectuer cette migration de base de données, par la suite j'expose l'analyse préliminaire réalisée pour s'assurer que la migration reste pertinente, j'aborde par la suite les changement réalisés dans le code et enfin je présente les résultats obtenus post-migration.
== Pertinence et philosophie
== Analyse préliminaire
Lorsque le sujet de mettre à jour le SGBDR à été présente, il n'a pas été décidé de remplacer PostgreSQL. Comme expliqué précédement, PostgreSQL excelle dans la gestion de données géographiques et attributaire, est complet et très bien maintenu à jour, ce qui en fait le candidat parfait pour l'environnement InfSuite plus que tout autre système proposé par la concurrence.\
Maintenir PostgreSQL en tant SGBDR de l'application écarte déjà un bon nombre de solutions niveau logiciels. Je peux déjà laisser tomber les logiciels payants et long d'expertises autres que PgAdmin pour effectuer cette migration qui reste le logiciel le plus adéquat.
=== Pertinence et philosophie
=== Analyse préliminaire
=== Compatibilité
=== Tests de performance
===
== Adaptation du code
== Résultats
=== Performances finales
=== Problèmes rencontrés

View File

@ -11,13 +11,13 @@
degree: "Master informatique et mobilité",
promotion: (title: "UHA 4.0.5", year: 2024),
acronyms: (
"sample": ("sample"),
"OFROU": ("Office Fédérale des Routes")
"OFROU": ("Office Fédérale des Routes"),
"SGBDR": ("Système de gestion de base de données relationnelle")
),
glossary: (
"Sample": [Sample.],
"Dump": [Un fichier "dump" est un fichier de sauvegarde qui contient une copie de toutes les données et métadonnées d'une base de données à un instant T.],
"OFROU": [L'#display-def("OFROU") est l'autorité suisse compétente pour l'infrastructure routière]
"OFROU": [L'#display-def("OFROU") est l'autorité suisse compétente pour l'infrastructure routière],
"SGBDR": [Un #display-def("SGBDR") est le système composnat une base de données.]
),
hayagriva-bibliography: "bibliographie.yml",
thanks: [
@ -36,7 +36,7 @@
Mon parcours de master à été réalisé au sein de l'entreprise Unit Solutions basée à Allschwil en Suisse, qui s'était déjà proposée de me suivre dans mon cursus universitaires pour les deux années précédentes. Mes contributions principales se sont orientées sur le projet InfSuite et l'environnement l'entourant. L'application pour laquelle j'ai pu apporter ma contribution à comme objectif premier de gérer le suivi et la maintenance d'état d'ouvrages d'art.
Dans ce mémoire je vous présenterais les détails du projet InfSuite et de ma ccontribution au projet. J'ai principalement eu pour objectif de planifier et de réaliser une migration de base de données. En effet, la base de données étant un point clef de l'application, une maintenance de cette dernière est nécessaire pour assurer une certaine pérennité de l'application. Cette étape de migraton s'inscrit dans un projet de maintenir les technologies de l'application à jour et de permettre de palier à d'autres problèmes.
Dans ce mémoire je vous présenterais les détails du projet InfSuite et de ma ccontribution au projet. J'ai eu pour objectif principal de planifier et de réaliser une migration de base de données. En effet, la base de données étant un point clef de l'application, une maintenance de cette dernière est nécessaire pour assurer une certaine pérennité de l'application. Cette étape de migraton s'inscrit dans un projet de maintenir les technologies de l'application à jour et de permettre de palier à d'autres problèmes.
Dans ce document je commencerais par présenter ce qui m'a amené à rejoindre le cursus master et les compétence acquises durant ma formation, j'aborderais par la suite les enjeux, une analyse et le plan d'action de la migrationet, puis j'expliquerais la réalisation et les problèmes rencontrer et enfin je pourrais conclure ce document.
],
@ -47,8 +47,6 @@
#include "chapters/contexte.typ"
#include "chapters/project-overview.typ"
#include "chapters/etat-de-l_art.typ"
#include "chapters/réalisation.typ"