Catégories
Open innovation10 juil. 2023
Faire le choix de développer tous ses outils en Open Source n'est pas anodin : il implique de convaincre et fédérer une communauté à la fois d'utilisateurs, mais aussi de contributeurs externes. Par conséquent, cette décision impacte directement le recrutement des collaborateurs techniques de FUN : elle implique de se retrouver autour des valeurs des makers et d'une volonté forte de co-construire des communs numériques. Le contexte actuel du recrutement dans la tech étant très déséquilibré entre l'offre et la demande, en tant que service public, pour rester attractif, FUN se doit d'utiliser des technologies modernes et durables en respectant l'état de l'art en matière de bonnes pratiques de développement (voir l'encart dédié).
Consciente de ces besoins, en 2017, l'équipe technique de FUN opère un changement profond dans ses méthodes et outils de travail afin de structurer ses évolutions et recrutements futurs. La décision est prise d'embrasser le mouvement DevOps et de tout automatiser. Le code devient loi depuis la machine du développeur jusqu'en production ! En 2018, alors que FUN entame sa migration vers une infrastructure complète qui tourne sur Kubernetes, chaque projet FUN adopte des méthodes inspirées du cloud-native development : sur sa machine le développeur a un environnement de travail proche de la production qui tourne dans des conteneurs Docker orchestrés localement. Lorsque du code est poussé sur une forge publique, ce code est automatiquement évalué et validé par une suite de tests automatisés dans ses processus d'intégration continue. Même la publication d'une nouvelle version des paquets des projets FUN [https://pypi.org, https://www.npmjs.com] et de leur image Docker associée est automatisée grâce à notre forge par l'ajout d'un label au dépôt Git correspondant. Le déploiement de ces nouvelles releases est également automatisé grâce à Ansible et Terraform.
La mise en place de cette démarche qualité a permis à FUN d'avoir le meilleur taux de disponibilité de son histoire (99.9% depuis sa migration en 2019, la quasi-totalité de ces interruptions étant planifiées et effectuées de nuit). Ironie de l'histoire, cette migration sur une infrastructure qui passe à l'échelle est arrivée au bon moment, puisqu'elle a permis à FUN d'absorber une forte augmentation de son trafic (x5) sans interruption de service pendant le confinement de 2020.
À partir de 2020, le GIP s'est vu confier des missions qui l'ont amené à faire appel à des prestataires extérieurs pour l'aider au développement rapide de nouveaux produits et services. Dans ce genre de situation, le défi de toute organisation est de garder le contrôle du code produit alors que les ressources humaines viennent à manquer en interne. Pour résoudre ce problème, FUN a restreint les langages et frameworks qu'elle utilise afin de garantir que le GIP garde les compétences en interne et que ses développeurs peuvent intervenir sur tous les projets. De plus, les développeurs en CDI chez FUN ont alors évolué pour assurer l'encadrement des équipes de prestataires externes, et ainsi s'assurer de la qualité de toutes les contributions ajoutées aux projets.
Alors que FUN était historiquement perçu comme l'opérateur national d'une instance d'OpenEdx, depuis 3 ans, le GIP bénéficie maintenant d'une visibilité accrue tant au niveau national [https://www.esup-portail.org/, https://www.numerique.gouv.fr/dinum/] qu'international [https://catalogue.edulib.org/fr/, https://www.nau.edu.pt/en/, https://axim.org/, https://www.surf.nl/] comme organisation capable de fournir des services (et du code) de qualité qui passent à l'échelle dans le cloud ou le SI des établissements.
La stack technique de FUN
Tous les développements côté backend sont basés sur le langage Python avec les frameworks Django ou FastAPI. Les interfaces utilisateur (front-end) sont développées en TypeScript avec le framework ReactJS. Tous les projets tournent dans des containers sur notre cluster Kubernetes.
Cunningham, le Design System de FUN inspiré de DSFR, le Design System de l'état
FUN développe son Design System pour homogénéiser les interfaces utilisateurs de ses différents projets. Le code source et la documentation de Cunningham sont disponibles sur GitHub : https://github.com/openfun/cunningham/
Le guide des bonnes pratiques de développement par FUN
Afin d'homogénéiser et de diffuser ses pratiques de développement et communication, le GIP publie un manuel en ligne constamment mis à jour. Ce manuel permet de faciliter l'accueil de nouveaux arrivants dans les équipes de FUN ou de contributeurs extérieurs. Vous pouvez retrouver ce manuel sur https://handbook.openfun.fr
Catégories
Open innovationCatégories
Open innovationCatégories
Open innovation