Files
gesthub/docs/06_partie3_devops.md
2026-08-21 09:12:02 +02:00

3.1 KiB

Partie 3 — DevOps (infrastructure, déploiement, exploitation)

Infrastructure as Code

docker-compose.yml décrit l'état désiré de l'infrastructure complète : 7 services (caddy, flask, mariadb, keycloak, keycloak-db, mattermost, mattermost-db), 1 réseau interne (gesthub-net), 7 volumes persistants. Seul caddy publie des ports (80/443) — tous les autres services communiquent uniquement via le réseau Docker interne (vérifié par le test automatisé TS-06, qui parse le fichier et échoue si un autre service déclare une clé ports).

Procédure de déploiement

git clone <repo>
cd gesthub
cp web/.env.example web/.env   # renseigner les secrets réels
docker compose up -d --build
docker compose logs -f flask   # vérifier le démarrage

Avant / après (réingénierie de processus, Bloc 2 — C2) :

Avant (mai 2025) Après
Déploiement Copie manuelle SSH, redémarrage serveur docker compose up -d
Durée 30 à 60 min < 5 min
Reproductibilité Dépend de la mémoire de l'opérateur Totale (fichier versionné)

Procédure de mise en exploitation (checklist TD)

ID Vérification Méthode
TD-01 Tous les conteneurs sont Up docker compose ps
TD-02 Healthcheck MariaDB au vert docker compose ps (colonne STATUS)
TD-03 HTTPS répond (redirection HTTP→HTTPS) curl -I https://dashboard.ninolbt.com
TD-04 SSO Keycloak fonctionnel Connexion manuelle de bout en bout
TD-05 Persistance des données après redémarrage docker compose restart mariadb puis vérification des annonces existantes
TD-06 Sauvegarde exécutable scripts/backup.sh en mode manuel, vérification de l'archive produite

[⇒] Projection méthodologique — procédure ITIL complète. Cette checklist couvre les principes ITIL de base (prérequis vérifiés, environnement de test avant production, liste de contrôle, rollback possible via docker compose down + restauration du dernier backup) mais n'a pas fait l'objet d'une signature formelle d'un « bon à intégrer » ni d'un PV de recette signé par un tiers, faute de contexte client réel sur ce projet personnel. En entreprise, ces deux documents formaliseraient l'accord du responsable d'exploitation et du Product Owner avant bascule en production.

Scripts d'exploitation

  • scripts/backup.sh : dump MariaDB (mysqldump + gzip) et archive des fichiers uploadés, purge des sauvegardes de plus de 30 jours, prévu pour être planifié via cron.
  • web/init.sql : création automatique du schéma au premier démarrage du conteneur MariaDB (monté sur /docker-entrypoint-initdb.d/).

Réutilisation plutôt que réimplémentation (Bloc 2 — C6)

Bibliothèques et outils intégrés tels quels plutôt que réécrits : Authlib (protocole OIDC), PyMySQL (connecteur MariaDB), python-magic (détection MIME), Mattermost (chat + Kanban complet, avec SSO partagé) — décision explicite de ne pas réinventer un outil de chat/Kanban alors qu'une solution mature et intégrable existe.