Retour au blog

Bilan de ma première année d'alternance 📊

Un court bilan de ma prmière année d'alternance au sein de Genavir

Ma première année d’alternance : bâtir un référentiel universel et bien plus encore

Lorsque j’ai commencé mon alternance il y a un an, mon objectif était simple : apprendre et apporter de la valeur. Je savais que l’environnement dans lequel j’allais évoluer était riche en défis : des données dispersées, des processus manuels chronophages et un système d’information hétérogène. Au terme de ces premiers douze mois, le bilan va bien au‑delà de mes espérances. J'ai pris de nombreuses responsabilités techniques et contribué à la construction d’un cœur de système capable d’orchestrer toutes les données de l’organisation, dépassant largement mon rôle initial d’apprenti.

Un référentiel générique pour orchestrer les données

Le projet qui a occupé l’essentiel de mon année est un référentiel de données. Au premier abord, on pourrait le décrire comme un connecteur entre les informations issues des ressources humaines et l’annuaire informatique. Mais l’ambition était beaucoup plus large. L’idée était de créer un socle générique permettant de centraliser, normaliser et exposer n’importe quel type de données : personnelles, comptables, scientifiques, logistiques ou opérationnelles, sans dépendre de services propriétaires.

Trois briques pour une architecture extensible

Le référentiel est structuré en trois parties :

  • Une API dédiée à l’IHM : construite avec un framework web moderne, elle expose dynamiquement les données du référentiel. Elle s’adapte automatiquement au schéma de la base de données sous‑jacente, ce qui permet de gérer de nouveaux domaines métier sans écrire une seule ligne de code supplémentaire.
  • Une interface web configurable : au lieu d’un écran figé, l’IHM se configure à partir de métadonnées. Elle permet de visualiser, d’éditer et de valider les données avec des niveaux de permission extrêmement fins : par table, par ligne, par colonne, avec ou sans workflow d’approbation. L’administrateur de l’interface peut également configurer des processus : définir comment les données s’associent en fonction du schéma, concevoir des formulaires qui reflètent ces processus et ajuster dynamiquement leur comportement. Il est ainsi possible de filtrer des champs selon l’utilisateur connecté, d’appliquer des règles de validation métier ou d’autocompléter automatiquement des valeurs. Ces capacités de méta‑programmation transforment l’IHM en un orchestrateur de flux métier adaptable à tous les contextes.
  • Une API d’ordonnancement : pour alimenter le référentiel depuis des sources externes et en extraire des flux, j’ai développé une couche qui gère des interfaces producteurs‑consommateurs. Chaque interface est décomposée en étapes (initialisation, récupération, transformation, validation, écriture), bénéficie d’un système de log standardisé et est orchestrée par un ordonnanceur. Ainsi, des scripts d’importation récupèrent les données RH, les enrichissent via les annuaires internes, dérivent des statuts actifs et synchronisent les annuaires et services en aval. La même mécanique pourra être réutilisée pour la comptabilité, la gestion d’équipements, les données scientifiques, etc.

Un chef d’orchestre pour le système d’information

Grâce à cette architecture générique, le référentiel est destiné à devenir le conducteur principal du système d’information. Il ne se contente pas de centraliser les données : il offre une API unifiée grâce à un langage de requête spécialisé (drf‑query‑lang) que j’ai conçu pour formuler des requêtes complexes tout en restant intuitif. Il encadre des workflows, gère des droits granulaires et alimente des systèmes en aval (annuaire, messagerie, applications métier). En un mot, il fournit une source de vérité unique, adaptable à n’importe quel domaine et prête pour la production.

Le premier flux en production fut celui des données RH vers l’annuaire informatique : importation des personnes depuis le système RH, enrichissement des informations via les annuaires internes, calcul automatique des statuts et synchronisation avec les services d’annuaire et de messagerie. Aujourd’hui, ce flux est stable grâce aux garde‑fous mis en place (validation des données, arrêt automatique en cas d’incohérence) et à une communication claire. Ce n’est qu’un début : les prochains mois verront l’intégration de données comptables, scientifiques, logistiques et bien d’autres.

Modernisation et outillage

Si le référentiel a été le fil rouge de mon année, j’ai aussi mené d’autres projets structurants :

  • Refonte d’une application legacy : j’ai modernisé une application existante en la réécrivant entièrement sur une pile moderne (API REST et frontend Vue 3). L’objectif n’était pas de critiquer l’existant, mais de repartir sur une base saine en préservant l’esprit de l’outil tout en le faisant évoluer vers une architecture modulaire et sécurisée. Le chantier a introduit une nouvelle couche de persistance, une meilleure gestion de l’authentification, rendant l’application plus maintenable et extensible.
  • Boilerplate partagé : pour gagner du temps et harmoniser les pratiques, j’ai conçu une base de projet Django/Vue 3 qui sert de socle commun à l’équipe. Ce modèle intègre d’emblée l’authentification et la gestion des rôles, des composants d’interface réutilisables, une configuration CI/CD pré‑configurée, et une documentation de démarrage. Chaque nouveau développement peut ainsi démarrer sur des bases solides, avec un style cohérent et un déploiement accéléré.
  • Application de monitoring centralisé : j’ai développé une interface permettant de centraliser et de visualiser les logs de nos applications. Cette solution agrège les traces de l’ensemble des services, les indexe et les expose dans un tableau de bord avec des filtres, des recherches et des visualisations en temps réel. Grâce aux alertes configurables, les anomalies sont détectées rapidement et les équipes disposent d’un outil efficace pour diagnostiquer et résoudre les incidents.
  • Librairies open source : pour mutualiser le code et contribuer à l’écosystème, j’ai extrait et publié deux bibliothèques. drf‑sso prend en charge plusieurs protocoles de fédération d’identité (OIDC, OAuth 2.0, SAML, CAS) et simplifie l’intégration d’un mécanisme d’authentification unique (SSO) sur n’importe quelle API Django/DRF : gestion des redirections vers le fournisseur d’identité, échange des tokens, cache des sessions et interfaçage avec divers fournisseurs. drf‑query‑lang fournit un DSL expressif pour filtrer, trier et paginer des ressources d’API : prise en charge des opérateurs logiques complexes, des relations imbriquées et des protections contre les requêtes dangereuses. Ces projets, inspirés de besoins internes, sont publiés sous licence open source et peuvent être réutilisés et étendus dans d’autres contextes.
  • Microservice Nginx OIDC : certains frontaux Nginx servaient des contenus statiques et ne pouvaient pas profiter de l’authentification centralisée. J’ai conçu un microservice complètement stateless qui s’intercale entre Nginx et les services en aval. Il gère l’authentification OpenID Connect, vérifie et rafraîchit les jetons, transmet des en‑têtes d’identité aux applications et peut être mis à l’échelle horizontalement. Ce composant permet de protéger n’importe quel backend (statique ou dynamique) sans modification du code applicatif.
  • Conversion calendrier et annuaire : afin de faciliter l’interopérabilité avec des logiciels de calendrier et d’annuaire utilisant des formats variés, j’ai développé un outil qui convertit et synchronise des informations entre plusieurs systèmes. Il permet de traduire des événements et des contacts entre des formats hétérogènes (iCal, CSV, annuaire interne), de rapprocher des calendriers et de consolider des plannings. Ce projet montre qu’il est possible de répondre à des besoins métiers concrets avec des solutions génériques et modulaires.
  • Pionnier de la mise en œuvre de CI/CD : j’ai introduit dans l’organisation des pipelines d’intégration et de livraison continues (CI/CD) qui automatisent, la compilation et le déploiement des applications. Ces pipelines réduisent les erreurs manuelles et accélèrent la mise en production en assurant une livraison régulière et fiable.
  • Prototypes d’add‑ins Outlook : j’ai également réalisé plusieurs prototypes d’add‑ins pour Outlook afin d’intégrer certaines fonctionnalités du référentiel directement dans le client de messagerie. Ces prototypes n’ont pas été déployés en production pour des raisons propres à l’organisation, mais ils témoignent de ma capacité à explorer des solutions innovantes et à sortir du cadre traditionnel du développement backend.

Grandir vite et bien

Ce rythme soutenu a été possible grâce à plusieurs facteurs. D’abord, j’ai évolué au sein d’une équipe qui m’a fait confiance. Bien que je sois officiellement apprenti, j’ai rapidement été consulté pour des décisions techniques transversales. Ensuite, j’ai toujours privilégié la qualité et la robustesse : valider les entrées, journaliser les opérations, automatiser ce qui peut l’être, arrêter proprement en cas d’erreur pour éviter de corrompre des données. Enfin, j’ai veillé à communiquer clairement, même lorsque cela impliquait d’écrire un email d’alerte un samedi. Cette transparence est essentielle pour travailler en équipe et fiabiliser un système.

À titre personnel, cette première année a été incroyablement formatrice. Au‑delà du code, j’ai appris à concevoir des architectures évolutives, à orchestrer des flux de données critiques et à prendre du recul pour proposer des solutions génériques. Cette progression a été reconnue lors de mon évaluation annuelle.

Perspectives

L’aventure ne fait que commencer. Le référentiel que j’ai bâti n’est pas simplement un projet terminé : c’est un socle évolutif qui a vocation à absorber et à orchestrer l’ensemble des données de l’organisation. Les prochains mois seront consacrés à intégrer de nouveaux domaines (finance, gestion des équipements, données scientifiques), à enrichir les workflows et à optimiser l’expérience des utilisateurs finaux. Je continuerai également à développer et à partager des outils open source afin que les solutions créées profitent à d’autres.

En résumé, cette première année d’alternance m’a permis de transformer des défis complexes en réalisations concrètes. J’ai construit un référentiel universel capable de devenir le chef d’orchestre du système d’information et j’ai livré plusieurs projets structurants tout en contribuant à la communauté. Je suis impatient de poursuivre cette dynamique et de voir ces outils grandir et s’épanouir au service des utilisateurs.

Partager :