182 lines
6.1 KiB
Markdown
182 lines
6.1 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` |
|
|
| **sdk_signer** | 3001 | 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 |
|
|
|---------|------|------------|--------|
|
|
| **lecoffre-back** | 8080 | sdk_relay (healthy) | `start-with-progress.sh` |
|
|
| **lecoffre-front** | 3004 | lecoffre-back (healthy) | `start-with-progress.sh` |
|
|
| **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-back** → **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
|