Notifications envoyées
Étudiants notifiés
Taux de réussite
Temps moyen de traitement
Ce système de notification des résultats a été conçu spécialement pour l'École Supérieure d'Informatique pour assurer une diffusion fiable et résiliente des résultats de délibérations.
Caractéristiques principales:
- Notifications multi-canaux (Email, SMS, Application)
- Mécanismes de reprise sur incident
- Architecture microservices résiliente
- Surveillance en temps réel
- Interface responsive et accessible
Résultats du Semestre Printemps 2023
Envoyé à: DJAWAD Mohamed
25 juin 2023, 14:32 - Email + SMSRésultats du Semestre Automne 2022
Envoyé à: BENALI Fatima
15 janvier 2023, 09:15 - Email + Notification AppRésultats du Semestre Printemps 2023
Destinataire: ZOUBIR Ahmed
Tentative de livraison en cours...1Réplication de données
Les données des étudiants et des résultats sont répliquées sur plusieurs serveurs géo-distribués pour assurer la continuité de service même en cas de défaillance d'un centre de données.
2Système de files d'attente
Les notifications sont placées dans une file d'attente persistante (RabbitMQ) qui garantit leur livraison même en cas de panne d'un service ou de surcharge momentanée.
3Surveillance en temps réel
Des contrôles de santé sont effectués en permanence sur tous les services avec reprise automatique en cas d'échec. Le système peut redémarrer les services défaillants sans intervention humaine.
4Réessais avec backoff exponentiel
Le système réessaie automatiquement les notifications échouées avec des intervalles de plus en plus longs (1s, 2s, 4s, 8s...) pour éviter la surcharge des services et maximiser les chances de succès.
Journal du système en temps réel:
Cette section démontre les appels API qui seraient implémentés dans le backend réel du système. Ces endpoints gèrent l'envoi de notifications, la gestion des erreurs et la résilience.
Endpoints simulés:
POST /api/notifications/send
Envoie une notification à un étudiant avec gestion de file d'attente
GET /api/notifications/status/{id}
Vérifie le statut d'une notification spécifique
POST /api/notifications/retry/{id}
Relance une notification en échec avec backoff exponentiel
GET /api/health
Endpoint de santé pour la surveillance du système
GET /api/students/{id}/results
Récupère les résultats d'un étudiant avec cache Redis
Réponses API simulées:
Implémentation du Système Résilient
Structure de la Base de Données
Le système utilise une base de données MongoDB avec les collections suivantes :
- students - Informations des étudiants
- results - Résultats académiques
- notifications - Historique des notifications envoyées
- notification_queue - File d'attente des notifications
Architecture du Code
L'application est structurée selon une architecture modulaire :
src/
├── controllers/ # Logique métier
├── models/ # Modèles de données
├── routes/ # Définition des routes API
├── middleware/ # Middleware personnalisé
├── services/ # Services externes (email, SMS)
├── utils/ # Utilities et helpers
└── config/ # Configuration de l'application
Mécanismes de Résilience Implémentés
File d'Attente RabbitMQ
Les notifications sont placées dans une file d'attente persistante avec reprise sur incident.
Réessai Exponentiel
Implémentation d'un algorithme de backoff exponentiel pour les notifications en échec.
Cache Redis
Mise en cache des résultats pour améliorer les performances et réduire la charge sur la base de données.
Surveillance de Santé
Endpoints de health check pour surveiller l'état des services.
Déploiement et Infrastructure
Le système est déployé sur une infrastructure cloud avec :
- Load balancer pour la distribution de charge
- Instances multiples pour la haute disponibilité
- Base de données répliquée avec réplication MongoDB
- Sauvegardes automatiques quotidiennes
- Monitoring avec Prometheus et Grafana
Guide de déploiement complet
Frontend (Neocities)
Statut: Prêt au déploiement
Instructions: Téléchargez ce fichier HTML et uploadez-le sur Neocities
Aller sur NeocitiesBase de Données (MongoDB Atlas)
Statut: À configurer
Instructions: Créez un compte et un cluster MongoDB Atlas
Aller sur MongoDB AtlasBackend API (Render)
Statut: À configurer
Instructions: Déployez le code backend Node.js sur Render
Aller sur RenderSécurité
SSL/HTTPS: Activé
Authentification: JWT
Validation: Côté client et serveur
Code Backend Node.js/Express
Créez un fichier server.js avec le code suivant :
Package.json requis :
Instructions pour le jury
Pour tester le système complètement :
- Déployez le backend sur Render avec le code fourni
- Configurez une base de données MongoDB Atlas
- Modifiez les URLs API dans ce frontend pour pointer vers votre backend
- Testez les fonctionnalités de notification et de résilience