Objectif du projet
- Développer un service de cache générique, intelligent et distribué pour applications web/mobile afin de réduire les appels API (−60 à −80%), avec invalidation automatique, TTL configurables, stratégies multiples et monitoring temps réel.
Fonctionnalités attendues
- Architecture multi-niveaux: L1 (in-app), L2 Redis (distributed), L3 navigateur (LocalStorage/IndexedDB)
- Stratégies d’éviction: LRU, LFU, FIFO, TTL-based
- TTL dynamiques par type: ex. devises 24h, users 1h, products 5min, static 7j
- Invalidation intelligente: via events/WebSockets quand données modifiées
- Warm-up automatique: pré-chargement au démarrage
- Cache stampede prevention: mécanisme de lock contre l’effet troupeau
- Monitoring temps réel: hit/miss rate, latence, taille, top keys, stats par type
- Dashboard administrateur: vidage sélectif (clé, pattern, tout)
- API simple: décorateurs (@Cacheable, @CacheEvict) et méthodes explicites
- Compression automatique: gzip pour mémoire/bande passante
- Cache warming proactif: prédiction et pré-chargement
Compétences développées
- Architecture de systèmes distribués et performance
- State machines et gestion d’états
- Notifications temps réel (WebSockets)
- Design d’APIs REST scalables
- Job scheduling et tâches asynchrones
- Observabilité & métriques
Technologies suggérées
- Node.js / NestJS, Redis / Redis Cluster
- WebSockets (Socket.io), RxJS
- Prometheus (metrics), Docker
- Angular (demo app)