```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.
```