Pourquoi Deployer Express sur GCP ?
L'adoption de Google Cloud Platform (GCP) comme plateforme d'hébergement pour une application Express offre de nombreux avantages. En effet, GCP propose un enjeu complet et flexible pour développer, déployer et héberger des applications web modernes. Un cas concret serait la création d'un service de gestion de contenu basé sur le backend Express, nécessitant un haut niveau de disponibilité et une grande échelle.
Prerequis
- Connaissance de base en JavaScript et Node.js
- Familiarité avec les concepts d'Express (routes, middleware)
- Compréhension des bases d'infrastructure cloud et des services PaaS comme GCP App Engine
- Installations nécessaires :
- Node.js version 14.x ou supérieure
- npm (Node Package Manager)
- Git pour la gestion du code source
Concepts fondamentaux
1. Google Cloud Platform (GCP)
GCP est une plateforme de cloud computing offrant un large éventail de services tels que Compute Engine, App Engine, Storage, etc.
2. Google Cloud Functions
Google Cloud Functions permet d'exécuter des fonctions sans avoir à gérer l'infrastructure sous-jacente.
3. GCP App Engine
App Engine est un service PaaS qui facilite le déploiement et la gestion d'applications web, backend et API.
Mise en pratique : projet fil rouge
Nous allons créer une application Express simple pour gérer des notes.
Étape 1 : Initialisation du Projet
## Créez un nouveau dossier pour votre projet
mkdir express-gcp-app
cd express-gcp-app
## Initialisez un nouveau projet Node.js
npm init -y
## Installez Express
npm install express
Étape 2 : Structure de base du Projet
Créez les fichiers suivants :
index.js.env(pour stocker des variables d'environnement)package.json(déjà créé parnpm init -y)Procfile(nécessaire pour App Engine)
Étape 3 : Code de l'Application
Dans le fichier index.js, ajoutez le code suivant :
// index.js
const express = require('express');
const app = express();
const port = process.env.PORT || 3000;
app.use(express.json());
// Base de données en mémoire pour stocker les notes
let notes = [];
// Route pour récupérer toutes les notes
app.get('/notes', (req, res) => {
res.json(notes);
});
// Route pour ajouter une nouvelle note
app.post('/notes', (req, res) => {
const newNote = req.body;
notes.push(newNote);
res.status(201).json(newNote);
});
// Route pour mettre à jour une note existante
app.put('/notes/:id', (req, res) => {
const id = parseInt(req.params.id);
const updatedNote = req.body;
notes[id] = updatedNote;
res.json(updatedNote);
});
// Route pour supprimer une note
app.delete('/notes/:id', (req, res) => {
const id = parseInt(req.params.id);
notes.splice(id, 1);
res.status(204).send();
});
app.listen(port, () => {
console.log(`Server running at http://localhost:${port}`);
});
Étape 4 : Configuration de l'App Engine
Créez un fichier Procfile avec le contenu suivant :
web: node index.js
Erreurs frequentes et debugging
1. Erreur : Port non défini
## Mauvais
$ PORT=5000 npm start
## Correct
$ PORT=5000 node index.js
2. Erreur : Variable d'environnement non définie
// Mauvais
const port = process.env.PORT;
// Correct
const port = process.env.PORT || 3000;
3. Erreur : Route non trouvée
## Mauvais
$ curl http://localhost:3000/nonexistent
## Correct
$ curl http://localhost:3000/notes
Pour aller plus loin
- App Engine avec Docker : Apprendre à utiliser Docker pour containeriser votre application.
- Google Cloud Firestore : Explorer la base de données NoSQL cloud Firestore pour stocker vos notes.
- Cloud Functions : Utiliser Cloud Functions pour créer des fonctions serverless pour gérer les notes.
Défi pratique
Créez une application Express qui utilise Google Cloud Firestore comme base de données et déploie l'application sur GCP App Engine. Assurez-vous que vous pouvez lire, écrire, mettre à jour et supprimer des documents dans la base de données Firestore via votre backend Express.