Skip to content

deploiement

Kirato edited this page Jun 10, 2024 · 10 revisions

1. Choix du serveur d'hébergement

Pour notre projet, nous avons opté pour un VPS (Virtual Private Server) sous Ubuntu. Voici les raisons et justifications de ce choix :

  • Configuration matérielle : Nous avons choisi un serveur avec 2 CPU, 2 Go de RAM et 25 Go de stockage SSD. Cette configuration offre un bon équilibre entre performance et coût, garantissant que notre application peut gérer un nombre significatif de requêtes tout en restant réactive.
  • Prix : Le coût annuel du VPS est de 25 euros (offre étudiant), ce qui est économique par rapport à d'autres solutions d'hébergement offrant des performances similaires.
  • Garanties fournies par le fournisseur : Notre fournisseur, PulseHeberg, propose un SLA (Service Level Agreement) de 99.99% de disponibilité, assurant une haute fiabilité. De plus, ils fournissent des sauvegardes automatiques et des snapshots, ce qui est crucial pour la récupération en cas de défaillance.
  • Flexibilité et contrôle : Un VPS nous donne un accès root complet, ce qui nous permet de configurer et d'optimiser le serveur selon les besoins spécifiques de notre application. Cela nous offre également la possibilité d'installer des logiciels personnalisés et de mettre en place des configurations de sécurité avancées.

2. Technique de déploiement

Explication de la méthodologie de déploiement

Le déploiement de notre application se fait en plusieurs étapes, utilisant des outils d'automatisation pour assurer une mise à jour fluide et sans interruption du service.

  1. Préparation du Code :

    • Le code source est hébergé sur un dépôt GitHub. Chaque nouvelle fonctionnalité ou correction de bug est développée sur des branches distinctes, puis fusionnée dans la branche principale après validation via des pull requests.
  2. Outils Utilisés :

    • Docker: Pour la conteneurisation des services (backend, base de données).
    • Caddy: Pour servir le frontend avec des fonctionnalités intégrées comme le HTTPS automatique.
    • PulseHeberg: Comme fournisseur du VPS.

3. Automatisation (CI/CD)

L'automatisation de notre processus de déploiement est cruciale pour garantir une livraison rapide et fiable des nouvelles versions de notre application. Note: Cette méthode d'automatisation CI/CD n'a pas encore été mise en place, mais voici comment nous comptons procéder.

  • CI (Intégration Continue) :

    • Utilisation de GitHub Actions pour déclencher des builds et exécuter des tests unitaires à chaque commit sur la branche principale.
    • Les actions GitHub vérifient la qualité du code et s'assurent qu'aucune modification ne casse les fonctionnalités existantes.
  • CD (Déploiement Continu) :

    • Une fois les tests réussis, une image Docker est construite et poussée vers notre registre Docker.
    • Un webhook GitHub déclenche un script Ansible qui :
      • Arrête les conteneurs en cours d'exécution sur le serveur.
      • Télécharge les nouvelles images Docker.
      • Redémarre les conteneurs avec les nouvelles images.
      • Vérifie que tous les services sont opérationnels après le redémarrage.
  • Surveillance et Alertes :

    • Nous utilisons des outils de surveillance pour suivre les performances des conteneurs et recevoir des alertes en cas d'anomalies.
    • Des logs centralisés sont collectés pour faciliter le débogage et l'analyse des incidents.

En automatisant le CI/CD, nous assurons que notre application est toujours dans un état déployable, ce qui réduit les temps d'arrêt et améliore l'efficacité de l'équipe de développement.