Suite à mon stage à la Communauté de Communes Vendée Grand Littoral, et grâce aux résultats obtenus en première année, j'ai pu faire parti de ceux qui ont eu la chance de se voir proposer l'alternance pour une deuxième année. J'ai saisi l'opportunité et j'ai pu travailler 1 an en alternance comme développeur pour la communauté de communes. Mon alternance m'a permis de découvrir le monde du travail ainsi que beaucoup d'outils utilisés en informatique, et d'acquérir des compétences pratiques solides.
Lors de mon alternance j'ai pu commencer à travailler en mode projet, me positionnant comme "chef de projet".
J'ai donc reçu une demande de mon N+2 ainsi qu'un cahier des charges d'un projet que je devais accomplir. Il s'agit d'un portail de visualisation des services informatiques, qui va permettre à mon N+2 de faire l'inventaire de nos services déployés dans les autres communes rapidement et de manière efficace, ainsi que permettre aux communes que l'on gère de voir les services qu'on leur propose et tout les comptes des agents que nous avons dans nos système.
Les personnes ayant accès à ce portail (Les DGS) peuvent lister les comptes des différents services mais aussi demander la suppression d'un compte, ce qui engendre la création automatique d'un ticket sur la plateforme GLPI. Ce portail sert aussi à montrer notre présence au sein des autres communes, pour leur rappeler que nos services existent, et ce qu'on leur propose, c'est donc aussi un outil marketing pour nous.
Pour réaliser ce projet j'ai utilisé Asana comme gestionnaire de projet, et la plateforme d'automation Windmill, qui m'a permis de créer une interface web rapidement ainsi que de déployer mes scripts pour le backend de l'application (Python, TypeScript, SQL). J'ai du mettre en place une base de données MariaDB afin de stocker les informations de chaque service dedans grâce à leurs API, que je vais interroger toutes les nuits grâce à un script de synchronisation de la donnée des APIs des services vers ma base de données, et qui va faire l'historique des modifications, afin de pouvoir afficher un graphique de l'évolution des services dans l'application (ajout de comptes, suppressions de comptes).
J'ai beaucoup apprécié travailler sur ce projet, car il m'a permis d'apprendre l'envers du décor de beaucoup d'outils, tel que GLPI, Nextcloud, ou encore Zimbra, ainsi que parce que j'ai pu créer ma propre application de A à Z moi-même, en autonomie, en suivant un cahier des charges et en exploitant l'ensemble des compétences du BTS. J'ai aussi eu l'occasion d'animer des réunion pour présenter l'outil ainsi que questionner mon N+2 qui m'avait demandé cette application.
Outils utilisés : Python, TypeScript, SQL (MariaDB), Windmill, GLPI, 3CX, Zimbra, NextCloud, Active Directory, Asana, APIs
#C1.1 – Gestion du patrimoine informatique
#C1.2 – Assistance et gestion des incidents
#C1.3 – Développement de la présence en ligne
#C1.4 – Travail en mode projet
#C1.5 – Mise à disposition d’un service
#C1.6 – Développement professionnel
Afin d'assurer la transformation et la synchronisation des données entre deux logiciels (Cart@DS et Isigéo), nous avions une VM Linux, qui faisait tourner la version client du logiciel Pentaho en Java avec un cron pour lancer des scripts SQL servant d'ETL (Extract Transform Load).
Cette solution était assez problématique, elle avait été mise en place avec un SIG n'étant plus présent dans le service, les mails en cas d'erreur n'étaient pas envoyés et donc impossible de savoir quand est-ce que la synchronisation n'avait pas pu être réalisée, et cette solution demandait une VM Linux complète pour tourner, une vraie usine à gaz.
On m'a donc confié la tâche de retravailler ce fonctionnement et d'utiliser Windmill comme ETL en portant les requêtes SQL vers un script DuckDB sur Windmill afin de remplacer Pentaho.
Pour se faire j'ai utilisé les fichiers que notre SIG ayant repris le flambeau m'a fourni, afin d'en récupérer les requêtes SQL et de comprendre le fonctionnement de celles-ci. Nous avons ensuite cloné la base de donnée qui recevait la donnée afin que je puisse effectuer des tests sur celle-ci. Une fois les scripts portés, j'ai aussi réalisé un script Python s'exécutant en cas d'erreur de la requête SQL afin de nous prévenir par mail de l'échec, pour que l'on puisse la corriger. Le tout tourne chaque nuit à 2:45 à l'aide de la fonctionnalité des Schedules sur Windmill.
Ce projet était nécessaire pour fiabiliser notre infrastructure interne et centraliser les tâches sur Windmill, afin de mieux les gérer.
Outils Utilisés : Pentaho, DuckDB, Python, Windmill, DBeaver, SQL (PostgreSQL), Asana (Mode projet)
#C1.4 – Travail en mode projet
#C1.5 – Mise à disposition des utilisateurs d’un service
#C1.6 – Organisation de son développement professionnel
Lors de mon stage, un autre stagiaire se chargeait de la conception d'un paquet WAPT afin de configurer automatiquement Firefox pour les utilisateurs. Cependant à la fin du stage, le paquet n'était pas terminé et comportait beaucoup d'erreurs empêchant son fonctionnement, j'ai donc récupéré le projet après, durant mon alternance pour le mener à bien.
Premièrement, j'ai du revoir l'ensemble du code du paquet afin de le rendre pertinent, car certaines parties du codes n'étaient pas du tout optimales (checks pour voir si le PC est sous Linux/macOS alors que l'on a que des PC Windows dans le parc), et certaines parties ne fonctionnaient simplement pas (Utilisation de fonctions non pertinente qui n'allait jamais rendre la donnée attendue, etc...) donc j'ai nettoyé le code, et patché l'ensemble des erreurs qu'il comportait.
Une fois fait, j'ai donc utilisé ma VM Windows 11 (étant sur Linux je n'aurai pas été en mesure de tester le paquet) afin de déployer le paquet sur elle même pour le tester. Le paquet enfin fonctionnel, j'ai pu m'attaquer à la seconde partie du projet.
Sur Windmill, j'ai encore une fois développé une application Web mêlant Python et SQL en backend afin de contrôler à distance les raccourcis en favoris des différents postes. On peut par exemple appliquer un raccourci Nextcloud pour certaines communes, et Google Drive pour d'autres, indépendamment. Le paquet WAPT va se charger tout seul de vérifier les changements dans la base de données de raccourcis et de les appliquer sur Firefox. De même j'ai pensé le code pour qu'il puisse automatiquement appliquer les bons raccourcis même si le PC change d'OU dans l'AD (donc qu'il change de propriétaire/de collectivité).
Le tout communique grâce à un workflow que j'ai réalisé sur la plateforme Windmill avec un trigger HTTP POST, qui lui permet d'agir comme une API capable de servir d'intermédiaire entre le paquet/Windmill et la base de données en utilisant du TypeScript.
Outils Utilisés : Windmill, Python, WAPT, VM, SQL (MariaDB), DBeaver, TypeScript, Firefox, Asana (Mode projet)
#C1.1 – Gestion du patrimoine informatique
#C1.4 – Travail en mode projet
#C1.5 – Mise à disposition des utilisateurs d’un service
#C1.6 – Développement professionnel
Voilà ce qui conclu mes principaux grands projets, pour le reste j'ai beaucoup travaillé sur une myriade de scripts d'automatisations en tout genre, comme par exemple modification automatique d'un agent dans l'AD à l'aide d'un formulaire sur GLPI, bot pour réponses automatiques sur GLPI, création et actualisation automatique de listes de diffusions dans Zimbra etc... Beaucoup de scripts comme j'ai pu présenter dans la page "Mon Stage" de ce portfolio.