README.md 4,05 ko
Newer Older
# Queueing Network Simulation - Distributed Database
Hamadou Ba's avatar
Hamadou Ba a validé

> Projet Universitaire: Modélisation, Incertitude et Simulation 2025-2026
Hamadou Ba's avatar
Hamadou Ba a validé

Simulation d'une base de données distribuée utilisant la théorie des files d'attente avec validation analytique par le théorème de Jackson.
Hamadou Ba's avatar
Hamadou Ba a validé

## 📋 Description
Hamadou Ba's avatar
Hamadou Ba a validé

Ce projet implémente un simulateur de réseau de files d'attente pour modéliser le comportement d'une base de données distribuée. Le système comprend:
- Un coordinateur qui distribue les requêtes
- Plusieurs serveurs qui traitent les requêtes
- Une validation analytique via le théorème de Jackson
- Une interface web interactive pour visualiser et analyser les résultats
Hamadou Ba's avatar
Hamadou Ba a validé

## 🏗️ Architecture
Hamadou Ba's avatar
Hamadou Ba a validé

**Monorepo Turborepo** avec:
- **Backend** (Python + FastAPI): Moteur de simulation événementiel et calculs analytiques
- **Frontend** (React + TypeScript): Dashboard interactif avec visualisations
Hamadou Ba's avatar
Hamadou Ba a validé

```
projet-reseau-de-files-d-attentes/
├── apps/
│   ├── backend/     # Python FastAPI - Simulation engine
│   └── web/         # React TypeScript - Dashboard
├── turbo.json
└── package.json
Hamadou Ba's avatar
Hamadou Ba a validé
```

## 🚀 Installation
Hamadou Ba's avatar
Hamadou Ba a validé

### Prérequis
Hamadou Ba's avatar
Hamadou Ba a validé

- Node.js >= 18.0.0
- Python >= 3.10
- npm ou yarn
Hamadou Ba's avatar
Hamadou Ba a validé

### Installation rapide
Hamadou Ba's avatar
Hamadou Ba a validé

1. Cloner le repository:
```bash
git clone <repo-url>
cd projet-reseau-de-files-d-attentes
```
Hamadou Ba's avatar
Hamadou Ba a validé

2. Installer les dépendances root:
```bash
npm install
```
Hamadou Ba's avatar
Hamadou Ba a validé

3. Installer les dépendances backend:
```bash
cd apps/backend
python -m venv venv
source venv/bin/activate  # Windows: venv\Scripts\activate
pip install -r requirements.txt
```
Hamadou Ba's avatar
Hamadou Ba a validé

4. Installer les dépendances frontend:
```bash
cd apps/web
npm install
```
Hamadou Ba's avatar
Hamadou Ba a validé

## 💻 Utilisation
Hamadou Ba's avatar
Hamadou Ba a validé

### Développement
Hamadou Ba's avatar
Hamadou Ba a validé

Lancer tous les services en mode développement:
```bash
npm run dev
```
Hamadou Ba's avatar
Hamadou Ba a validé

Ou séparément:
Hamadou Ba's avatar
Hamadou Ba a validé

**Backend** (port 8000):
```bash
cd apps/backend
source venv/bin/activate
python src/main.py
```
Hamadou Ba's avatar
Hamadou Ba a validé

**Frontend** (port 5173):
```bash
cd apps/web
npm run dev
```
Hamadou Ba's avatar
Hamadou Ba a validé

Hamadou Ba's avatar
Hamadou Ba a validé

- Frontend: http://localhost:5173
- Backend API: http://localhost:8000
- Documentation API: http://localhost:8000/docs
Hamadou Ba's avatar
Hamadou Ba a validé

Hamadou Ba's avatar
Hamadou Ba a validé

```bash
# Tous les tests
npm run test
Hamadou Ba's avatar
Hamadou Ba a validé

# Backend seulement
cd apps/backend
pytest tests/
Hamadou Ba's avatar
Hamadou Ba a validé

# Frontend seulement
cd apps/web
npm run test
```
Hamadou Ba's avatar
Hamadou Ba a validé

## 📊 Fonctionnalités

### Simulation
- Simulation événementielle discrète de réseaux de files M/M/1
- Support de n serveurs configurables
- Routage probabiliste des requêtes
- Détection du régime permanent
- Collecte de statistiques détaillées

### Analyse Analytique
- Implémentation du théorème de Jackson
- Calcul des conditions de stabilité
- Calcul de L (nombre moyen de clients)
- Calcul de W (temps moyen dans le système)
- Comparaison simulation vs analytique

### Visualisations
- Diagramme de topologie du réseau (D3.js)
- Séries temporelles (nombre de clients)
- Histogrammes (temps de traitement)
- Graphiques de convergence
- Tableaux de statistiques

### Scénarios Prédéfinis
1. 1 serveur rapide (test d'instabilité)
2. 1 serveur rapide + 1 serveur lent
3. 3 serveurs lents
4. 2 serveurs (rapide + moyen)
5. Analyse de sensibilité (λ, p)

## 📚 Technologies

### Backend
- FastAPI (API REST)
- Pydantic (validation)
- NumPy (statistiques)
- WebSockets (temps réel)
- Pytest (tests)

### Frontend
- React 18
- TypeScript
- Vite
- Tailwind CSS
- Chart.js (graphiques)
- D3.js (topologie réseau)
- Zustand (état global)
- Axios (HTTP client)

## 📖 Documentation

- [Backend README](apps/backend/README.md)
- [Frontend README](apps/web/README.md)
- [Plan d'implémentation](.claude/plans/jolly-brewing-liskov.md)

## 🎯 Phases de Développement

- [x] Phase 1: Infrastructure et setup
- [ ] Phase 2: Moteur de simulation core
- [ ] Phase 3: Statistiques et multi-serveurs
- [ ] Phase 4: Module analytique (Jackson)
- [ ] Phase 5: API Backend
- [ ] Phase 6: Frontend core
- [ ] Phase 7: Visualisations
- [ ] Phase 8: Temps réel et polish
- [ ] Phase 9: Tests de scénarios et rapport

## 👥 Auteurs

Projet réalisé dans le cadre du cours "Modélisation, Incertitude et Simulation" 2025-2026.

## 📄 Licence

Projet universitaire - Usage académique