• Contact us
  • Documentation
  • Login
Watch a demoFree trial
Blog
Blog
BlogProduitÉtudes de casNouvellesPerspectives
Blog

Comment optimiser l'allocation des ressources et les services de base de données cloud pour les applications Express

ExpressconfigurationMariaDBGitHubl'allocation des ressourcesressources
30 avril 2024
Florent Huck
Florent Huck
Ingénieur DevRel
Partager
Cette page a été rédigée en anglais par nos experts, puis traduite par une IA pour vous y donner accès rapidement! Pour la version originale, c’est par ici.

Tu as peut-être déjà consulté notre précédent guide de démarrage rapide sur l'hébergement d'Express sur Upsun, qui explique en détail comment configurer tes applications Express rapidement et efficacement sur la plateforme PaaS d'Upsun. Eh bien, nous avons voulu aller encore plus loin avec ce guide, en te proposant des conseils pour optimiser les performances de tes applications Express grâce à l'allocation flexible des ressources et aux services de base de données MariaDB gérés dans le cloud. C'est parti !

Allocation flexible des ressources pour tes applications Express

Les projets Upsun sont basés sur des conteneurs, chaque service/environnement d'exécution disposant de son propre conteneur, chacun avec ses propres ressources CPU/RAM et de stockage disponibles. Grâce à l'allocation flexible des ressources, tu peux facilement augmenter ou réduire la capacité en modifiant simplement le stockage et les ressources CPU/RAM par conteneur, par environnement, à tout moment. 

Lors du premier déploiement de ton environnement de production, Upsun utilisera la taille par défaut pour chacun de tes conteneurs de service/d'application. En général, les ressources suivantes devraient être suffisantes, mais tu peux toujours adapter ces valeurs aux besoins de ton application :

  • 1 instance de conteneur Node.js
  • avec CPU : 0,5, mémoire 224 Mo
  • et 0 Mo de disque/stockage

Voici comment tu peux adapter tes ressources pour répondre aux besoins de ton application Express : 

Comment faire évoluer le stockage de ton conteneur et le CPU/la RAM

Si tu as besoin de définir des ressources personnalisées (CPU, mémoire et disque), la procédure est simple. Dans la vue Environnement de la console Upsun, clique sur« Configurer les ressources » à gauche de l'interface de la console — cela peut également être fait via la CLI. À partir de là, tu peux adapter les ressources allouées pour répondre aux exigences de ton application.

Remarque : si tu pousses une nouvelle branche Git, l’environnement Upsun correspondant utilisera les mêmes ressources que l’environnement parent.

Une fois tes choix confirmés, Upsun prendra en compte tes sélections, rassemblera les images précédemment construites, leur appliquera tes choix de ressources et redéploiera l'intégralité de ton application. Pour plus d'informations, consulte notre documentation sur la gestion des ressources sur Upsun.

Utilisation de la base de données open source MariaDB

MariaDB est une base de données open source très appréciée et un fournisseur de services de bases de données gérés dans le cloud, conçus pour améliorer les performances, l'efficacité et la portée des bases de données. Tu souhaites profiter de ces avantages ? Voici comment commencer à utiliser MariaDB avec tes applications Express sur Upsun : 

Crée un nouvel environnement

Remarque : les mêmes règles qui s'appliquent aux processus Git s'appliquent aux projets Upsun : ne mets jamais à jour ton environnement de production directement, et crée toujours une nouvelle branche pour tester tes modifications locales.

Pour mettre à jour ton application, crée une nouvelle branche Git comme d'habitude via ton terminal, implémente les modifications que tu souhaites apporter, puis pousse la branche vers ton dépôt GitHub. 

git switch -c add-mariadb && git push -u origin add-mariadb

Ajoute un service MariaDB à ton environnement

Pour ajouter un nouveau service MariaDB à ton application, tu dois d'abord ajouter une nouvelle définition de service dans ton fichier `.upsun/config.yaml`, sous la clé de niveau supérieur `services:` : 

# .upsun/config.yaml
services:
  mariadb:
    type: mariadb:11.0

Ensuite, ajoute un paramètre de relation dans ton application correspondant au nom du service mariadb :

# .upsun/config.yaml
applications:
  app:
    relationships:
      mariadb: 

Enregistre ensuite tes modifications dans ton dépôt :

git commit -am "Adding MariadDB 11 service" && git push

Utilise MariaDB dans ton application

Tout d'abord, tu dois importer un module Node.js nommé mysql2 pour interagir avec ta base de données locale. Importe-le à l'aide de la commande suivante :

npm install mysql2

Mets ensuite à jour ton fichier index.js avec ce qui suit : 

const express = require('express')
const app = express()
const mysql = require("mysql2/promise");
const port = (process.env.PORT || '3000');
function openConnection() {
  let database_password = 'express'
  if (process.env.MARIADB_PASSWORD !== undefined) {
    database_password = process.env.MARIADB_PASSWORD
  }
  return mysql.createConnection({ host: (process.env.MARIADB_HOST || '127.0.0.1'), port: (process.env.MARIADB_PORT || '3306'), user: (process.env.MARIADB_USERNAME || 'user'), password: database_password, database: (process.env.MARIADB_PATH || 'express') });
}
function createTable(connection) {
  return connection.execute(
    'CREATE TABLE IF NOT EXISTS upsuninfo (uid INT(10) NOT NULL AUTO_INCREMENT, username VARCHAR(64) NULL DEFAULT NULL, departname VARCHAR(128) NULL DEFAULT NULL, created DATE NULL DEFAULT NULL, PRIMARY KEY (uid) ) DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;'
  );
}
function insertData(connection) {
  return connection.execute(
    "INSERT INTO upsuninfo (username, departname, created) VALUES ('upsun', 'Deploy Friday', '2023-09-29')"
  );
}
function readData(connection) {
  return connection.query("SELECT * FROM upsuninfo");
}
function dropTable(connection) {
  return connection.execute("DROP TABLE upsuninfo");
}
// Define the main route.
app.get('/', async function(req, res){
  // Connect to MariaDB.
  const connection = await openConnection();
  await createTable(connection);
  await insertData(connection);
  const [rows] = await readData(connection);
  const droppedResult = await dropTable(connection);
  // Make the output.
  const outputString = `Hello, World! - A simple Express web framework template for Upsun
MariaDB Tests:
* Connect and add row:
  - Row ID (1): ${rows[0].uid}
  - Username (upsun): ${rows[0].username}
  - Department (Deploy Friday): ${rows[0].departname}
  - Created (2024-04-30): ${rows[0].created}
* Delete row:
  - Status (0): ${droppedResult[0].warningStatus}`;
  res.set('Content-Type', 'text/plain');
  res.send(outputString);
});
// Get PORT and start the server
app.listen(port, function() {
  console.log(`Listening on port ${port}`)
});

Enfin, valide tes modifications à l'aide de la commande suivante : 

git commit -am "use MariaDB in index.js" && git push

Remarque : si tu as déjà installé la CLI Upsun, tu peux également utiliser la commande upsun push (au lieu de git push), car elle utilisera le remote Git upsun pour pousser ton code, et ce remote est défini comme étant identique à origin.

Lorsque tu pousses une nouvelle branche vers ton dépôt, un nouvel environnement de test Upsun inactif est automatiquement créé, basé sur le code source de ta branche et les données de l'environnement parent (base de données et/ou ressources). Cet environnement n'est pas actif par défaut, ce qui signifie qu'il ne consomme pas de ressources. Pour le tester, tu dois donc l'activer à l'aide de la commande suivante : 

upsun environment:activate

À la fin de l'activation, ton environnement d'add-mariadbs sera déployé et tu pourras y accéder via la console en te rendant dans l'environnement correspondant et en cliquant sur son URL principale, ou en utilisant la commande CLI suivante : 

upsun environment:url --primary

Petit bonus : crée un conteneur Docker local à l'aide de MariaDB 

Pour pouvoir tester MariaDB localement, tu dois utiliser un moteur de base de données MariaDB local. Le moyen le plus rapide d'y parvenir est soit d'ouvrir un tunnel SSH vers ton environnement, soit d'ajouter un conteneur Docker local. Pour ajouter un conteneur Docker local, à la racine de ton projet, crée un fichier `docker-compose.yaml` contenant ce qui suit : 

version: '3.1'
volumes:
  data:
services:
  db:
    image: mariadb:latest
    restart: always
    environment:
      MARIADB_ROOT_PASSWORD: express
      MARIADB_PASSWORD: express
      MARIADB_USER: user
      MARIADB_DATABASE: express
    volumes:
      - data:/var/lib/mysql
    ports:
      - "3306:3306"

Tu peux ensuite démarrer le conteneur Docker correspondant :

docker-compose up -d

Ensuite, valide ton fichier pour que tes collègues puissent l'utiliser :

git commit -am "Docker-compose file" && git push

Comment exécuter ton application Express localement

Si tu veux tester ta route localement, tu peux utiliser les commandes suivantes pour démarrer le serveur Node.js à partir de ton fichier `index.js` : 

node index.js

Puis ouvre dans ton navigateur le lien suivant : http://localhost:3000/. Lorsque tu es satisfait de tes modifications, fusionne ta branche de fonctionnalité add-mariadb avec la branche main en suivant le processus Git habituel :

git checkout main 
git merge add-mariadb 
git push

Ton environnement main sera alors automatiquement déployé et tu pourras y accéder soit en utilisant la console (en te rendant dans l'environnement correspondant et en cliquant sur son URL principale), soit en utilisant la commande CLI suivante : 

upsun environment:url --primary

Remarque : n'oublie pas de supprimer ta branche Git add-mariadb (en local et à distance) pour t'assurer de supprimer l'environnement Upsun correspondant. Tu peux le faire en utilisant la commande suivante :

git branch -D add-mariadb
git push origin --delete add-mariadb

Cela supprimera tes branches locales et distantes, puis le processus d'intégration GitHub désactivera et supprimera l'environnement Upsun correspondant. 

Et voilà, tu es désormais prêt à tester tes applications Express, désormais dotées de ressources optimisées et de la magie de MariaDB. Amuse-toi bien ! 

Reste au courant de toutes nos dernières actualités sur nos réseaux sociaux et nos canaux communautaires. Retrouve-nous sur Dev.to, Reddit et notre communauté.

Restez informé

Abonnez-vous à notre newsletter mensuelle pour les dernières mises à jour et nouvelles.

Votre meilleur travail
est à l'horizon

Essai gratuit