Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Nua, un PaaS open source en Python pour l'auto-hébergement de vos applications

Nua, un PaaS open source en Python pour l'auto-hébergement de vos applications

Résumé

Nua est un projet de plateforme cloud open source lancé par Abilian en 2021. Il propose un PaaS (platform as a service) qui peut s'installer facilement sur des serveurs bare metal ou virtualisés, et qui permet de faire tourner des applications web conteneurisées, en gérant leur cycle de vie, les ressources dont elles ont besoin (stockage, bases de données, etc.), les droits d'accès des utilisateurs, les backups, le monitoring, les logs...

Nua permet de gérer des applications issues d'un portefeuille applicatif ("marketplace"), i.e. packagées et optimisées par les développeurs de la plateforme (ou des tiers). Nua permet aussi de déployer des applications en cours de développement (démo / qualif / prod), y compris plusieurs instances d'une même application, et y compris en déploiement automatique (exemple de use case: créer des instances de démo à la demande de prospects, en optimisant la consommation de ressources).

Nua est basé sur les principaux standards du monde open source et du cloud: base de données (Postgres, MySQL, Mongodb, Redis), stockage (S3), OCI, dockerfiles et buildpacks, LDAP et SSO, etc. Nua s'appuie actuellement sur Docker, mais permettra à terme de déployer des applications dans d'autres environnements d'exécution (autres conteneurs, VMs classiques ou légères, SlapOS...).

Documentation et code source:

https://nua.rocks
https://github.com/abilian/nua

Plan de la présentation

Vision et caractéristiques principales du projet
Simplification du packaging et du déploiement multi-instances,
Auto-hébergement, souveraineté numérique
Architecture générale

Pourquoi python ?
Un runtime python dans le container
Un orchestrateur pilotant les containers
Réutilisation de composants entre le packaging, l'exécution de scripts et l'orchestration

Exemples et démo
Fichier de configuration (vue du packageur)
Déploiement de configurations (vue CLI de l'utilisateur)

Roadmap et comment contribuer

Take-aways

Pour les développeurs / devops : comment Nua peut aider à déployer rapidement des versions de dev en phase de dev / préprod / prod, et à gérer les contraintes de la production (backup, upgrades) ?
Pour les responsables informatiques: comment Nua permet de déployer et de gérer facilement un portefeuille d'application Web open source (intranet / extranet / Web) ?
Pour les développeurs d'applications tierces: comment porter ses applications sous Nua?
Pour les contributeurs open source: quelle est la roadmap de Nua et comment y contribuer ?

Stefane Fermigier

February 19, 2023
Tweet

More Decks by Stefane Fermigier

Other Decks in Programming

Transcript

  1. By
    “DevOps in a box™


    for your Web apps”

    View Slide

  2. Résumé
    Besoin et contexte


    La proposition Nua


    Le projet


    Le fichier nua-config.toml


    Exemple d’une application

    View Slide

  3. Besoin et contexte
    Un besoin:


    • Déployer rapidement plusieurs instances d’applications sur des environnements bare metal ou
    virtualisés


    • Déployer des applications développées en interne et des applications tierces


    • Pour des besoin internes


    • Pour mettre à disposition des clients de Abilian des applications en mode SaaS


    • En simplifiant les étapes du déploiement (base de données / stockage / Nginx / HTTPS, ...)

    View Slide

  4. Besoin et contexte
    L’état de l’art technique


    • PaaS, SaaS


    • Conteneurs


    • Cloud, GAFAM


    Le contexte européen


    • Demande croissante de solutions « souveraines »


    • L’auto-hébergement d’applications web reste complexe (compétences, fiabilité, sécurité)

    View Slide

  5. La proposition Nua
    Le projet Nua vise à contruire un "Self-hosted PaaS"




    • Ou « plateforme en tant que service auto-hébergée »


    • C’est un oxymore technique


    • Mais une réponse disruptive aux besoins du marché

    View Slide

  6. Our Solution
    “Nua streamlines the development,
    selection, installation and resilient
    operations of Web applications in a self-
    sovereign cloud environment”

    View Slide

  7. Le projet
    100 % python


    • Poetry, pytest, type hints, black, flake8, ruff, ...


    • Des commandes d’administration système


    • Des algorithmes d’affectation de ressources


    Des choix structurants


    • Privilégier, autant que possible :


    ● la configuration déclarative plutôt qu'impérative


    ● les conventions plutôt que la configuration explicite, en évitant les duplications d'information


    • S’appuyer sur des technologies éprouvées (containers OCI/Docker dans un premier temps)


    • S’inspirer des « best practices » comme les "12 factor apps", SBOM, …


    • Prévoir des extensions par le biais de plugins

    View Slide

  8. Le projet
    2 étapes fondamentales


    • Le « build »


    • Le « run »


    Avec quelques contraintes


    • Simplicité (ergonomie)


    • Reproductible, sûr, fiable


    • Evolutif (plugins)


    • Résilience, sécurité, maintenabilité


    View Slide

  9. Le projet
    « nua-build »


    • La commande bas niveau qui pilote la création du package déployable


    • Aujourd’hui : une image Docker pour Linux/amd64


    La séquence de build


    • Analyse du fichier « nua-config »


    • Détection des images de base requises


    • « build » ou « pull » des images requises


    • Récupération des fichiers (sources, Dockerfile, fichiers de configuration)


    • « build » proprement dit de l’image Docker


    • Stockage du résultat (localement comme image Docker)

    View Slide

  10. Le projet
    « nua-orchestrator »


    • La commande bas niveau pour déployer une(des) application(s)


    • L’orchestrateur doit être installé sur le serveur hôte


    La séquence de déploiement


    • Analyse des applications demandées


    • « pull » des images Nua correspondantes


    • Récupération des métadata depuis les images Nua


    • « pull » des dépendances éventuelles


    • Configuration des ports, volumes, etc.


    • Déploiement proprement dit (arrêt / installation / démarrage)

    View Slide

  11. Le fichier nua-config.toml
    Un fichier unique


    • Les metadonnées


    • Configuration du « build »


    ● Récupération des sources et dépendances


    • Configuration du « run »


    ● Déclaration des ressources requises


    Utilisé par l’environnement de build et l’orchestrateur


    • Lors du « build » le fichier de configuration est copié dans le conteneur de l’application


    • L’orchestrateur (le « run ») récupère les informations directement depuis le conteneur de l’application


    View Slide

  12. Exemple d’application : Hedgedoc
    HedgeDoc


    • Une application d'édition collaborative de documents au format Markdown


    • Une application NodeJs qui utilise les outils classiques pour cet écosystème: package.json et npm.


    • https://hedgedoc.org/

    View Slide

  13. La section des métadonnées

    View Slide

  14. La section de « build »

    View Slide

  15. Le « build »
    Aperçu du build (1/2)


    • Début : recherche des composants Nua de base

    View Slide

  16. Le « build »
    Aperçu du build (2/2)


    • Création de l’image Docker


    • En mode « verbose », tout le log du build Docker serait affiché.

    View Slide

  17. Les sections « run »

    View Slide

  18. Les sections « run »
    Affectation automatique des ports


    • Seule l’information du port utilisé par l’application est nécessaire


    • L’orchestrateur affectera des ports pour les redirections


    • Supporte le multi-instances

    View Slide

  19. Les sections « run »
    Déclaration d’un « healthcheck »

    View Slide

  20. Les sections « run »
    Déclaration de ressources de stockage


    • L’orchestrateur créera des espaces uniques à chaque instance

    View Slide

  21. Les sections « run »
    Déclaration de ressources applicatives


    • L’orchestrateur créera les instances de bases de données

    View Slide

  22. L’orchestrateur
    Déclaration minimum pour instancier une application


    • Le nom de l’application (app-id)


    • Le domaine cible

    View Slide

  23. L’orchestrateur : déploiement de 2 instances

    View Slide

  24. View Slide

  25. Project By
    → https://github.com/abilian/nua


    → https://nua.rocks/


    View Slide