diff --git a/chapters/contexte.typ b/chapters/contexte.typ index 29eb029..d90df19 100644 --- a/chapters/contexte.typ +++ b/chapters/contexte.typ @@ -27,9 +27,9 @@ Une année à l'UHA 4.0 du parcours "Master Informatique et Mobilité" se divise 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 environnementales liées à une plante, puis les réutiliser pour prendre des décisions à 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 microcontrôleur 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'assèchement à partir des feuilles 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 par ailleurs pu participer aux développements et à la recherche de solutions d'analyse des données collectées. +J'ai eu comme principales tâche de mettre en place un système IOT pour récolter les données environnementales et les images puis les envoyer vers un serveur distant. J'ai par ailleurs 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 parcours 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ères 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 a permis de réaliser des prédictions basées sur les données collectées. +Cette année, pour la seconde année de mon parcours 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ères 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 a 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 systè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 ont consécutivement été réalisées au sein de l'entreprise Unit Solutions. @@ -43,4 +43,6 @@ La politique de développements de l'entreprise va par la suite changer pour fin Les développements au sein de l'entreprise 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 d'autre qu'un navigateur. Elle est la version moderne de Kuba. - - Observo est un projet servant d'extension au projet InfKuba, ou alors d'outil complètement indépendant pour gérer des domaines d'applications qui lui sont propres. Il permet par exemple de gérer de petits ouvrages, du mobilier urbain… Durant mon alternance, j'ai pu intégrer l'équipe chargée des développements pour la suite logicielle InfSuite. Entouré de plusieurs collègues, j'ai pu développer mes bases de connaissances sur le projet et les différentes technologies utilisées. \ No newline at end of file + - Observo est un projet servant d'extension au projet InfKuba, ou alors d'outil complètement indépendant pour gérer des domaines d'applications qui lui sont propres. Il permet par exemple de gérer de petits ouvrages, du mobilier urbain… + + Durant mon alternance, j'ai pu intégrer l'équipe chargée des développements pour la suite logicielle InfSuite. Entouré de plusieurs collègues, j'ai pu développer mes bases de connaissances sur le projet et les différentes technologies utilisées. \ No newline at end of file diff --git a/chapters/etat-de-l_art.typ b/chapters/etat-de-l_art.typ index bab4eab..87fa705 100644 --- a/chapters/etat-de-l_art.typ +++ b/chapters/etat-de-l_art.typ @@ -57,7 +57,7 @@ Le dernier tiers correspond à la partie visible de l'application. Appelé front Le dernier service complémentaire est un serveur GIS. Ce serveur permet de fournir des informations cartographiques comme des adresses. Il permet aussi de délivrer les fonds de cartes. Ils peuvent être hébergés et entretenus par Unit Solutions, ou alors par d'autres entreprises comme le fond de carte Open Street Map appartenant à la fondation du même nom. Il n'est pas intégré dans le concept d'architecture trois tiers puisque, comme je l'ai indiqué, ce service est indépendant et n'est pas une dépendance du reste. -Le schéma @three-tier-archi-diagram 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. +Le schéma @three-tier-archi-diagram ci-dessous représente les trois tiers de l'application communiquant ensemble. 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. #figure( image("../assets/images/three-tier-archi-diagram.png"), @@ -92,7 +92,7 @@ PostgreSQL a également l'avantage d'être multiplateforme. Il peut ainsi foncti - Le partitionnement - La gestion du cache - Des notions de concurrence et d'isolation - - De la réplication et du sharding#footnote("Allié à la réplication, il permet de répartir la charge sur plusieurs instances d'un même serveur."). + - De la réplication et du #ref-glossary(term: "Sharding")[sharding]. === Les avantages de PostgreSQL @@ -128,8 +128,11 @@ PostgreSQL est un SGBDR open source très populaire, grâce à sa fiabilité, sa == 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éparations de bugs, des ajouts de nouveautés... et qui est utilisé dans l'application. Ce framework est continuellement mis à jour sans préavis pour les utilisateurs, mais utilise un système de versionnement. Le versionnement 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 où Google déploierait des changements de code majeurs qui rendent le code ultérieur obsolète, le système de versionnement lui permet de rendre sa mise à jour accessible au grand public, sans pour autant forcer la main aux développeurs à 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 versionnement. Malheureusement, réaliser de nouveaux développements pour l'application tout en surveillant les mises à jour des composants externes, analyser 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ée est donc d'effectuer occasionnellement ces mises à jour, soit lors de moments clés (de nouvelles fonctionnalités importantes, des mises à jour de sécurité, des gains de performances, etc.), soit spontanément pour maintenir 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 a été adoptée très tôt par InfSuite et est restée depuis la version utilisée dans l'environnement InfSuite. Pour suivre la stratégie de mise à jour 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, a été mis sur la table. Le chef de projet en charge d'InfSuite a 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. diff --git a/chapters/réalisation.typ b/chapters/réalisation.typ index 59a86f4..d8f6ce5 100644 --- a/chapters/réalisation.typ +++ b/chapters/réalisation.typ @@ -17,7 +17,7 @@ L'application InfSuite souhaite utiliser une fonctionnalité importante de Postg En effet, InfSuite utilise un système de version basé sur de l'horodatage. Quand un utilisateur met à jour les informations d'un document dans l'application (inspection, restauration, etc.), il crée une nouvelle version du document. -Si deux utilisateurs récupèrent la même version d'un document, qu'ils effectuent tous deux des mises à jour sur ce document, que l'utilisateur A sauvegarde ses changements en premier, que l'utilisateur B essaye de sauvegarder le document avec ses changements après que la version ait changé, alors le serveur lui signalera qu'il ne possède pas la dernière version du document qui a été modifiée entre-temps et donc qu'il ne peut pas sauvegarder ses modifications sans mettre à jour la version de son document. +Si deux utilisateurs récupèrent la même version d'un document, qu'ils effectuent tous deux des mises à jour sur ce document, que l'utilisateur A sauvegarde ses changements en premier, que l'utilisateur B essaye de sauvegarder a son tour le document avec ses changements, alors le serveur lui signalera qu'il ne possède pas la dernière version du document, qu'il a été modifiée entre-temps et donc qu'il ne peut pas sauvegarder ses modifications sans mettre à jour la version de son document. Pour assurer ce suivi de version, le document contient une version en base, qui est un timestamp sans fuseau horaire. Un problème peut alors apparaître si deux utilisateurs, sur des fuseaux horaires différents, effectuent des modifications au même instant. diff --git a/main.pdf b/main.pdf index 800f1fb..4617f82 100644 Binary files a/main.pdf and b/main.pdf differ diff --git a/main.typ b/main.typ index 531de51..4f28569 100644 --- a/main.typ +++ b/main.typ @@ -23,11 +23,12 @@ "Back-End": [Some content], "Front-End": [Also some content], "EF": [#display-def("EF") qui se decline également en #display-def("EF") Core, est une librairie C\# qui sert d'#ref-glossary(term: "ORM")[ORM]], - "ORM": [De l'anglais #display-def("ORM"), permet d'interfacer les object code avec les données contenues en base de données.] + "ORM": [De l'anglais #display-def("ORM"), permet d'interfacer les object code avec les données contenues en base de données.], + "Sharding": [Allié à la réplication, il permet de répartir la charge sur plusieurs instances d'un même serveur.] ), hayagriva-bibliography: "bibliographie.yml", thanks: [ -J'aimerais remercier Monsieur le Directeur d'Unit Solutions M. Thierry MOEBEL pour m'avoir donné l'opportunité de rejoindre l'entreprise et d'effectuer ma première année de master en alternance. Je le remercie également d'avoir pris en compte mes intérêts en me confiant un projet captivant, correspondant parfaitement aux attentes de mon année. De plus, je suis reconnaissant qu'il ait prolongé mon contrat pour l'année prochaine, me permettant ainsi de me lancer dans le monde du travail et de poursuivre mon évolution au sein de l'entreprise. +J'aimerais remercier Monsieur le Directeur d'Unit Solutions M. Thierry MOEBEL pour m'avoir donné l'opportunité de rejoindre l'entreprise et d'effectuer ma seconde année de master en alternance. Je le remercie également d'avoir pris en compte mes intérêts en me confiant un projet captivant, correspondant parfaitement aux attentes de mon année. De plus, je suis reconnaissant qu'il ait prolongé mon contrat pour l'année prochaine, me permettant ainsi de me lancer dans le monde du travail et de poursuivre mon évolution au sein de l'entreprise. Je souhaite exprimer ma gratitude envers M. Cédric MARTIN, mon tuteur en entreprise, pour son accompagnement tout au long de l'année sur le projet. Sa transmission de connaissances techniques et ses explications sur l'architecture et le fonctionnement du projet ont été d'une grande aide pour moi.