```dokuwiki id="sprint12-maintenance-observability" ====== Sprint 12 — Maintenance, Exploitation & Observabilité ====== ===== Objectif du Sprint ===== Industrialiser l'exploitation de la plateforme afin de garantir : * Disponibilité * Performance * Traçabilité * Sécurité * Maintenabilité * Scalabilité À l'issue du Sprint 12 : * Tous les services sont supervisés * Les logs sont centralisés * Les métriques sont collectées * Les alertes sont automatisées * Les sauvegardes sont vérifiées * Les incidents sont détectés rapidement * Les équipes disposent d'une visibilité complète sur la plateforme Ce sprint clôture la phase d'industrialisation SaaS. ---- ====== Périmètre ====== ===== Modules concernés ===== MonitoringModule LoggingModule MetricsModule AlertingModule BackupModule HealthCheckModule TracingModule ---- ====== Architecture cible ====== Frontend ↓ API Gateway ↓ NestJS API ↓ PostgreSQL Redis MinIO ↓ Observability Stack ├── Prometheus ├── Grafana ├── Loki ├── Tempo └── AlertManager ---- ====== User Stories ====== ===== US-1201 : Vérifier la santé de la plateforme ===== **En tant qu'exploitant** Je souhaite connaître l'état des services Afin de détecter les incidents. ---- ===== Endpoint ===== GET /health ---- ===== Réponse ===== { "status": "UP", "services": { "database": "UP", "redis": "UP", "storage": "UP" } } ---- ====== US-1202 : Consulter les métriques système ===== ===== Endpoint ===== GET /metrics ---- ===== Métriques ===== CPU RAM Disque Réseau ---- ====== US-1203 : Consulter les métriques applicatives ===== ===== Indicateurs ===== Temps réponse API Nombre requêtes Nombre erreurs Nombre connexions Sessions actives ---- ====== US-1204 : Consulter les métriques métier ===== ===== KPI ===== Réservations Paiements Contrats Clients Propriétaires ---- ====== Journalisation ====== ===== US-1205 : Centraliser les logs ===== ===== Format ===== { "timestamp": "", "level": "", "service": "", "traceId": "", "message": "" } ---- ===== Niveaux ===== DEBUG INFO WARN ERROR FATAL ---- ====== US-1206 : Rechercher dans les logs ===== ===== Filtres ===== Service Utilisateur Date TraceId Niveau ---- ====== Traces distribuées ====== ===== US-1207 : Tracer une requête ===== ===== Objectif ===== Suivre une requête de bout en bout. ---- ===== Exemple ===== Frontend ↓ API ↓ PostgreSQL ↓ Stripe ↓ SMTP ---- ===== Technologie ===== OpenTelemetry ---- ====== Alertes ====== ===== US-1208 : Déclencher une alerte ===== ===== Conditions ===== Erreur API CPU élevé RAM élevée Base indisponible Temps réponse élevé ---- ===== Notification ===== Email Slack Microsoft Teams Webhook ---- ====== US-1209 : Gérer les règles d'alerte ===== ===== Exemple ===== CPU > 80 % pendant 5 minutes ---- ====== Sauvegardes ====== ===== US-1210 : Sauvegarde PostgreSQL ===== ===== Fréquence ===== Quotidienne Hebdomadaire Mensuelle ---- ===== Conservation ===== 30 jours 90 jours 1 an ---- ====== US-1211 : Sauvegarde stockage documentaire ===== ===== Sources ===== MinIO S3 ---- ====== US-1212 : Restaurer une sauvegarde ===== ===== Objectif ===== Garantir le PRA. ---- ===== Contrôle ===== Tests mensuels de restauration ---- ====== Disponibilité ====== ===== US-1213 : Vérification SLA ===== ===== Objectif ===== Mesurer la disponibilité. ---- ===== KPI ===== 99.9 % ---- ===== Calcul ===== :contentReference[oaicite:0]{index=0} ---- ====== US-1214 : Tableau de bord exploitation ===== ===== Widgets ===== Disponibilité CPU RAM Erreurs Temps réponse Base données ---- ====== Sécurité opérationnelle ====== ===== US-1215 : Détecter les anomalies ===== ===== Cas ===== Tentatives de connexion Erreurs répétées Pics d'activité Échecs paiement ---- ====== US-1216 : Journal sécurité ===== ===== Informations ===== Connexion Déconnexion Changement mot de passe Permissions Administration ---- ====== Modèle Prisma ====== ===== SystemMetric ===== model SystemMetric { id String @id @default(uuid()) metricName String metricValue Decimal collectedAt DateTime } ---- ===== Alert ===== model Alert { id String @id @default(uuid()) severity String title String description String triggeredAt DateTime resolvedAt DateTime? } ---- ===== BackupExecution ===== model BackupExecution { id String @id @default(uuid()) backupType String status String startedAt DateTime completedAt DateTime? } ---- ====== Architecture Backend ====== src/modules/operations ├── monitoring │ ├── logging │ ├── metrics │ ├── tracing │ ├── alerting │ ├── backups │ └── health ---- ====== Stack Technique ====== ===== Monitoring ===== Prometheus Grafana ---- ===== Logs ===== Loki Grafana ---- ===== Traces ===== Tempo OpenTelemetry ---- ===== Alertes ===== AlertManager ---- ====== Dashboards Grafana ====== ===== Dashboard Infrastructure ===== CPU RAM Stockage Réseau Pods Kubernetes ---- ===== Dashboard API ===== Temps réponse Nombre requêtes Erreurs Endpoints les plus utilisés ---- ===== Dashboard Métier ===== Réservations Paiements Contrats CA Occupation ---- ====== Swagger ====== ===== Tags ===== Monitoring Metrics Health Alerting Backups ---- ===== Volume API ===== Environ : 15 endpoints ---- ====== Frontend ====== ===== Pages ===== /admin/monitoring /admin/metrics /admin/logs /admin/alerts /admin/backups /admin/health ---- ===== Composants ===== HealthStatusCard MetricChart AlertTable BackupHistory LogExplorer SystemDashboard ---- ====== Tests ====== ===== Unitaires ===== HealthService MetricsService AlertService BackupService ---- ===== Intégration ===== API ↓ Métriques ↓ Prometheus ↓ Grafana ---- ===== E2E ===== Incident simulé ↓ Alerte ↓ Notification ↓ Résolution ↓ Historisation ---- ====== Définition de terminé ====== Le Sprint 12 est terminé lorsque : * Monitoring opérationnel * Logs centralisés * Métriques collectées * Alertes configurées * Sauvegardes automatisées * Traces distribuées opérationnelles * Dashboards Grafana disponibles * Swagger à jour * Tests verts * CI verte ---- ====== Livrables ====== * MonitoringModule * LoggingModule * MetricsModule * TracingModule * AlertingModule * BackupModule * HealthCheckModule * Dashboards Grafana * AlertManager * DTO * Tests ---- ====== Bilan Release 2.2 ====== À l'issue du Sprint 12 : * Plateforme SaaS exploitable en production * Observabilité complète * Supervision temps réel * PRA/PCA opérationnels * Monitoring métier et technique * Alerting automatisé La plateforme atteint un niveau de maturité compatible avec une exploitation multi-agences à grande échelle. ---- ====== Sprint suivant ====== ===== Sprint 13 — Optimisation, IA & Automatisation ===== Objectif : Augmenter la productivité des équipes grâce à l'automatisation et à l'intelligence artificielle. Modules concernés : AutomationModule RecommendationModule AiAssistantModule ForecastingModule DocumentAnalysisModule Fonctionnalités : * Suggestions automatiques * Prévisions avancées * Assistant IA interne * Analyse documentaire * Aide à la décision * Automatisation métier À l'issue du Sprint 13, la plateforme commencera à intégrer des fonctionnalités d'assistance intelligente à forte valeur ajoutée. ```