# Docker et déploiement

## Fonctionnel
Le SaaS BI devra pouvoir être mis en production proprement sur serveur, avec isolation des composants critiques.

Docker sert à :
- isoler les responsabilités ;
- éviter qu'un job lourd bloque toute la plateforme ;
- séparer le runtime workspace de développement du runtime viewer publié ;
- scaler certains composants indépendamment ;
- préparer une évolution Kubernetes.

## Technique

### Containers recommandés au départ

```txt
workspace-web
viewer-web
api
worker
scheduler
postgres
redis
minio
reverse-proxy
```

### Rôle des containers

#### workspace-web
Runtime de développement :
- workspace multi-fenêtres ;
- éditeurs ;
- datasets ;
- pipelines ;
- dashboards en édition.

#### viewer-web
Runtime de consultation :
- dashboards publiés ;
- filtres ;
- interactions ;
- exports ;
- aucun moteur workspace complet.

#### api
Backend principal :
- organisations ;
- workspaces ;
- objets BI ;
- permissions ;
- publication ;
- audit ;
- lineage.

#### worker
Jobs asynchrones :
- imports ;
- refresh ;
- pipelines ;
- exports ;
- transformations.

#### scheduler
Planification :
- refresh datasets ;
- exports planifiés ;
- alertes ;
- pipelines planifiés.

#### postgres
Base metadata :
- utilisateurs ;
- organisations ;
- workspaces ;
- datasets ;
- dashboards ;
- permissions ;
- audit ;
- locks.

#### redis
Cache et coordination :
- sessions ;
- locks ;
- queues simples ;
- présence ;
- cache court.

#### minio
Object storage compatible S3 :
- fichiers sources ;
- imports ;
- exports ;
- snapshots ;
- previews.

#### reverse-proxy
Entrée HTTP :
- routage vers workspace/viewer/API ;
- SSL plus tard ;
- headers sécurité.

## Règle d’architecture critique
Les ressources de développement et de consommation publiée doivent être séparées.

Une requête qui plante en développement ne doit jamais rendre indisponibles les dashboards publiés.

## Phase 1
Docker Compose.

## Phase 2
Séparation plus fine :
- worker-dev ;
- worker-viewer ;
- worker-export ;
- worker-pipeline.

## Phase 3
Kubernetes / orchestration avancée.
