Skip to content

Standardiser les configurations et le déploiement des applications #130

@vicpsl

Description

@vicpsl

Standardiser les configurations et le déploiement des applications dans la perspective d'une simplification de la maintenance et de l'automatisation de leur déploiement à l'avenir.

L'objectif est à la fois d'assurer des déploiements fluides, sans conflits, et de disposer d'une documentation robuste en s'appuyant sur les standards et bonnes pratiques actuels.

Cette issue comporte deux aspects détaillés ci-dessous.

Restructuration et consolidation de la configuration des projets

  • Proposer des méthodes et outils pour standardiser et consolider la configuration des projets :
    Le périmètre de ce point spécifique concerne les applications Adele, Dicotopo, Ecco, Encpos, Miroir.

    • Auditer les fichiers de config et les dépendances des projets et s'assurer que les projets sont associés à :
      • une version de Python déterminée et documentée (éviter les conflits de version de langage, ex: outils de gestion des versions de langage pour Python ?)
      • des dépendances d'API (requirements.txt) strictement paramétrées (éviter les dépendances inutiles et utiliser des versions identifiées : choix de l'outil de création du requirement.txt Pipreqs vs. Pip freeze, autre ?)
        NB. Mettre à jour si nécessaire (sécurité, conformité)
      • une version Node déterminée et documentée (éviter les conflits de version de langage, ex: outils de gestion des versions de langage type nvm)
      • des dépendances de front-end (package.json) strictement paramétrées (éviter les dépendances inutiles et utiliser des versions identifiées)
        NB. Mettre à jour si nécessaire (sécurité, conformité)
      • une configuration robuste et documentée pour l'ensemble des fichiers de config (config.js, package.json, config.py, etc.)
    • Variables d'environnement des projets (.env)
      • APIs : versionner les XXX.env pour les déploiements respectifs :
        • Test le cas échéant
        • Local
        • Serveur preprod
        • Serveur prod
      • Front-ends : versionner les .env.XXX pour les déploiements et permettre leur utilisation (ex: yarn scripts : serve, build:staging, build:prod)
        • Test le cas échéant
        • Local (.env.development)
        • Serveur preprod (.env.staging)
        • Serveur prod (.env.production)
    • Mettre à jour les outils CLI (commandes uniformes autant que possible, notamment pour l'indexation)
    • S'assurer de la cohérence de ces configurations avec celles des serveurs (Supervisor, Nginx)
    • Proposer des méthodes et outils pour les processus de déploiement :
      • Mise à jour des README (Badge de versions, liens entre projets Github)
      • Proposition de templates repository Github réutilisables pour la création d'APIs et de Front similaires : Flask (+ES), Vue.js
      • Tests (semi-) automatisés de la conformité (Github Actions ?, autres)
      • Outils de déploiements (semi-) automatisés (makefile ?, autres)

Maintenance évolutive de l'infrastructure (DevOps)

  • Mise en conformité et maintenance de l'infrastructure numérique :
    • Mise à jour des OS des serveurs Huma-Num (4 VMs: master, TAL, dev et prod)
      • Migration OS vers la dernière version LTS
      • Spécification des procédures d'installations et de mise à jour des librairies utiles (Node, interpreteurs Python, etc.) afin de faciliter la gestion des versions de langages Python, Node
    • Standardiser les installations et fichiers de configuration des serveurs :
      • Simplification et uniformisation du déploiement entre les serveurs, notamment preprod / prod
      • Standardisation des configurations serveurs (Supervisor et Nginx actuellement)
      • Ajustement de la gestion des droits sur les déploiements (chmod, chown)
    • Ajustements des bonnes pratiques concernant :
      • Back up des systèmes, config et data (bases de données)
      • Monitoring (statut des services, flux http, mémoire utilisée, etc.)
      • Jobs automatisés (purge logs, fichiers temporaires, etc.)
      • Audits (logs et/ou UI)
      • Sécurité

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions