Slide 1

Slide 1 text

By “DevOps in a box™ for your Web apps”

Slide 2

Slide 2 text

Résumé Besoin et contexte La proposition Nua Le projet Le fichier nua-config.toml Exemple d’une application

Slide 3

Slide 3 text

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, ...)

Slide 4

Slide 4 text

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é)

Slide 5

Slide 5 text

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é

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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é

Slide 9

Slide 9 text

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)

Slide 10

Slide 10 text

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)

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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/

Slide 13

Slide 13 text

La section des métadonnées

Slide 14

Slide 14 text

La section de « build »

Slide 15

Slide 15 text

Le « build » Aperçu du build (1/2) • Début : recherche des composants Nua de base

Slide 16

Slide 16 text

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é.

Slide 17

Slide 17 text

Les sections « run »

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

Les sections « run » Déclaration de ressources de stockage • L’orchestrateur créera des espaces uniques à chaque instance

Slide 21

Slide 21 text

Les sections « run » Déclaration de ressources applicatives • L’orchestrateur créera les instances de bases de données

Slide 22

Slide 22 text

L’orchestrateur Déclaration minimum pour instancier une application • Le nom de l’application (app-id) • Le domaine cible

Slide 23

Slide 23 text

L’orchestrateur : déploiement de 2 instances

Slide 24

Slide 24 text

No content

Slide 25

Slide 25 text

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