Aller au contenu principal

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

  1. Construire l'image Docker :
docker build -t ubsi-api ./backend
  1. Déployer avec Docker Compose :
docker-compose up -d

Déploiement manuel

  1. Préparer l'environnement :
# Installer les dépendances
npm install

# Construire l'application
npm run build

# Exécuter les migrations
npm run db:migrate
  1. 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 produits
  • fournisseur_produits : Relations fournisseur-produit
  • restocks : Commandes de réapprovisionnement
  • restock_items : Articles des commandes de réapprovisionnement
  • sync_logs : Historique des synchronisations
  • users : 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

  1. Préparer la mise à jour :
# Sauvegarder la base de données
# Tester en environnement de staging
  1. 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
  1. 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

  1. 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
  2. Erreur Kong API Gateway :

    • Vérifier la configuration Kong
    • Contrôler les clés API
    • Vérifier les routes configurées
  3. 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 :

  1. Documentation : Consulter cette documentation
  2. Logs : Vérifier les logs d'application
  3. Équipe : Contacter l'équipe de développement
  4. Issues : Créer un ticket dans le système de gestion des incidents