-
Notifications
You must be signed in to change notification settings - Fork 2
Déploiement de l'application
Comme serveur d'hébergement nous avons opté pour firebase qui héberge la partie frontend de notre application en nous fournissant directement un domaine et en sécurisant directement le site web en https disposible via ce lien https://car-rental-345808.web.app/
Comme on peut le voir firebase implémente directement l'https au niveau de notre site ce qui ammène une couche supplémentaire de sécurité.
L'hébergement du site est gratuit tant que la taille de notre application ne dépasse pas la limite qu'ils imposent. Ils nous garantie ainsi l'accéssibilté peut importe la localisation et implémente des métriques qui nous permet de surveiller le traffic sur notre site.
Shéma explicatif de la configuration du serveur

On a choisi firebase parce qu'on s'en servait déjà pour authentifier les utilisateurs avec Google. En outre, il nous offre la sécurité grâce au protocole HTTPS qui est implémenté par défaut et un accès plus rapide aux ressources.
Le client ne nous à pas posé de contraintes pour l'hébergement, nous avons donc choisis d'utiliser un VPS du cours d'admin. Cela nous a aussi permit d'appliquer les choses apprise dans ce cours dans le cours de dev web.
Pour la configuration du serveur d'hébergement du frontend il est totalement controlé par le site firebase hosting.
On transmet juste les fichiers de building ainsi que les images et ressources nécessaires au fonctionnement dans la partie hosting de firebase et à chaque mise à jour il remplace les fichiers de build par les fichiers mis à jour.

En ce qui concerne l'hébergement du back-end, nous utilisons un VPS accessible via une adresse IP publique. Notre frontend fait appel au backend via l'adresse IP publique du VPS sur le port 3001. Le serveur NodeJS et la base de données Postgresql ont été configurés en utilisant des conteneurs Docker, rendant plus facile leur transport et leur maintenance.
De plus, nous avons mis en place un réseau Docker entre ces deux conteneurs.Mais nous avons publié (rendre disponible un port via l'extérieur du conteneur) uniquement le port du serveur Node Js (3001) et non le port de base de données (5432) dans le but de la protéger d'éventuelles attaques.
configuration:
-
Faire un
git pullautomatique de la branchemasterà chaque mise à jour de l'application (push / pull request). -
Le serveur est automatiquement mis à jour via nodemon.
Voiçi le fichier docker-compose.yml qui met en commun notre serveur NodeJS et notre base de données PostgreSQL :
version: "3"
services:
db:
image: postgres:14.3
restart: always
volumes:
- /var/lib/postgresql/data
environment:
- POSTGRES_USER=${DB_USERNAME}
- POSTGRES_PASSWORD=${DB_PASSWORD}
networks:
my_network:
ipv4_address: 192.168.0.2
api:
build: ./
restart: always
depends_on:
- db
ports:
- ${APP_PORT}:3001
command: npm start
volumes:
- .:/app/
- /app/node_modules
networks:
my_network:
ipv4_address: 192.168.0.3
networks:
my_network:
ipam:
driver: default
config:
- subnet: 192.168.0.0/29
Le code est automatiquement build et déployer sur firebase lorsqu'on effectue un push ou une pull request sur la branche principale master de notre application. Etant donné que l'on ne travaille pas directement sur la branche master car elle à été défini comme branche de production, On essaie au mieux de review le code qui doit être ajouter sur celle ci afin d'éviter des crash sur la production.
Voici quelques étapes qui peuvent conduire au déploiement
-
Un fonctionnalité a été implémenté et éprouvé sur une autre branche et est prête à être ajouté à l'application.
-
Une pull request est éffectuée sur la branche master
-
Après une review et une potentielle résolution de conflit sur la branche master, le code est mergé sur celle ci.
-
Les tests automatiques sont d'abord effectués sur la branche master grâce au fichier de test yml.
-
Un build de l'application est déclenché via le second fichier yml (firebase-hosting-merge.yml)
-
Le déploiement automatique sur firebase est ensuite déclenché grâce au même fichier yml sur la ligne 38 (firebase-hosting-merge.yml)
Schema procedural:

Les outils qui sont donc principalement utilisés dans ces étapes sont :
- La fonctionnalité de hosting de firebase mis en place en quelques étapes :
- Installer firebase sur sa machine :
npm install -g firebase - Créer une application firebase : Rendez vous sur le site officiel de firebase et créez votre application .
- Activez le hosting sur le site de firebase
- Builder l'application :
npm run build - Liez votre application à celle créez sur le site de firebase:
firebase init
#choisir votre application et activer le hosting via la ligne de commande
firebase deploy --only hosting
#déployer votre application sur firebase - Github Action qui nous ammène l'automatisation de tous le processus
- l'API Firebase qui nous permet de mettre à jour l'application lors de l'éxécution de l'action sur github