Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
39 tasks
vicpsl opened this issue Jun 5, 2024 · 0 comments
Open
39 tasks

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

vicpsl opened this issue Jun 5, 2024 · 0 comments

Comments

@vicpsl
Copy link
Contributor

vicpsl commented Jun 5, 2024

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é
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant