Moderne Webanwendung unter Verwendung von MEAN-Stack
Für dieses Lernprogramm können Kosten anfallen. Mit dem Kostenschätzer können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung generieren.
In diesem Lernprogramm erfahren Sie, wie Sie eine Webanwendung mithilfe des gängigen MEAN-Stacks erstellen können. Der Stack setzt sich aus einer MongoDB, einem Express Web-Framework, einem Angular-Front-End-Framework und einer Node.js-Runtime zusammen. Sie werden lernen, wie Sie eine MEAN-Beispiel-App lokal ausführen, eine verwaltete Datenbank-as-a-Service DBasS ) erstellen und verwenden, die App auf IBM Cloud bereitstellen und sowohl die Laufzeit- als auch die Datenbankressourcen skalieren.
Ziele
- Erstellen und führen Sie eine Node.js-Beispielanwendung lokal aus.
- Erstellen Sie eine verwaltete Databases for MongoDB-Instanz.
- Stellen Sie Node.js mithilfe von IBM Cloud® Code Engine in der Cloud bereit.
- Skalieren Sie die CPU- und Speicherressourcen für die Runtime.
- Skalieren Sie den Datenbankspeicher und die Plattenressourcen.
- Der Benutzer greift über einen Web-Browser auf die Anwendung zu.
- Die App Node.js, die in Code Engine ausgeführt wird, greift zum Abrufen von Daten auf die Datenbank Databases for MongoDB zu.
Vorbereitende Schritte
Für dieses Lernprogramm ist Folgendes erforderlich:
- IBM Cloud CLI - Durch dieses CLI-Tool können Sie mit IBM Cloud interagieren.
- code-engine/ce-Plug-in (
code-engine/ce) für CLI-Zugriff auf Code Engine-Ressourcen. - Optional Container Registry-Plug-in (
container-registry) für die Verwaltung von Container-Images
- code-engine/ce-Plug-in (
gitzum Klonen des Quellcode-Repositorys- Optional wenn Sie die App lokal testen möchten, senden Sie eine E-Mail an installieren Node.js.
Anweisungen zum Herunterladen und Installieren dieser Tools für Ihre Betriebsumgebung finden Sie in der Anleitung zur Einführung in die Lernprogramme.
Um die Installation dieser Tools zu vermeiden, können Sie Cloud Shell von IBM Cloud verwenden.
Dieses Lernprogramm veranschaulicht die Verwendung der Befehlszeile zum Erstellen des Projekts und der Anwendung IBM Cloud® Code Engine für die Datenbank. Es gibt Anweisungen im GitHub-Repository für die lokale Bereitstellung mit Terraform auf Ihrer Workstation oder eine noch einfachere Bereitstellung mit Schematics mit nur wenigen Klicks.
Instanz der MongoDB-Datenbank in der Cloud erstellen
In diesem Abschnitt erstellen Sie eine Databases for MongoDB-Instanz in der Cloud. Databases for MongoDB ist eine Database as a Service, die einfach zu konfigurieren ist und integrierte Sicherungen und Skalierung bietet. Eine Reihe verschiedener Typen von Datenbanken finden Sie im IBM Cloud-Katalog. Führen Sie die folgenden Schritte aus, um eine Databases for MongoDB-Instanz zu erstellen:
-
Wenn Sie nicht angemeldet sind, verwenden Sie
ibmcloud loginoderibmcloud login --sso, um sich interaktiv anzumelden. Wählen Sie Ihre bevorzugte IBM Cloud-Region und -Ressourcengruppe aus. Im folgenden Beispiel werden die Regionca-tor (Toronto)und die Ressourcengruppedefaultverwendet.ibmcloud target -r ca-tor -g defaultWeitere CLI-Befehle finden Sie im Abschnitt IBM Cloud Allgemeine CLI-Befehle (ibmcloud) in der Dokumentation.
-
Erstellen Sie eine Instanz von Databases for MongoDB über die Befehlszeile oder verwenden Sie die Konsolen-Benutzeroberfläche. Der Dienstname muss "mean-stack-mongodb" lauten, da die in diesem Tutorial verwendete Anwendung so konfiguriert ist, dass sie nach dem Dienst unter diesem Namen sucht. Für
<region>können Sie eine Region auswählen, die Ihnen näher ist. In diesem Lernprogramm wird jedochca-torverwendet.ibmcloud resource service-instance-create mean-stack-mongodb databases-for-mongodb standard ca-tor -
Warten Sie, bis die Instanz bereit ist. Sie können den Status der Bereitstellung mit folgendem Befehl prüfen:
ibmcloud resource service-instance mean-stack-mongodb -
Nachdem Sie geprüft haben, ob der Servicestatus zu "Erstellung erfolgreich" gewechselt hat, können Sie damit fortfahren einen Serviceschlüssel zu erstellen.
ibmcloud resource service-key-create mean-stack-mongodb-key --instance-name mean-stack-mongodb
MEAN-App lokal ausführen
In diesem Abschnitt klonen Sie einen MEAN-Beispielcode und führen die Anwendung lokal aus, um die Verbindung zu der MongoDB-Datenbank zu testen, die unter IBM Cloud ausgeführt wird.
-
Kopieren Sie den MEAN-Beispielcode.
git clone https://github.com/IBM-Cloud/nodejs-MEAN-stack cd nodejs-MEAN-stack -
Kopieren Sie die Datei
.env.examplenach.env.cp .env.example .env -
Fügen Sie in der ENV-Datei einen eigenen Wert für SESSION_SECRET hinzu. Führen Sie für MONGODB_URL und CERTIFICATE_BASE64 den folgenden Befehl aus:
ibmcloud resource service-key mean-stack-mongodb-key --output jsonSie finden den erforderlichen Wert für MONGODB_URL unter
credentials -> connection -> mongodb -> composedund den Wert für CERTIFICATE_BASE64 untercredentials -> connection -> mongodb -> certificate -> certificate_base64in der ausgegebenen JSON-Ausgabe. Stellen Sie sicher, dass die zum.envhinzugefügten Werte keine Anführungszeichen oder Leerzeichen enthalten. -
Optional - Installieren Sie die erforderlichen Pakete.
npm install -
Optional - Führen Sie die Anwendung lokal aus. Greifen Sie über die in der Ausgabe angegebene URL auf die Anwendung zu, erstellen Sie einen neuen Benutzer und melden Sie sich an.
node server.js
Wenn Sie die Cloud-Shell verwenden, können Sie die Anwendung öffnen, indem Sie auf das Augensymbol in der rechten oberen Ecke und auf die Vorschau für Port 8080 klicken.
App in der Cloud bereitstellen
IBM Cloud® Code Engine ist eine vollständig verwaltete, serverlose Plattform, die Ihre containerisierten Arbeitslasten ausführt, einschließlich Webanwendungen, Mikrodienste, ereignisgesteuerte
Funktionen oder Stapelverarbeitungsaufträge. In diesem Abschnitt erstellen Sie ein Code Engine-Projekt und implementieren die containerisierte Anwendung Node.js für das Projekt. Im vorherigen Abschnitt liest der Quellcode die .env,
die Sie lokal haben, um URL und die Anmeldedaten für MongoDB zu erhalten. Sie erstellen einen geheimen Schlüssel im Projekt, der dieselben Schlüssel/Werte enthält, die von der App beim Ausführen gelesen werden.
Wir haben bereits ein Container-Image für die Anwendung erstellt und mit einer Push-Operation an die öffentliche IBM Cloud Container Registry übertragen. Sie verwenden dieses vordefinierte Container-Image, um die Anwendung bereitzustellen.
-
Erstellen Sie in IBM Cloud Code Engine ein Projekt.
ibmcloud code-engine project create --name mean-stack -
Erstellen Sie einen geheimen Schlüssel im Projekt, der die Schlüssel/Werte aus der Datei
.enventhält, die Sie zuvor verwendet haben, um die Anwendung lokal auszuführen. Dieser geheime Schlüssel wird von der in der Cloud ausgeführten Anwendung verarbeitet. Weitere Informationen zu geheimen Schlüsseln finden Sie unter Mit geheimen Schlüsseln arbeiten.ibmcloud code-engine secret create --name mean-stack-secrets --from-env-file .env -
Erstellen Sie die Anwendung auf der Basis des öffentlichen Container-Image, das auf demselben Quellcode basiert, der aus dem Repository
https://github.com/IBM-Cloud/nodejs-MEAN-stackheruntergeladen wurde. Wenn Sie an den Schritten zum Erstellen dieses Image interessiert sind, prüfen Sie create-container-image.md.ibmcloud code-engine application create --name mean-stack-application --image icr.io/solution-tutorials/tutorial-mean-stack --env-from-secret mean-stack-secrets -
Sobald der Code mit einer Push-Operation übertragen wurde, sollten Sie die App in Ihrem Browser anzeigen können. Es wurde ein Hostname generiert, der wie folgt aussehen kann:
https://mean-stack.<CE_SUBDOMAIN>.ca-tor.codeengine.appdomain.cloud/.CE_SUBDOMAINist eine Variable, die in Ihr Projekt und dessen Wert injiziert wird, die während der Erstellung Ihres Projekts festgelegt wurden. Sie können Ihre Anwendungs-URL über das Konsolendashboard oder die Befehlszeile abrufen. Sobald Sie auf die Anwendung zugreifen, sollte sie wie folgt aussehen:
Live-App
Skalierung der Rechenressourcen in Code Engine
Code Engine überwacht die Anzahl der Anforderungen im System und skaliert die Anwendungs-Instanzen nach oben und nach unten, um die Arbeitslast eingehender Anforderungen, einschließlich aller HTTP-Verbindungen zu Ihrer Anwendung, zu erfüllen. Wenn Ihr Service zusätzliche Rechenressourcen benötigt oder Sie die Anzahl der zugeordneten Rechenressourcen reduzieren möchten, können Sie diese Änderungen auf Ihrer spezifischen Anwendungsseite vornehmen.
-
Navigieren Sie zur Projektseite der Code Engine.
-
Klicken Sie auf das zuvor erstellte mean-stack-Projekt.
-
Klicken Sie unter Zusammenfassung auf Anwendungen.
-
Klicken Sie auf die zuvor erstellte mean-stack-Anwendung.
-
Klicken Sie auf Konfiguration und dann auf Runtime, um die aktuelle Konfiguration anzuzeigen.
Ressourcen skalieren -
Klicken Sie auf Neue Revision bearbeiten und erstellen, um außer CPU und Hauptspeicher auch die Minimale/Maximale Anzahl von Instanzen sowie den Gemeinsamen Zugriffanzupassen.
-
Klicken Sie auf Speichern und erstellen, um die Änderungen auszulösen. Er gibt an, dass es sich bei der Anwendung nach Abschluss um
DeployingundReadyhandelt.
Skalieren der Datenbankressourcen in Databases for MongoDB
Wenn Ihr Service zusätzlichen Speicher benötigt oder Sie den Umfang des Speichers, der Ihrem Service zugeordnet ist, reduzieren möchten, können Sie dies durch das Skalieren von Ressourcen erreichen.
- Greifen Sie über die Ressourcenliste unter Datenbanken auf die Databases for MongoDB-Serviceinstanz zu.
- Klicken Sie auf die Anzeige Ressourcen.
Ressourcen skalieren - Passen Sie den Schieberegler an, um den Speicher, der Ihrem Databases for MongoDB-Datenbankservice zugeordnet ist, zu erhöhen oder zu reduzieren.
- Klicken Sie auf Bereitstellung skalieren, um die Größenänderung des Speichers vorzunehmen und zur Dashboardübersicht zurückzukehren. Diese zeigt an, dass sich die Skalierung in Bearbeitung befindet.
- Alternativ dazu können Sie Regeln für die automatische Skalierung konfigurieren, um bei einer stärkeren Nutzung der Datenbank automatisch Datenbankressourcen hinzuzufügen.
Ressourcen entfernen
Führen Sie die folgenden Schritte aus, um die Ressource zu entfernen:
- Löschen Sie das Projekt mit dem folgenden Befehl, um alle seine Komponenten (Anwendungen, Jobs usw.) zu löschen.
ibmcloud code-engine project delete --name mean-stack - Löschen Sie den Databases for MongoDB Serviceschlüssel.
ibmcloud resource service-key-delete mean-stack-mongodb-key - Löschen Sie den Service Databases for MongoDB.
ibmcloud resource service-instance-delete mean-stack-mongodb
Je nach Ressource wird diese möglicherweise nicht sofort gelöscht, sondern (standardmäßig für 7 Tage) aufbewahrt. Sie können die Ressource zurückfordern, indem Sie sie permanent löschen oder innerhalb des Aufbewahrungszeitraums wiederherstellen. In diesem Dokument erfahren Sie mehr zur Verwendung der Ressourcenrückforderung.