Table des matières
```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. ```