Déployez votre backend Node.js gratuitement

Deploy Your Node.js Backend for Free
Deploy Your Node.js Backend for Free

Le déploiement du backend de votre application la rend accessible aux utilisateurs visés. Cependant, le passage de l’hôte local au nuage peut s’avérer difficile sans les connaissances et les outils appropriés.

Dans cet article, vous apprendrez comment déployer votre backend Node.js sur différentes plateformes, chacune disposant d’un niveau gratuit ou de crédits gratuits qui vous permettent d’explorer leur plateforme sans avoir à payer.

1. Conteneurs Back4app

Back4app est une plateforme PaaS (Platform-as-a-Service) qui vous permet de créer et d’héberger des applications web de différentes natures grâce à une interface utilisateur intuitive, un outil CLI dédié et un agent IA.

La plateforme offre divers services, notamment une plateforme de conteneurs en tant que service (CaaS) appelée Back4app Containers.

Back4app containers est un service CaaS proposé par Back4app qui vous permet de gérer et de déployer votre web app en utilisant des containers Docker.

Les conteneurs Back4app offrent une surveillance en temps réel de l’application avec des mesures cruciales telles que le CPU, la RAM, la bande passante et les journaux d’application pour vous aider à identifier les goulots d’étranglement et à optimiser la performance de votre application.

Il propose également des déploiements automatiques, qui n’entraînent aucune interruption de service lors des mises à jour. Pour ce faire, il s’assure que les nouveaux conteneurs sont prêts à fonctionner lorsque vous déployez un nouveau commit ou modifiez la configuration de votre conteneur, ce qui évite toute interruption de service pendant les déploiements.

Le déploiement avec les conteneurs Back4app est un processus simple qui consiste à connecter le dépôt GitHub de votre application (Dockerfile inclus) à l’application Back4app Github, à ajouter vos variables environnementales, et à cliquer sur le bouton déployer.

Comment déployer votre backend Node.js sur les conteneurs Back4app ?

Pour déployer votre application Node.js sur les conteneurs Back4app, vous avez besoin de

Une fois que vous vous êtes connecté à votre compte Back4app et que vous avez installé l’application GitHub sur votre compte GitHub, accordez à l’application Back4app l’accès au dépôt que vous souhaitez déployer.

Assurez-vous que votre dépôt contient un fichier Docker ; vous trouverez ci-dessous un exemple de fichier Docker que vous pouvez utiliser pour votre application Node.js :

# Specify base image
FROM node:18-alpine

# Specify working directory
WORKDIR /app

# Copy package.json and package-lock.json
COPY package*.json ./

# Install dependencies
RUN npm install

# Copy source code
COPY . .

# Expose port 8080
EXPOSE 8080

# Run the app
CMD ["npm", "start"]

Ensuite, créez une nouvelle application Back4app en cliquant sur le bouton “NEW APP” en haut à droite de votre écran. Sélectionnez ensuite l’option Containers as a Service, comme le montre l’image ci-dessous.

Créer une nouvelle application sur Back4app

Sélectionnez l’application que vous souhaitez déployer dans la liste des applications auxquelles vous avez donné accès à l’application GitHub de Back4app.

Sélectionner le dépôt GitHub

Remplissez les variables environnementales associées à votre application et cliquez sur le bouton Créer une application.

Remplir les variables d'environnement Back4app

En cliquant sur le bouton Créer une application, vous lancerez votre processus de déploiement et vous verrez les journaux de déploiement en temps réel pour vous aider à surveiller le processus de déploiement.

Si une erreur survient lors de votre déploiement, vous pouvez laisser l’agent Back4app AI analyser les erreurs à partir des logs et vous proposer des solutions. Vous pouvez également consulter le guide de dépannage de Back4app.

Une fois votre application déployée, vous pouvez y accéder à l’aide de l’URL en direct située dans le coin supérieur gauche de votre tableau de bord.

Déploiement des conteneurs Back4app

Le niveau gratuit du conteneur Back4app vous offre 0,25 CPU, 256 Mo de RAM et 100 Go de transfert, ce qui est idéal pour le développement et l’apprentissage. Pour les applications de production, il serait idéal de passer à l’un des plans payants disponibles.

2. Render

Render est une plateforme en nuage qui fournit une solution PaaS (platform-as-a-service) pour le déploiement d’applications web de différentes piles de développement, y compris Node.js.

Avec Render, vos services sont augmentés ou réduits en fonction de votre utilisation moyenne du CPU et/ou de la mémoire, ce qui élimine la nécessité de prévoir ou de surprovisionner les services pour répondre à un trafic élevé.

Render prend également en charge les déploiements sans interruption de service, ce qui garantit que votre application ne sera jamais interrompue, même en cas d’interruption de service.

Pour ce faire, il effectue des contrôles de santé à chaque fois que vous déployez une nouvelle version de votre application et ne remplace l’ancienne version que si la nouvelle version passe le contrôle de santé.

Render comprend également de nombreuses fonctionnalités, dont des environnements de prévisualisation, une API REST dédiée, des disques persistants, un réseau privé, et bien d’autres encore.

Le déploiement de votre application sur Render implique de connecter votre compte GitHub/GitLab à la plateforme et de configurer les détails du déploiement, y compris les variables d’environnement pour votre application.

Comment déployer votre backend Node.js sur Render

Pour déployer votre application sur Render, vous devez disposer d’un compte actif ; vous pouvez vous inscrire gratuitement si vous n’en avez pas.

Connectez-vous à votre compte et accédez à votre tableau de bord. Sur votre tableau de bord, cliquez sur “Services Web“.

créer un nouveau service web

Ensuite, il vous sera demandé de connecter votre compte GitHub/GitLab à Render ou de fournir un dépôt Git public.

Connecter GitHub/GitLab à Render

Après avoir connecté votre compte GitHub et sélectionné le dépôt que vous souhaitez déployer, vous serez dirigé vers un formulaire de configuration, où vous devrez entrer des détails comme le nom de votre application, la commande de construction, les variables d’environnement, etc.

configurer le rendu

Complétez les informations requises et cliquez sur le bouton “Créer un service web“. Le processus de déploiement est alors lancé et vous accédez à un écran où vous pouvez suivre en temps réel l’état du déploiement et les journaux de l’application.

Journaux de déploiement du rendu

Si une erreur survient au cours du déploiement, vous pouvez l’analyser à partir des journaux de déploiement et résoudre le problème pour que le déploiement soit réussi.

Le plan gratuit de Render offre 512 Mo de RAM et 0,1 CPU pour vos services web. Si votre application nécessite plus de ressources, vous pouvez considérer leurs plans payants.

3. Fly

Fly est une plateforme en nuage qui fournit un réseau mondial de livraison d’applications.

Il vous permet de déployer et d’exécuter des applications à proximité de vos utilisateurs dans le monde entier en tirant parti d’un réseau distribué de serveurs, réduisant ainsi considérablement la latence et améliorant les performances de votre serveur.

Fly propose des micro-VMs Linux complets connus sous le nom de “Fly Machines”. Les machines Fly ont un temps de démarrage relativement rapide d’environ 300 ms. Vous pouvez également mettre vos machines en pause lorsqu’elles sont inactives, ce qui vous permet de ne payer que pour les services que vous consommez.

Le déploiement de votre application sur Fly consiste à exécuter quelques commandes à l’aide de leur outil CLI dédié.

Comment déployer votre backend Node.js sur Fly?

Pour déployer votre application Node.js sur Fly, vous aurez besoin de :

  • Un compte Fly, vous pouvez vous inscrire gratuitement si vous n’en avez pas.
  • L’outil de ligne de commande flyctl installé sur votre machine locale.

Si l’outil flyctl CLI n’est pas installé sur votre système, vous pouvez l’installer en utilisant la commande ci-dessous :

#macOS/Linux
curl -L https://fly.io/install.sh | sh

#windows
pwsh -Command "iwr https://fly.io/install.ps1 -useb | iex"

Ensuite, connectez-vous à votre compte Fly en exécutant la commande ci-dessous :

fly auth login

L’exécution de la commande ci-dessus ouvrira votre navigateur par défaut et vous invitera à vous connecter à votre compte Fly.

Après vous être connecté avec succès, naviguez jusqu’au répertoire de l’application que vous souhaitez déployer et exécutez la commande ci-dessous :

fly launch

Lorsque vous exécutez la commande ci-dessus, Fly détectera automatiquement que vous essayez de déployer une application Node.js et mettra en place votre déploiement.

Outil CLI Fly

L’outil CLI affichera la configuration de l’application pour approbation avant de déployer l’application. Si vous êtes satisfait des configurations, vous pouvez continuer en répondant “Y” à l’invite, sinon vous pouvez répondre “N”.

Répondre N ouvrira votre navigateur et vous amènera à une page où vous pourrez configurer votre application au-delà de la configuration par défaut fournie par Fly, comme le montre l’image ci-dessous.

Configuration des mouches

Cependant, contrairement à d’autres options abordées dans cet article, Fly vous demande d’ajouter les informations de votre carte avant de déployer votre application. Néanmoins, vous ne serez pas facturé tant que vous n’aurez pas dépassé 5 $ de ressources.

4. Amazon Web Services (AWS)

Amazon Web Services (AWS) est un fournisseur d’infrastructure en tant que service (IaaS) qui propose des composants d’infrastructure informatique fondamentaux sur Internet.

AWS vous permet de créer et de gérer des environnements virtualisés sans avoir à investir dans du matériel physique et à en assurer la maintenance.

AWS possède le plus grand nombre de fonctionnalités parmi les autres fournisseurs de services cloud, qu’il s’agisse de technologies d’infrastructure comme le calcul et les bases de données ou de technologies émergentes comme l’IA et la ML.

Il s’agit également de l’environnement informatique en nuage le plus sûr qui soit, soutenu par un ensemble complet d’outils de sécurité en nuage, avec plus de 300 services et fonctions de sécurité, de conformité et de gouvernance, ainsi que la prise en charge de 143 normes de sécurité et certifications de conformité.

En outre, AWS est une plateforme mature qui a fait ses preuves (17 ans) en matière de fiabilité, de sécurité et de performance.

Cependant, le déploiement de votre application sur AWS est plus complexe que sur d’autres plateformes comme Back4app et Render.

Vous pouvez y parvenir de différentes manières ; toutefois, ce tutoriel traitera de la plus populaire, Amazon Elastic Compute Cloud (Amazon EC2).

Comment déployer votre backend Node.js sur AWS ?

EC2 est un service web fourni par Amazon qui vous permet de louer des serveurs virtuels, appelés instances, dans le nuage.

Pour créer une instance EC2, vous avez besoin d’un compte AWS ; vous pouvez vous inscrire gratuitement si vous n’en avez pas.

Après vous être connecté à votre compte Amazon, créez une instance EC2 (vous pouvez sauter la dernière étape de l’article ci-dessus, qui vous demande de vous connecter à votre instance EC2 à l’aide de SSH).

Vous pouvez vérifier votre instance nouvellement créée sur votre tableau de bord EC2 sous “instances”.

Instance AWS EC2

Ensuite, connectez-vous à votre instance EC2 à l’aide de la console d’instance EC2. Après avoir suivi les étapes des instructions mentionnées ci-dessus, un terminal web devrait s’ouvrir dans votre navigateur.

Console AWS EC2

Ensuite, passez à l’utilisateur root en exécutant la commande ci-dessous :

sudo su -

L’exécution de la commande ci-dessus fait passer le contexte de l’utilisateur à l’utilisateur root avec des privilèges élevés.

Cette commande, composée de “sudo” pour les capacités du superutilisateur, de “su” pour le changement d’utilisateur et du trait d’union (“-“), garantit que les variables d’environnement et les configurations de l’utilisateur root sont chargées.

Ensuite, installez le gestionnaire de versions de nœuds (NVM) en exécutant la commande ci-dessous :

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash

Ensuite, activez le NVM dans la session de terminal actuelle en exécutant la commande ci-dessous :

. ~/.nvm/nvm.sh

Ensuite, installez Node.js à l’aide de NVM en exécutant la commande ci-dessous :

nvm install node

Ensuite, installez Git en exécutant la commande ci-dessous :

sudo yum update
sudo yum install git

Vous pouvez confirmer que Node.js et Git ont été installés avec succès sur votre instance EC2 en exécutant la commande ci-dessous :

node -v && git -v

Si l’installation a réussi, vous devriez voir les numéros de version s’afficher sur votre console, comme le montre l’image ci-dessous.

Installation réussie de Git et Node.js

Ensuite, connectez votre clé SSH GitHub à votre instance EC2. Après avoir configuré et ajouté votre clé SSH, exécutez la commande ci-dessous pour cloner votre dépôt dans votre instance EC2 :

git clone <YOUR_APPLICATION_URL>

La commande ci-dessus clonera votre application dans votre instance EC2.

AWS : ajouter github ssh

Allez dans le répertoire de votre application sur votre EC2 et exécutez la commande ci-dessous pour installer toutes les dépendances de votre projet.

npm install

Ensuite, ajoutez vos variables d’environnement en exécutant la commande ci-dessous :

nano .env

La commande ci-dessus créera et ouvrira un fichier .env vide, copiera vos variables environnementales, les collera dans le fichier, et appuiera sur control + X, puis Y pour sauvegarder et fermer le fichier.

Enfin, exécutez le script de démarrage de votre application, qui devrait normalement être la commande ci-dessous :

npm start

L’exécution de la commande ci-dessus devrait permettre de démarrer votre application. Vous pouvez accéder à votre application déployée en utilisant votre adresse DNS publique, que vous pouvez trouver sur le tableau de bord de votre instance.

Le niveau gratuit pour les instances EC2 dans AWS offre 750 heures mensuelles pour les instances t2.micro ou t3.micro fonctionnant sous Linux, RHEL ou SLES, en fonction de la région.

De même, pour les instances Windows, elle offre 750 heures par mois pour les instances t2.micro ou t3.micro en fonction de la région.

En outre, quel que soit le type d’instance, il comprend 750 heures par mois pour une adresse IPv4 publique.

Cependant, le niveau gratuit n’est disponible pour les nouveaux clients AWS que pendant les 12 mois suivant la date d’inscription à AWS.

5. DigitalOcean

DigitalOcean est une plateforme d’infrastructure en tant que service (IaaS) qui offre un accès aux machines virtuelles sous-jacentes qui soutiennent vos applications, vous permettant de configurer votre espace disque, d’allouer de la mémoire et de configurer votre réseau.

DigitalOcean fournit divers produits de cloud computing comme les droplets, qui sont des machines virtuelles Linux. En plus des droplets, ils proposent un service Kubernetes géré et des fonctions sans serveur.

DigitalOcean assure également la sécurité du réseau grâce à des pare-feu, des équilibreurs de charge, un nuage privé virtuel, des IP flottantes, des DNS, des IPv6 et une protection contre les attaques DDoS.

Le déploiement de votre application Node.js sur DigitalOcean est un processus relativement simple comparé à d’autres options IaaS.

Il s’agit de créer un Droplet, de le configurer, de mettre en place votre machine virtuelle Linux et un reverse proxy adapté à vos besoins.

Déployer votre backend Node.js sur un Droplet DigitalOcean ?

Vous avez besoin d’un compte DigitalOcean pour déployer votre application Node.js sur la plateforme ; vous pouvez vous inscrire gratuitement si vous n’en avez pas.

Ensuite, connectez-vous et créez un nouveau projet (ou utilisez un projet existant).

Créer un nouveau projet DigitalOcean

Sur le tableau de bord de votre projet, cliquez sur le menu déroulant “Créer” en haut à droite de votre écran et sélectionnez “Droplets” pour créer un nouveau droplet.

Créer un nouveau droplet

Ensuite, sélectionnez la région de déploiement la plus proche de vous pour votre droplet.

Ensuite, sélectionnez le système d’exploitation “Ubuntu” comme image et “Basic” comme type de droplet.

Sélectionnez ensuite les options de l’unité centrale que vous préférez.

Sélectionnez ensuite “mot de passe” comme méthode d’authentification. Vous pouvez également choisir SSH comme méthode d’authentification.

Enfin, sélectionnez “1” comme numéro de droplet et donnez-lui un nom d’hôte.

Après avoir rempli les informations requises, cliquez sur le bouton “Créer un droplet“. Vous serez alors redirigé vers votre tableau de bord.

Sur le tableau de bord, sélectionnez le droplet que vous venez de créer et lancez votre droplet console, comme le montre l’image ci-dessous.

Lancer la console du droplet

Le lancement de la console du droplet ouvrira un terminal web Ubuntu sur votre navigateur, comme le montre l’image ci-dessous.

Console DigitalOcean Droplet

Ensuite, installez le script d’installation de Node.js en exécutant la commande ci-dessous :

curl -sL https://deb.nodesource.com/setup_20.x | sudo -E bash -

Ensuite, installez Node.js en exécutant la commande ci-dessous :

apt-get install nodejs -y

Ensuite, clonez votre dépôt GitHub en utilisant la commande ci-dessous :

git clone <YOUR_GITHUB_REPOSITORY_LINK>

Installez les dépendances de votre projet en exécutant la commande ci-dessous :

npm install

Ensuite, ajoutez vos variables d’environnement en exécutant la commande ci-dessous :

nano .env

La commande ci-dessus créera et ouvrira un fichier .env vide, copiera vos variables environnementales, les collera dans le fichier, et appuiera sur control + X, puis Y pour sauvegarder et fermer le fichier.

Ensuite, installez PM2 pour que votre serveur fonctionne en arrière-plan :

sudo npm i pm2 -g

Ensuite, démarrez votre serveur avec PM2 en exécutant la commande ci-dessous :

pm2 start main.js

Ensuite, exécutez la commande ci-dessous pour vous assurer que votre serveur redémarre à chaque fois que l’application redémarre :

pm2 startup ubuntu

Maintenant, votre application fonctionne et écoute sur votre droplet (localhost). Pour la rendre accessible au public, vous allez configurer Nginx en tant que proxy inverse.

Exécutez la commande ci-dessous pour installer Nginx :

sudo apt install nginx

Avant d’utiliser Nginx, vous devez ajuster le pare-feu Ubuntu ufw (Uncomplicated Firewall) pour sécuriser votre application et vous assurer que seul le trafic autorisé peut atteindre votre serveur web.

Exécutez la commande ci-dessous pour activer l’ufw :

ufw enable

Ensuite, exécutez la commande ci-dessous pour autoriser SSH, HTTP et HTTPS :

ufw allow ssh && ufw allow http && ufw allow https

La commande ci-dessus permet au pare-feu (UFW) de votre serveur Ubuntu d’autoriser les connexions entrantes sur les ports 22 (pour SSH), 80 (pour HTTP) et 443 (pour HTTPS).

Ensuite, exécutez la commande ci-dessous pour ouvrir le fichier de configuration par défaut de Nginx :

sudo nano /etc/nginx/sites-available/default

Dans le fichier de configuration, recherchez l’objet location et remplacez-le par le bloc de code ci-dessous :

location / {
    try_files $uri $uri/ =404;
    proxy_pass http://localhost:5050;#Replace with the port your app is running on
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $host;
    proxy_cache_bypass $http_upgrade;
}

Note : Pour proxy_pass, vous pouvez remplacer la valeur par n’importe quel port sur lequel votre application fonctionne.

Fermez et enregistrez le fichier(contrôle + X, Y, ENTER). L’édition du fichier de configuration avec le bloc de code ci-dessus configure votre proxy inverse de sorte que lorsque vous effectuez des requêtes sur le port 80 (pour HTTP), votre application fonctionnant sur le port 5050 (ou votre port par défaut) traite les requêtes.

Ensuite, exécutez la commande ci-dessous pour tester si votre fichier de configuration Nginx est correctement configuré.

sudo nginx -t

Si votre fichier de configuration a été correctement configuré, vous devriez obtenir la réponse figurant dans l’image ci-dessous.

Test Nginx

Enfin, redémarrez Nginx en exécutant la commande ci-dessous pour vous assurer que les modifications apportées au fichier de configuration sont prises en compte :

sudo service nginx restart

Vous pouvez maintenant envoyer des requêtes à votre application en utilisant l’adresse IPv4 publique de votre droplet.

Le niveau gratuit de DigitalOcean offre 200 $ de crédits aux nouveaux utilisateurs pour accéder à tous les services disponibles.

Comparaison des options de déploiement

Cet article a couvert cinq options de déploiement pour votre application Node.js. Vous trouverez ci-dessous un tableau comparatif de toutes les plateformes abordées.

Plate-formeCatégorieOutils de développementRessources gratuitesInformations sur le paiement
Conteneurs Back4appPaaSDocker, GitHub App, Back4app AI Agent.– 0,25 CPU
– 256 MB de RAM
– Transfert de 100GB
Non requis
RenderPaaSApplication GitHub/GitLab, lien vers le dépôt public– 512 Mo de RAM
– 0,1 CPU
Non requis
FlyPaaSOutil CLI Fly5 $ de ressources/utilisationExigée
Amazon Web Services (AWS)IaaSInstance AWS EC2– 750 heures par mois d’instances Linux, RHEL ou SLES t2.micro ou t3.micro.
– 750 heures par mois d’instance Windows t2.micro ou t3.micro, selon la région.
– 750 heures par mois d’adresse IPv4 publique.
Exigée
DigitalOceanIaaSGouttelettes de l’océan numérique200 $ de crédits gratuits pour les nouveaux utilisateurs.Exigée

Dans l’ensemble, les plateformes PaaS telles que Back4app, Render et Fly sont les mieux adaptées aux applications qui nécessitent évolutivité, flexibilité et cycles de développement et de déploiement rapides.

En revanche, les plateformes IaaS telles que DigitalOcean et AWS conviennent mieux aux applications qui nécessitent un plus grand contrôle sur l’infrastructure sous-jacente, des configurations personnalisées et une évolutivité sans avoir à gérer du matériel physique.

Conclusion

Dans cet article, vous avez exploré et appris comment déployer une application Node.js en utilisant les conteneurs Back4app, Render, Fly, AWS et DigitalOcean.

Chacune des options présentées a ses avantages et ses inconvénients. Pour les plateformes PaaS, le processus de déploiement est plus facile.

Cependant, vous perdez la majeure partie du contrôle de l’infrastructure sous-jacente. Sur les plateformes IaaS, le processus de déploiement est compliqué, mais vous contrôlez totalement l’infrastructure sous-jacente sans avoir de serveurs physiques.

Quelle que soit l’option choisie, vous devrez acheter et connecter un nom de domaine personnalisé pour le rendre réellement accessible à vos utilisateurs.

Si vous avez aimé cet article, découvrez aussi Comment créer une application web avec une base de données PostgresSQL.


Leave a reply

Your email address will not be published.