- Objectif: transformer le blueprint méthodologique en MVP exécutable, sans over-engineering.
- Rythme proposé: 6 lots séquentiels, chacun livrable et vérifiable.
- Principe: chaque lot ferme une boucle complète « code + observabilité + validation ».
| Lot | Intitulé | Résultat concret | Dépendances |
|---|---|---|---|
| S1 | Network Probe | Mesure fiable des requêtes sortantes | aucune |
| S2 | Metrics Engine | Exposition des métriques p50/p95/p99, erreurs, débit | S1 |
| S3 | API REST Axum | Endpoints santé, métriques et état résilience | S2 |
| S4 | Dashboard WebSocket | Flux temps réel des événements corrélés | S2, S3 |
| S5 | Intégration Ceph | Audit JSONL persistant sur RGW | S1, S3 |
| S6 | Charge & Validation | Rapport de conformité invariants/SLO | S1→S5 |
- En tant qu’ingénieur SRE, je veux mesurer chaque requête sortante pour calculer la latence et diagnostiquer les anomalies.
- En tant qu’exploitant, je veux corréler chaque mesure avec
trace_idetrequest_id.
- Ajouter une couche d’interception HTTP sortante (middleware client).
- Capturer:
started_at,elapsed_ms,status_code,bytes_sent,bytes_received. - Enrichir avec
internal_ip,external_ip(simulation NAT),route,method. - Émettre un événement interne normalisé (probe event).
- 100% des appels sortants produisent un probe event.
- Aucun impact > 5% sur la latence médiane en test de non-régression.
- Les événements invalides sont rejetés explicitement avec log structuré.
- Risque: surcharge CPU due au logging trop verbeux.
- Mitigation: niveau de log dynamique + sampling DEBUG hors incident.
- En tant qu’équipe SRE, je veux disposer des métriques réseau clés (latence, erreurs, retries, timeouts, saturation, débit).
- Implémenter compteurs, jauges et histogrammes.
- Définir buckets stables de latence (ms) et labels contrôlés.
- Calculer p50/p95/p99 sur fenêtre glissante.
- Exposer un endpoint scrape compatible Prometheus.
- Métriques visibles et cohérentes entre 2 runs identiques.
- p50/p95/p99 conformes aux jeux de tests contrôlés.
- Absence de cardinalité non maîtrisée sur les labels.
- Risque: explosion de cardinalité (
route,error_message). - Mitigation: normalisation stricte des labels + listes autorisées.
- En tant qu’opérateur, je veux consulter l’état du service et les métriques consolidées via API.
- Créer endpoints:
GET /health/liveGET /health/readyGET /metrics/networkGET /resilience/state
- Standardiser les réponses JSON et codes HTTP.
- Ajouter middlewares Tower: tracing, timeout serveur, limitation simple.
- Contrat API versionné et documenté.
- Couverture tests d’intégration endpoints critiques.
- Temps de réponse API interne p95 dans cible locale définie.
- Risque: duplication logique entre handlers.
- Mitigation: couche service dédiée + DTOs stricts.
- En tant qu’opérateur NOC, je veux visualiser en quasi temps réel les événements réseau corrélés.
- Implémenter gateway WS avec diffusion d’événements normalisés.
- Ajouter filtre minimal côté serveur (
severity,route). - Gérer heartbeat/ping-pong et reconnexion client.
- Délai de publication bout en bout < 2 s en charge nominale.
- Aucun événement WS sans
trace_id. - Dégradation contrôlée en cas de clients lents (drop policy explicite).
- Risque: accumulation mémoire avec clients lents.
- Mitigation: buffer borné par client + stratégie drop oldest.
- En tant qu’auditeur, je veux un historique immuable des événements critiques dans Ceph.
- Implémenter writer objet S3-compatible RGW (batch JSONL).
- Définir convention de clés par partition temporelle.
- Ajouter buffer local borné et reprise en cas d’indisponibilité RGW.
- Vérifier checksum/accusé de succès écriture.
- 100% des événements critiques persistés (ou bufferisés durablement).
- Reprise automatique validée après indisponibilité RGW simulée.
- Relecture ciblée possible par intervalle temporel et service.
- Risque: latence RGW impacte le chemin critique.
- Mitigation: écriture asynchrone + queue durable + circuit de protection.
- En tant que lead SRE, je veux prouver la tenue des invariants et SLO en charge nominale et dégradée.
- Préparer jeux de charge paliers (faible, nominal, pic).
- Injecter incidents: latence, timeout, 5xx, pertes réseau.
- Mesurer p95/p99, erreurs, retries, timeouts, saturation pool, état circuit breaker.
- Produire rapport final « conformité / non-conformité ».
- Rapport signé avec résultats par invariant I1→I5.
- SLO MVP validés ou écarts documentés avec plan d’action.
- Reproductibilité des tests (scripts + paramètres versionnés).
- Risque: biais de benchmark local mono-machine.
- Mitigation: campagne complémentaire sur VMs VirtualBox multi-nœuds.
- Kafka opérationnel pour ingestion continue.
- Ceph RGW disponible avec credentials dédiés projet.
- Prometheus/Grafana prêts pour vérification croisée des métriques.
- Environnement de test réseau (Docker local puis VMs VirtualBox).
- 1 commit par lot fonctionnel majeur.
- Message impératif et explicite (
feat:,docs:,test:,chore:). - Inclure dans chaque lot: code, config, doc et preuve de validation.
- Go S(n+1) seulement si:
- DoD du lot S(n) entièrement validée.
- Invariants impactés re-testés et conformes.
- Documentation mise à jour (schéma, runbook, limites connues).