• Contact us
  • Documentation
  • Login
Watch a demoFree trial
Blog
Blog
BlogProduktFallstudienNachrichtenInsights
Blog

Wie man die Ressourcenzuweisung und cloud-Datenbankdienste für Express-Anwendungen optimiert

ExpressKonfigurationMariaDBGitHubRessourcenzuweisungRessourcen
30 April 2024
Florent Huck
Florent Huck
DevRel Ingenieur
Teilen
Diese Seite wurde von unseren Experten auf Englisch verfasst und mithilfe einer KI übersetzt, um einen schnellen Zugriff zu ermöglichen! Die Originalversion findest du hier.

Vielleicht hast du schon unseren früheren Schnellstart-Leitfaden zum Hosten von Express auf Upsun gesehen, in dem detailliert beschrieben wird, wie du deine Express-Anwendungen schnell und effektiv auf der Upsun PaaS einrichten kannst. Nun, wir wollten diesen Leitfaden noch einen Schritt weiterführen und dir zeigen, wie du die performance deiner Express-Anwendungen optimieren kannst, indem du die flexible Ressourcenzuweisung und die cloud-verwalteten MariaDB-Datenbankdienste nutzt. Lass uns gleich loslegen!

Flexible Ressourcenzuweisung für deine Express-Apps

Upsun-Projekte sind containerbasiert, wobei jeder Dienst/jede Laufzeitumgebung einen eigenen Container erhält, der jeweils über eigene CPU-, RAM- und Speicherressourcen verfügt. Dank der flexiblen Ressourcenzuweisung kannst du jederzeit ganz einfach nach oben oder unten skalieren, indem du den Containerspeicher sowie CPU und RAM pro Container und pro Umgebung anpasst. 

Beim ersten Push deiner Produktionsumgebung verwendet Upsun die Standardgröße für jeden deiner Service-/Anwendungscontainer. Im Allgemeinen sollten die folgenden Ressourcen ausreichend sein, du kannst diese Werte jedoch jederzeit an die Anforderungen deiner Anwendung anpassen:

  • 1 Node.js-Container-Instanz
  • mit CPU: 0,5, Arbeitsspeicher 224 MB
  • und 0 MB Festplatte/Speicher

So kannst du deine Ressourcen an die Anforderungen deiner Express-Anwendung anpassen: 

So skalierst du deinen Containerspeicher und deine CPU/RAM

Wenn du benutzerdefinierte Ressourcen (CPU, Arbeitsspeicher und Festplatte) festlegen musst, ist das ganz einfach. Klicke in der Umgebungsansicht der Upsun-Konsole auf„Ressourcen konfigurieren“, das du links auf der Konsole findest – das geht auch über die CLI. Von dort aus kannst du die zugewiesenen Ressourcen an die Anforderungen deiner Anwendung anpassen.

Bitte beachte: Wenn du einen neuen Git-Zweig pushst, verwendet die entsprechende Upsun-Umgebung dieselben Ressourcen wie die übergeordnete Umgebung.

Sobald du deine Auswahl bestätigt hast, übernimmt Upsun deine Einstellungen, ruft die zuvor erstellten Images ab, wendet deine Ressourcenauswahl darauf an und stellt deine gesamte Anwendung neu bereit. Weitere Informationen findest du in unserer Dokumentation zur Verwaltung von Ressourcen auf Upsun.

Nutzung der open source Datenbank MariaDB

MariaDB ist eine beliebte open source-Datenbank und ein Anbieter von cloud-verwalteten Datenbankdiensten, die darauf ausgelegt sind, die performance, Effizienz und den Umfang von Datenbanken zu verbessern. Möchtest du diese Vorteile für dich nutzen? So fängst du an, MariaDB mit deinen Express-Anwendungen auf Upsun zu verwenden: 

Erstelle eine neue Umgebung

Bitte beachte: Für Upsun-Projekte gelten dieselben Regeln wie für Git-Workflows: Aktualisiere deine Produktionsumgebung niemals direkt und erstelle immer einen neuen Branch, um deine lokalen Änderungen zu testen.

Um deine Anwendung zu aktualisieren, erstelle wie gewohnt über dein Terminal einen neuen Git-Branch, nimm die gewünschten Änderungen vor und pushe den Branch in dein GitHub-Repository. 

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

Füge deiner Umgebung einen MariaDB-Dienst hinzu

Um einen neuen MariaDB-Dienst zu deiner Anwendung hinzuzufügen, musst du zunächst eine neue Dienstdefinition in deine Datei.upsun/config.yaml“ einfügen, und zwar innerhalb des obersten Schlüsselsservices:“: 

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

Füge anschließend in deiner Anwendung eine Beziehungseinstellung hinzu, die dem Servicenamen mariadb entspricht:

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

Schicke deine Änderungen anschließend an dein Repository:

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

Verwende MariaDB in deiner Anwendung

Zunächst musst du ein Node.js-Modul namensmysql2“ importieren, um mit deiner lokalen Datenbank zu interagieren. Importiere es mit dem folgenden Befehl:

npm install mysql2

Aktualisiere dann deine Dateiindex.js“ mit folgendem Inhalt: 

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}`)
});

Übertrage deine Änderungen schließlich mit dem folgenden Befehl: 

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

Bitte beachte: Wenn du die Upsun-CLI bereits installiert hast, kannst du auch den Befehl „upsun push“ (anstelle von „git push“) verwenden, da dieser ebenfalls den Upsun-Git-Remote zum Pushen deines Codes nutzt und dieser Remote als „origin“ definiert ist.

Wenn du einen neuen Branch in dein Repository pushst, wird automatisch eine neue, inaktive Upsun-Preview-Umgebung erstellt, basierend auf dem Quellcode deines Branches und den Daten der übergeordneten Umgebung (Datenbank und/oder Assets). Diese neue Umgebung ist standardmäßig nicht aktiv, was bedeutet, dass sie keine Ressourcen verbraucht. Um sie schließlich zu testen, musst du sie also mit dem folgenden Befehl aktivieren: 

upsun environment:activate

Nach Abschluss der Aktivierung wird deine „add-mariadb“-Umgebung bereitgestellt und du kannst über die Konsole darauf zugreifen, indem du zur entsprechenden Umgebung navigierst und auf deren Frontend-URL klickst oder den folgenden CLI-Befehl verwendest: 

upsun environment:url --primary

Ein kleines Extra: Erstelle einen lokalen Docker-Container mit MariaDB 

Um MariaDB lokal testen zu können, musst du eine lokale MariaDB-Datenbank-Engine verwenden. Der schnellste Weg, dies zu tun, ist entweder einen SSH-Tunnel zu deiner Umgebung zu öffnen oder einen lokalen Docker-Container hinzuzufügen. Um einen lokalen Docker-Container hinzuzufügen, erstelle im Stammverzeichnis deines Projekts eine Datei „docker-compose.yaml“ mit folgendem Inhalt: 

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"

Anschließend kannst du den entsprechenden Docker-Container starten:

docker-compose up -d

Committe deine Datei anschließend, damit andere Teammitglieder sie nutzen können:

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

So führst du deine Express-Anwendung lokal aus

Wenn du deine Route lokal testen möchtest, kannst du die folgenden Befehle verwenden, um den Node.js-Server in deiner Dateiindex.js“ zu starten: 

node index.js

Öffne anschließend in deinem Browser den folgenden Link: http://localhost:3000/. Wenn du mit deinen Änderungen zufrieden bist, füge deinen Feature-Branchadd-mariadb“ mithilfe des normalen Git-Workflows in den Branchmain“ ein:

git checkout main 
git merge add-mariadb 
git push

Deine „main“-Umgebung wird dann automatisch bereitgestellt und du kannst darauf zugreifen, indem du entweder in der Konsole zur entsprechenden Umgebung wechselst und auf deren Front-URL klickst oder den folgenden CLI-Befehl verwendest: 

upsun environment:url --primary

Bitte beachte: Vergiss nicht, deinen Git-Zweig „add-mariadb“ (lokal und remote) zu entfernen, um sicherzustellen, dass die entsprechende Upsun-Umgebung gelöscht wird. Dies kannst du wie folgt tun:

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

Dadurch werden deine lokalen und Remote-Zweige gelöscht, und anschließend deaktiviert und entfernt der GitHub-Integrationsprozess die entsprechende Upsun-Umgebung. 

Und schon kannst du mit deinen Express-Anwendungen loslegen – jetzt komplett mit optimierten Ressourcen und MariaDB-Magie. Viel Spaß! 

Bleib über unsere Social-Media- und Community-Kanäle über alle Neuigkeiten auf dem Laufenden. Besuche uns auf Dev.to, Reddit und in unserer Community.

Bleiben Sie auf dem Laufenden

Abonnieren Sie unseren monatlichen Newsletter.

Ihr größtes Werk
steht vor der Tür

Kostenloser Test