Lot 2 – Déploiement et Reconfiguration

Objectifs du lot

Porteur: Hélène Coullon

  • Modéliser et spécifier plus clairement des langages de type Infrastructure-as-Code (IaC) et des langages de reconfiguration de façon à avoir des garanties sur ces langages ou sur des programmes écrits avec ces langages
  • Contribuer à des langages de (re)configuration plus expressifs
  • Faciliter la conception et l’écriture de scripts de type IaC
  • Concevoir des approches de déploiements immutables dans le cadre des problèmes d’amorçage sur ressources hétérogènes

— Les missions

L’un des points clés d’une infrastructure massivement distribuée et géo-distribuée est l’automatisation des processus de déploiement (mise en service) d’éléments logiciels distribués. En effet, ce processus peut être fait manuellement par des opérateurs sur quelques serveurs et pour quelques composants logiciels, mais cela n’est pas envisageable pour des applications et des infrastructures à l’échelle du continuum entre l’Edge et le Cloud. Outre le déploiement initial d’éléments logiciels, il est également primordial à l’échelle considérée d’avoir des mécanismes permettant le changement dynamique dans la configuration (reconfiguration) actuelle des éléments logiciels déjà déployés (mise à jour, redémarrage sur pannes, etc.).

— Description des tâches

T2.1 Modélisation, formalisation des langages d’approvisionnement et de configuration

Olivier Barais

Nous nous intéressons ici en particulier à une famille de langages qui consiste à « codifier » l’approvisionnement d’infrastructures (de ressources) et leur configuration : « Infrastructure-as-Code » (IaC).

Une première partie de cette tâche consistera en la compréhension des fondements théoriques et pratiques des langages IaC de configuration (CUE, HCL, KCL) qui, issus du monde industriel, présentent des spécifications au mieux informelles.

Les langages d’approvisionnement peuvent être vus comme une spécialisation, ou (en fonction des cas) comme un sur-ensemble des langages de configuration. Ils sont dédiés à la réservation de ressources et au déploiement sur ces ressources (machines virtuelles, conteneurs, Cloud providers etc.). Nous étudierons également ce type de langages, en particulier le langage TOSCA qui présente l’avantage d’être un standard et les langages Terraform et Pulumi.

Une deuxième partie de cette tâche consiste à étudier comment apporter un support de programmation aux utilisateurs de langages IaC.  Tout d’abord, nous étudierons la modélisation de la variabilité présente de manière inhérente dans des descripteurs de déploiement et des descripteurs de type IaC. L’objectif est de développer des outils d’aide au code pour les utilisateurs de langages IaC. Les descripteurs de déploiement et les scripts de type IaC sont massivement configurables, ce qui nécessite des outils de raisonnement sur une configuration ou une famille de configurations.

Par la suite, nous étudierons comment mettre en œuvre des techniques d’apprentissage automatique (lien avec le projet SPIREC) afin d’aider les utilisateurs de langages IaC à améliorer leurs codes de déploiement (analyse statique de type « linters »).

T2.2 Reconfiguration efficace, sûre et concurrente

Gwen Salaün

Suite au déploiement initial, il est nécessaire de pouvoir dynamiquement reconfigurer les éléments logiciels déployés.

Parce qu’elles touchent des services déployés et utilisés, les reconfigurations sont des procédures critiques pour les opérateurs et les utilisateurs et doivent rester dans la mesure du possible transparentes et sûres pour ne pas aboutir à un état inconsistant des éléments logiciels concernés. Pour faciliter la sûreté des reconfigurations, les méthodes dites « immutables » sont parfois préférées, mais cette méthode est coûteuse en ressources. Nous souhaitons à l’inverse dans cette tâche étudier la reconfiguration vérifiée « en place » d’éléments logiciels.

Nous étudions en particulier les aspects suivants, peu traités dans la littérature :

  • décentraliser le contrôle des déploiements et reconfigurations pour être tolérant aux déconnexions réseaux ou aux pannes;
  • vérifier (certifier) les langages de reconfiguration ou d’adaptation;
  • étudier les reconfigurations concurrentes (qui rentrent en conflit) et leur résolution

T2.3 Amorçage sur des ressources hétérogènes et « reconstructibilité »

Olivier Richard

Cette tâche traite d’un cas particulier du problème de déploiement, le problème de l’amorçage, c’est à dire le déploiement initial des piles logicielles nécessaires au fonctionnement des infrastructures et des systèmes (« bootstrap »). En particulier, cette tâche s’intéresse à l’amorçage lorsque les ressources sont hétérogènes et massivement géo-distribuées.

La tâche étudiera plus précisément les approches fonctionnelles et immutables de création d’environnements tels que Nix.

Cette tâche aura un fort lien avec le sous-projet SILECS. Les recherches menées pourront notamment mener aux futurs outils permettant la construction d’expériences tels que Enos, EnosLib et NixOS-Compose.


Les autres lots

Les commentaires sont clos.