Environnements de développement à distance

Solutions existantes ? Présentation d'Onyxia

Mickaël BARON - Version 06-2023

Licence d'utilisation

Creative Commons

Contrat Paternité

Partage des Conditions Initiales à l'Identique

2.0 France

creativecommons.org/licenses/by-sa/4.0

Qui suis-je ?

Ingénieur de Recherche ☀️

  • Recherche dans l'équipe Ingénierie des Données et des moDèles (IDD)
  • Valorisation des plateformes logicielles
  • « Coach technique » auprès des usagés

Ancien Responsable 🌑 (2011-2021)

  • Rubriques : Java, Java Web, Android, Eclipse, Spring et Netbeans
  • Rédacteurs de tutoriels
  • Chiffres
    • 4 M de visiteurs
    • 12 M pages vues/mois
    • 7500 membres
    • 2000 forums

Objectif de la présentation (20 min)

  • Contexte et problématiques
  • Solutions existantes
  • Onyxia
    • Démonstration
    • Fonctionnement
  • Déploiement au LIAS ?
  • Futures contributions

Contexte

Environnement de développement pour la recherche et la formation

Exigences attendues ?

  • Compilateur (Javac)
  • Éditeur (VSCode)
  • Utilitaire (cURL)
  • Données (fichiers, DB)
  • Code source (Git)
  • Matériel (GPU)
  • Isolation (Conteneur)
  • Personnalisation UI

Problématiques

Limites du poste de travail ?

  • Différentes versions des compilateurs
    • LTS ou dernière version
  • Nombreux éditeurs de code
    • VSCode, Jupyter, PyCharm, Theia
  • Différents métiers
    • Dev. Web, Dev. Backend, Data Scientist
  • Accès à du matériel spécifique
    • ARM, GPU, capteurs/actionneurs

Problématiques : formation

  • Besoin de remonter les besoins logiciels à la DSI
  • Pas d'isolation
    • Conflit avec les variables d'environnement
    • Conflit avec les bibliothèques
  • Reproduction difficile de son environnement de développement
  • Perte du contexte d'édition et d'exécution

Problématiques : recherche

  • Utilisation de machines virtuelles (PaaS)
    • Maintenir un OS
    • Surdimensionné par rapport au besoin
  • Partager des ressources matérielles
    • GPU, capteurs/actionneurs
  • Accès distants (OpenVPN)
    • Manipuler SSH
    • Conserver l'exécution NoHup/Screen

Environnements de développement à distance

🇬🇧 Remote Development Workspaces (RDW)

Recette pour un bon RDW ?

  • Environnement de développement Web
  • Image Docker pour la chaîne de compilation
  • Générateur (Spawner) de conteneur
  • Orchestrateur (Moteur de conteneur)

Solutions du marché 😱

Critères de choix ?

  • Distribution : où sera déployé la solution ?
    • SAAS ou en local (auto-hébergé)
  • Coût 💰: fonctionnement/investissement ?
    • Gratuit, Payant ou coût de l'infra.
  • Extensible : ajouter des fonctionnalités ?
    • Langages, outils, etc.
  • EDI : interaction avec le code ?
    • Web (VSCode), bureau (Eclipse), console (Vi)
  • Autres critères : difficilement mesurables
    • Communauté, doc., facilité installation

Critères de choix

Solution Distribution Coût Extensible EDI
Cloud9 SAAS Amazon 💰 Oui Cloud9 IDE©
Coder Local Votre Cloud Oui Web et Bureau
CodeSpaces SAAS Github 💰 Oui Web
Gitlab SAAS et Local Gitlab 💰 Oui WebIDE©
Colab SAAS Google 💰 Non Jupyter Notebook©
JupyterHub Local Votre cloud Non Jupyter Notebook©
Onyxia SAAS et Local Votre cloud Oui Web
Che Local Votre cloud Oui Web

Onyxia : origine

Onyxia : principe

Onyxia : démonstration

Instance LIAS : onyxia.lias-lab.fr

Scénario de la démonstration

  • Description du Dashboard
  • Affichage des services Onyxia
  • Création d'un service
  • Accès au terminal Linux d'un service Onyxia
  • Manipulation des fichiers via MinIO
  • Sous le capot avec k9s

Onyxia : fonctionnement

Onyxia : les instances référencées ?

  • SSP Cloud : Cloud de l'INSEE (liste blanche EMAIL)
  • Nubonyxia : Cloud Interministériel de la DGFip
  • DATAFID : Cloud porté par Expertise France
  • Onyxia LIAS : Cloud laboratoire (en construction)
  • Laboratoires de recherche, universités, entreprises ?

Onyxia : services disponibles

Science de la données

  • Python, R, PyTorch, TenserFlow, Spark, etc.

Bases de données

  • Postgres, Jena TDB, Neo4j, MariaDB, etc.

Automatisation, visualisation, etc.

Développement logiciel (contrib. LIAS)

  • Java, C++, Ada, Go, Javascript, etc.

Services utilisables en dehors de Onyxia

Déploiement ?

  • Infrastructure
    • Des serveurs (CPU, mémoire, disque, GPU)
    • Par 👤 ~ 2 vCPU, 8 Go mémoire, 50 Go disque
  • Compétences
    • Kubernetes, Image Docker, authentification
  • Utilisateurs
    • Formation, tests de montée en charge
    • Intégration dans le SI (LDAP, Cloud ENSMA)

Conclusion

  • Onyxia
    • Services et outils
    • Dashboard
  • Services disponibles en local ou sur une VM
  • Mise en place progressive de Onyxia
  • Contributions au projet Onyxia
    • Nouveaux services (Ada, C++, Rust, Java, etc)
    • Rédaction d'articles
    • Présentation à différents services de l'ENSMA/UP

Remerciements

L'équipe INSEE : Frédéric Comte et Olivier Levitt pour l'assistance à la mise en place de l'instance Onyxia