Configuration et déploiement
Cette section couvre la configuration, le déploiement et la maintenance de l'API UBSI.
Variables d'environnement
Variables principales
# Port du serveur API
NESTJS_PORT=3000
# Configuration CORS
CORS_CONFIG_JSON='{"origin": "*"}'
# Informations de version
CURRENT_COMMIT=abc123def456
CURRENT_CONFIG=production
# Environnement
NODE_ENV=production
Configuration de la base de données
# PostgreSQL
DATABASE_URL=postgresql://user:password@localhost:5432/ubsi_db
DB_HOST=localhost
DB_PORT=5432
DB_USERNAME=ubsi_user
DB_PASSWORD=secure_password
DB_DATABASE=ubsi_db
Configuration Kong API Gateway
# URL de base Kong
KONG_BASE_URL=http://kong-gateway:8000
# Clés API pour les services externes
GESTION_API_KEY=your_gestion_api_key
REFERENTIEL_API_KEY=your_referentiel_api_key
Configuration email
# SMTP Configuration
SMTP_HOST=smtp.gmail.com
SMTP_PORT=465
SMTP_USER=your-email@gmail.com
SMTP_PASS=your-app-password
Déploiement
Déploiement avec Docker
- Construire l'image Docker :
docker build -t ubsi-api ./backend
- Déployer avec Docker Compose :
docker-compose up -d
Déploiement manuel
- Préparer l'environnement :
# Installer les dépendances
npm install
# Construire l'application
npm run build
# Exécuter les migrations
npm run db:migrate
- Démarrer l'application :
# Production
npm run start:prod
# Développement
npm run start:dev
Base de données
Migrations
# Générer une nouvelle migration
npm run db:generate
# Exécuter les migrations
npm run db:migrate
# Annuler la dernière migration
npm run db:rollback
Structure de la base de données
Les principales tables :
referentiel_products: Catalogue des produitsfournisseur_produits: Relations fournisseur-produitrestocks: Commandes de réapprovisionnementrestock_items: Articles des commandes de réapprovisionnementsync_logs: Historique des synchronisationsusers: Gestion des utilisateurs
Monitoring et logs
Logs d'application
Les logs sont structurés en JSON et incluent :
{
"timestamp": "2024-01-15T10:30:00Z",
"level": "info",
"message": "Requête API reçue",
"context": "RestocksController",
"method": "POST",
"route": "/api/publique/restock",
"userId": "user123"
}
Métriques importantes
- Temps de réponse API : < 200ms pour 95% des requêtes
- Taux d'erreur : < 1%
- Disponibilité : > 99.9%
- Utilisation CPU : < 70%
- Utilisation mémoire : < 80%
Surveillance de santé
L'API expose des endpoints de santé :
/api/intercom/now: Statut de tous les services/api/intercom/reports: Rapports de santé détaillés
Sécurité
Authentification
- Toutes les requêtes externes passent par Kong API Gateway
- Authentification par clé API pour les services internes
- Validation des données d'entrée avec class-validator
Autorisation
- Contrôle d'accès basé sur les rôles
- Validation des permissions par endpoint
- Audit des actions utilisateur
Bonnes pratiques
- Utilisation de HTTPS en production
- Rotation régulière des clés API
- Monitoring des tentatives d'accès non autorisées
- Chiffrement des données sensibles
Maintenance
Sauvegarde
# Sauvegarde de la base de données
pg_dump ubsi_db > backup_$(date +%Y%m%d).sql
# Restauration
psql ubsi_db < backup_20240115.sql
Mise à jour
- Préparer la mise à jour :
# Sauvegarder la base de données
# Tester en environnement de staging
- Déployer la mise à jour :
# Arrêter l'application
docker-compose down
# Mettre à jour le code
git pull origin main
# Reconstruire et redémarrer
docker-compose up -d --build
- Vérifier le déploiement :
# Vérifier les logs
docker-compose logs -f
# Tester les endpoints critiques
curl http://localhost:3000/api/intercom/now
Dépannage
Problèmes courants
-
Erreur de connexion à la base de données :
- Vérifier les variables d'environnement
- Contrôler la connectivité réseau
- Vérifier les permissions utilisateur
-
Erreur Kong API Gateway :
- Vérifier la configuration Kong
- Contrôler les clés API
- Vérifier les routes configurées
-
Problèmes de synchronisation :
- Vérifier les logs de synchronisation
- Contrôler la connectivité avec le service référentiel
- Vérifier les permissions d'accès
Commandes utiles
# Vérifier le statut des conteneurs
docker-compose ps
# Voir les logs en temps réel
docker-compose logs -f backend
# Redémarrer un service
docker-compose restart backend
# Accéder au conteneur
docker-compose exec backend bash
Support
Pour obtenir de l'aide :
- Documentation : Consulter cette documentation
- Logs : Vérifier les logs d'application
- Équipe : Contacter l'équipe de développement
- Issues : Créer un ticket dans le système de gestion des incidents