4NK_env/IA_agents/deployment-architecture.md
LeCoffre Deployment 243118aa8c align for IA
2025-09-23 15:22:40 +00:00

179 lines
5.9 KiB
Markdown

# Architecture de Déploiement LeCoffre Node
## 📋 Vue d'ensemble
Ce document définit l'architecture de déploiement optimale pour LeCoffre Node, basée sur le principe de séparation des responsabilités et l'ordre de démarrage par phases.
## 🏗️ Architecture par Phases
### **Principe Fondamental**
Les services sont organisés en phases pour optimiser le démarrage et éviter les dépendances inutiles :
1. **Services applicatifs** : Fonctionnent indépendamment du monitoring
2. **Services de monitoring** : Observent sans impacter les applications
3. **Dépendances** : Seules les dépendances métier sont respectées
### **Phase 1: Services de Base (Parallèle)**
Ces services peuvent démarrer en parallèle car ils sont indépendants :
| Service | Port | Dépendance | Script |
|---------|------|------------|--------|
| **tor** | 9050 | Aucune | `start-with-progress.sh` |
| **sdk_storage** | 8081 | Aucune | `start-with-progress.sh` |
| **status-api** | 3006 | Aucune | `start-with-progress.sh` |
### **Phase 2: Services Blockchain (Séquentiel)**
Ces services suivent la chaîne blockchain :
| Service | Port | Dépendance | Script |
|---------|------|------------|--------|
| **bitcoin** | 8332 | tor (healthy) | `start-with-progress.sh` |
| **blindbit** | 8000 | bitcoin (healthy) | `start-with-progress.sh` |
| **sdk_relay** | 8090-8091 | blindbit (healthy) | `start-with-progress.sh` |
### **Phase 3: Services Applicatifs (Séquentiel)**
Ces services suivent la chaîne applicative :
| Service | Port | Dépendance | Script |
|---------|------|------------|--------|
| **ihm_client** | 3003 | sdk_relay + sdk_storage | `start-with-progress.sh` |
### **Phase 4: Services de Monitoring (Séquentiel, Indépendant)**
Ces services sont indépendants des applications :
| Service | Port | Dépendance | Script |
|---------|------|------------|--------|
| **loki** | 3100 | Aucune | `start-monitoring.sh` |
| **promtail** | 9080 | loki (healthy) | `start-monitoring.sh` |
| **grafana** | 3005 | loki + promtail (healthy) | `start-monitoring.sh` |
### **Phase 5: Services Utilitaires**
Services de maintenance et surveillance :
| Service | Port | Dépendance | Script |
|---------|------|------------|--------|
| **watchtower** | 8080 | Aucune | `start-with-progress.sh` |
## 🔧 Scripts de Déploiement
### **Scripts OBLIGATOIRES**
#### `./scripts/start-with-progress.sh`
**Usage** : Démarrage complet avec phases
**Fonction** : Démarre les services applicatifs dans l'ordre correct
**Phases** : 1, 2, 3, 5
#### `./scripts/start-monitoring.sh`
**Usage** : Démarrage monitoring indépendant
**Fonction** : Démarre les services de monitoring dans l'ordre correct
**Phases** : 4 uniquement
#### `./scripts/monitor-progress.sh`
**Usage** : Aperçu des services
**Fonction** : Affiche le statut de tous les services
#### `./scripts/watch-progress.sh`
**Usage** : Surveillance temps réel
**Fonction** : Surveillance continue avec rafraîchissement
#### `./scripts/logs-with-progress.sh`
**Usage** : Logs avec progression
**Fonction** : Affiche les logs avec informations de progression
### **Scripts INTERDITS**
```bash
# ❌ JAMAIS utiliser directement
docker compose --env-file .env.master up -d
docker compose up -d
docker compose start
```
## 📊 Flux de Déploiement
### **Déploiement Complet**
```bash
# 1. Démarrage services applicatifs
./scripts/start-with-progress.sh
# 2. Démarrage monitoring indépendant
./scripts/start-monitoring.sh
# 3. Surveillance
./scripts/monitor-progress.sh
```
### **Déploiement Monitoring Seul**
```bash
# Redémarrage monitoring sans impacter les applications
./scripts/start-monitoring.sh
```
### **Surveillance Continue**
```bash
# Surveillance temps réel
./scripts/watch-progress.sh
# Logs avec progression
./scripts/logs-with-progress.sh bitcoin -p -f
```
## 🎯 Avantages de cette Architecture
### **1. Séparation des Responsabilités**
- **Services applicatifs** : Fonctionnent même sans monitoring
- **Services de monitoring** : Peuvent être redémarrés sans impact
- **Dépendances claires** : Seules les dépendances métier
### **2. Optimisation du Démarrage**
- **Phase 1** : Services indépendants en parallèle
- **Phases 2-3** : Chaîne de dépendances respectée
- **Phase 4** : Monitoring indépendant
- **Phase 5** : Services utilitaires
### **3. Maintenance Facilitée**
- **Redémarrage monitoring** : Sans impact sur les applications
- **Redémarrage applications** : Sans impact sur le monitoring
- **Diagnostic** : Scripts spécialisés par fonction
### **4. Robustesse**
- **Isolation** : Pannes de monitoring n'impactent pas les applications
- **Récupération** : Redémarrage sélectif possible
- **Monitoring** : Surveillance continue et détaillée
## 🔍 Points d'Attention
### **Dépendances Critiques**
1. **bitcoin****blindbit****sdk_relay** : Chaîne blockchain
2. **sdk_relay****lecoffre-front** : Chaîne applicative
3. **loki****promtail****grafana** : Chaîne monitoring
### **Healthchecks**
- Tous les services ont des healthchecks informatifs
- Les dépendances attendent que les services soient "healthy"
- Timeouts adaptés selon la criticité
### **Variables d'Environnement**
- Configuration centralisée dans `.env.master`
- Tous les scripts utilisent `--env-file .env.master`
- Pas de fichiers `.env` dispersés
## 📝 Validation
### **Tests de Déploiement**
1. **Services applicatifs** : URLs publiques accessibles
2. **Services de monitoring** : Dashboards Grafana alimentés
3. **Dépendances** : Chaîne de démarrage respectée
4. **Performance** : Temps de démarrage optimisé
### **Tests de Maintenance**
1. **Redémarrage monitoring** : Applications non impactées
2. **Redémarrage applications** : Monitoring non impacté
3. **Pannes sélectives** : Récupération isolée
4. **Surveillance** : Détection et diagnostic facilités
---
**Document créé le 2025-09-21**
**Version** : 1.0
**Architecture** : LeCoffre Node Deployment