Wie deployt man einen Webservice?
In diesem Artikel werden webservices, ihre Vorteile, Optionen zur Bereitstellung von web services sowie deren Vergleich mit APIs behandelt.
Darüber hinaus erfahren Sie, wie Sie ein e-commerce web service in die Cloud bereitstellen können, ohne eine einzige Zeile benutzerdefinierten Code zu schreiben!
Contents
Wichtige Erkenntnisse
- Verständnis der Rolle von web services: web services sind ein zentraler Bestandteil moderner digitaler Infrastrukturen und bieten bedeutende Vorteile wie Interoperabilität, Plattformunabhängigkeit, Skalierbarkeit und Sicherheit.
- Erkundung von Bereitstellungsoptionen: Die Bereitstellung von web services kann auf verschiedene Arten erfolgen, darunter herkömmliches Hosting, Platform as a Service (PaaS), Containers as a Service (CaaS) und Backend as a Service (BaaS).
- Anleitung zur Bereitstellung eines web service in der Cloud: Der Artikel bietet eine umfassende Anleitung zur Bereitstellung eines e-commerce web service mit einer No-Code-BaaS-Plattform.
Was ist ein Web Service?
Ein web service ist eine Software, die über das Internet verfügbar ist, typischerweise über das Hypertext Transfer Protocol (HTTP). Die von einem web service bereitgestellten Daten liegen in einem standardisierten Format wie XML, JSON, SOAP oder YAML vor.
web services werden für die Kommunikation zwischen Maschinen verwendet und nicht direkt vom Endkunden konsumiert.
Beispielsweise nutzt Ihr Mobilgerät einen Wetter-web service, um Wetterinformationen abzurufen und sie anschließend in einem ansprechenden Format anzuzeigen.
Es gibt verschiedene Arten von web services, zum Beispiel Representational State Transfer (REST), GraphQL und gRPC.
Ein typischer web service-Lebenszyklus sieht folgendermaßen aus:
- Ein web service lauscht auf einem Server an einem bestimmten Port.
- Ein Client sendet eine Anfrage an den web service über diesen Port.
- Der web service führt die Anfrage aus und gibt eine Antwort zurück. Bevor die Antwort verarbeitet wird, kann der Server die Anfrage auch authentifizieren und autorisieren.
- Der Client verarbeitet die Antwort.
web services sind bekannt für ihre Plattform- und Sprachunabhängigkeit, Wiederverwendbarkeit, Skalierbarkeit, Flexibilität und ihre lose Kopplung. Heutzutage werden sie von fast jedem IT-Unternehmen eingesetzt.
Web Service vs. API
web service und API sind ähnliche Begriffe, sollten jedoch nicht synonym verwendet werden.
Vereinfacht ausgedrückt ist ein web service eine API, die ausschließlich über das Internet verfügbar ist. Das bedeutet, dass alle web services APIs sind, während nicht alle APIs web services sind.
APIs können neben ihrer Funktion als web services auch andere Aufgaben erfüllen. Zum Beispiel Interaktionen mit dem Betriebssystem, lokale Anwendungs-Kommunikation und Anwendungs-Integrationen.
Zwei Beispiele für non-web-service APIs sind die Python File System API und die JavaScript DOM API.
Web Service Advantages
web services sind ein grundlegender Bestandteil moderner digitaler Infrastrukturen und bieten zahlreiche Vorteile. Schauen wir sie uns an!
Interoperabilität
Einer der Hauptvorteile von web services ist ihre Fähigkeit, Interoperabilität zwischen verschiedenen Systemen und Anwendungen zu ermöglichen.
Durch die Einhaltung standardisierter Protokolle wie HTTP und XML ermöglichen web services eine reibungslose Kommunikation zwischen verschiedenen Softwarekomponenten, unabhängig vom zugrunde liegenden Technologie-Stack.
Plattformunabhängigkeit
Ein weiterer großer Vorteil von web services ist, dass sie vollständig plattformunabhängig sind. Sie können in jeder Programmiersprache implementiert und auf jedem Betriebssystem ausgeführt werden, einschließlich Windows, Linux und MacOS.
Wie bereits im vorherigen Abschnitt erwähnt, können sie auch auf jeder Plattform konsumiert werden.
Einfach & Effizient
web services sind leicht zu verstehen und zu implementieren. Meistens besitzen sie nicht einmal einen eigenen Zustand. Stattdessen verwenden sie eine Datenbank oder nutzen eine andere Softwarekomponente.
Sie bieten einen unkomplizierten Ansatz, um Funktionalitäten über ein Netzwerk zugänglich zu machen. Diese Einfachheit fördert die Konsistenz in den Interaktionen und erleichtert die Nutzung der Services über verschiedene Plattformen und Technologien hinweg.
Skalierbarkeit
web services sind hoch skalierbar. Sie können jeden Datenverkehr bewältigen, indem sie vertikal (z. B. durch Hinzufügen zusätzlicher Ressourcen zu einem Serverknoten) oder horizontal (z. B. durch das Hinzufügen weiterer Serverknoten) skalieren.
Dies kann Ihnen helfen, die Kosten erheblich zu senken, indem sichergestellt wird, dass keine Rechenressourcen verschwendet werden.
Wiederverwendbarkeit
Das Beste an web services ist ihre hohe Wiederverwendbarkeit. Anstatt denselben Code in mehrere Anwendungen zu integrieren, können alle eine einzige Instanz eines web service nutzen.
Die Wiederverwendbarkeit führt zu einem kleineren und leichter zu wartenden Codebestand, besserer Zentralisierung und ermöglicht Ihnen, Ressourcen zu sparen.
Sicherheit
web services können Authentifizierung, Autorisierung, Verschlüsselung und andere Sicherheitsmaßnahmen nutzen. Die meisten web services sind durch SSL/TSL-Verschlüsselung geschützt.
All dies stellt Vertraulichkeit (nur Absender und Empfänger können die Nachricht lesen) und Integrität (die Nachricht wird während der Übertragung nicht verändert) sicher.
Web Service Deployment Options
web services können entweder selbst gehostet oder in der Cloud bereitgestellt werden. Die beliebtesten Cloud-Optionen für die Bereitstellung von web services sind:
- Platform as a Service (PaaS)
- Containers as a Service (CaaS)
- Backend as a Service (BaaS)
Jedes Cloud-Modell hat Vor- und Nachteile, die bei der Bereitstellung Ihres Projekts berücksichtigt werden sollten. Die wichtigsten Faktoren sind Benutzerfreundlichkeit, Budget, Leistung und Funktionsumfang.
Conventional Hosting
Conventional Hosting ist ein traditioneller Ansatz zum Hosten von Websites und Anwendungen. Die Server können entweder selbst verwaltet oder von Hosting-Anbietern bereitgestellt werden.
Bei herkömmlichem Hosting mieten Sie in der Regel monatlich oder jährlich Serverplatz.
Wichtige Merkmale des Conventional Hostings sind:
- Server Space – verschiedene Tarife basierend auf den Anforderungen Ihrer Anwendung
- Website Management Tools – benutzerfreundliche Tools zur Websiteverwaltung, z. B. cPanel
- Email Hosting – E-Mail-Hosting-Dienste, mit denen Sie eine Domain verknüpfen können
- FTP Access – Serverdateien können über FTP oder Secure FTP (SFTP) abgerufen werden
Einer der Hauptvorteile von herkömmlichem Hosting ist seine Erschwinglichkeit, insbesondere für kleine Websites und Unternehmen.
Allerdings mangelt es an Skalierbarkeit und Flexibilität im Vergleich zu Cloud-basierten Lösungen. Conventional Hosting ist außerdem aufwendiger einzurichten.
Platform as a Service (PaaS)
Platform as a Service (PaaS) ermöglicht es Kunden, Anwendungen in einer Cloud-Umgebung zu erstellen, zu verwalten und bereitzustellen.
Darüber hinaus bieten PaaS-Anbieter eine Vielzahl vorgefertigter Tools für Entwicklung, Anpassung und Test von Anwendungen.
Im Vergleich zu IaaS ist PaaS einfacher zu bedienen und erfordert weniger Erfahrung in der Systemadministration.
Außerdem profitieren Sie von Load-Balancern, verwalteten Datenbanken und automatischen Backups. Im Vergleich zu IaaS bietet PaaS jedoch weniger Freiheit und Kontrolle und birgt ein höheres Risiko für Vendor Lock-in.
Containers as a Service (CaaS)
Containers as a Service (CaaS) ist ein weiteres beliebtes Cloud-Computing-Modell. CaaS vereinfacht das Entwickeln, Ausführen, Bereitstellen und Warten containerisierter Software. Häufig wird es in Kombination mit Docker und Docker Compose eingesetzt.
Die meisten CaaS-Plattformen stellen Folgendes bereit:
- Docker Engine
- Container Registry
- Skalierungsmöglichkeiten
Der Hauptvorteil containerisierter Software besteht darin, dass sie überall bereitgestellt werden kann. Es gibt kein Vendor Lock-in, sodass Sie frei von einem Cloud-Anbieter zum anderen wechseln können. Das ist besonders nützlich für web services.
Backend as a Service (BaaS)
Backend as a Service (BaaS) ist ein Cloud-Computing-Modell, das sich um Ihre Infrastruktur kümmert und den Backend-Teil der Entwicklung automatisiert.
Darüber hinaus bietet es Funktionen wie Echtzeit-Datenbank, Dateispeicherung, Social-Media-Integrationen, E-Mail- und Push-Benachrichtigungen und mehr.
Auf diese Weise können Entwickler sich auf die Entwicklung des Frontends konzentrieren, ohne sich um Infrastruktur und Backend kümmern zu müssen.
Das Frontend wird häufig mithilfe der proprietären APIs und SDKs des BaaS-Anbieters erstellt. Durch die Nutzung von BaaS können Sie den Codebestand vereinfachen und wartungsfreundlicher gestalten.
BaaS bietet alle Vorteile von IaaS und PaaS und zusätzlich eine Backend-Abstraktionsschicht. Mit BaaS verkürzen Teams die Markteinführungszeit und sparen Geld bei Entwicklung und Personal.
How to Deploy a Web Service?
In diesem Abschnitt des Artikels zeigen wir Ihnen Schritt für Schritt, wie Sie ein web service auf der Back4app-Plattform bereitstellen. Wir verwenden dafür Back4apps No-Code-BaaS-Lösung.
Wenn Sie an benutzerdefiniertem Code interessiert sind, schauen Sie sich die folgenden Artikel an:
- Deploy a Flask Web Service to Back4app Containers
- Deploy a Node.js Web Service to Back4app Containers
- Deploy a PHP Web Service to Back4app Containers
- Deploy a FastAPI Web Service to Back4app Containers
What is Back4app?
Back4app ist eine der beliebtesten Backend as a Service (BaaS)-Lösungen.
Durch die Nutzung können Sie Ihren Entwicklungsprozess erheblich beschleunigen und sich auf die wesentlichen Aspekte Ihrer App konzentrieren – wie beispielsweise die Geschäftslogik und das Frontend –, während Back4app sich um den Rest kümmert.
Back4app bietet sowohl No-Code- als auch benutzerdefinierte Code-Bereitstellung. Es ist einfach zu bedienen und hat praktisch keine Lernkurve. Es ist sowohl für Einsteiger als auch für erfahrenere Entwickler geeignet.
Das Tolle an Back4app ist, dass automatisch RESTful- und GraphQL-APIs basierend auf Ihren Datenbankklassen generiert werden.
Darüber hinaus stellt es SDKs für nahezu jede gängige Programmiersprache oder jedes Framework bereit, zum Beispiel React, Android, iOS und mehr!
Back4app Core Features
- Tabellenähnliche Datenbankverwaltung
- Benutzerverwaltung & Authentifizierung
- Automatische API-Generierung
- Cloud-Code-Funktionen & Terminplanung
- Echtzeit-Daten
Um dem Artikel zu folgen, benötigen Sie ein kostenloses Back4app-Konto. Falls Sie noch keines haben, können Sie hier eins erstellen.
Project Introduction
Im Verlauf des Artikels erstellen wir ein simples e-commerce-Web-API.
Die API stellt Funktionen für Produkt-, Produktkategorie- und Kaufverwaltung bereit. Sie ermöglicht das Erstellen, Lesen, Aktualisieren und Löschen (CRUD) in jeder Datenbankklasse.
Darüber hinaus verwenden wir Cloud Code, um benutzerdefinierte Funktionen zur Berechnung von E-Commerce-Statistiken zu implementieren, wie zum Beispiel den Gesamtumsatz und die beliebtesten Produkte.
Abschließend testen wir die API mithilfe der integrierten Back4app REST- und GraphQL-Konsole.
Create App
Um mit Back4app zu arbeiten, müssen Sie zunächst eine App erstellen. Melden Sie sich mit Ihrem Back4app-Konto an und klicken Sie im App-Dashboard auf „Build new app“.
Auf der Back4app-Plattform können Sie zwei Arten von Apps bereitstellen:
- Backend as a Service (BaaS)
- Containers as a Service (CaaS)
Beide Cloud-Computing-Modelle erlauben Ihnen die Bereitstellung von web services.
Der Hauptunterschied besteht darin, dass BaaS ein nahezu vollständiger Backend-Dienst ist, während CaaS das Bereitstellen containerisierter web services ermöglicht.
Mit anderen Worten: BaaS ist überwiegend eine No-Code-Lösung, während CaaS eine Custom-Code-Lösung ist.
Wir entscheiden uns hier für Backend as a Service (BaaS).
Bei der Erstellung einer Back4app-Anwendung können Sie zwischen einer NoSQL- und einer SQL-Datenbank wählen. Für unseren Anwendungsfall spielt das keine Rolle, daher bleiben wir bei NoSQL.
Geben Sie Ihrer App einen passenden Namen und klicken Sie auf „Create“.
Warten Sie, während Back4app alles einrichtet, einschließlich Datenbank, Anwendungsebene, Skalierung, Einrichtung der Benutzerverwaltung usw. Dies dauert ungefähr 2 Minuten.
Nach Abschluss werden Sie automatisch zur Datenbankansicht weitergeleitet.
Design the Database
Als Nächstes kümmern wir uns um die Datenbank.
Standardmäßig enthält eine Back4app-App bereits die Klassen _Role
und _User
. Diese werden für die Benutzerverwaltung und Authentifizierung genutzt.
Diese Themen liegen außerhalb des Umfangs dieses Tutorials, aber Sie können unsere anderen Artikel lesen, um mehr darüber zu erfahren.
Für unsere e-commerce-Web-API erstellen wir folgende Datenbankstruktur:
Beginnen wir mit der Klasse ProductCategory
.
Klicken Sie in der Seitenleiste auf „Add Class“, um eine neue Datenbankklasse zu erstellen. Nennen Sie sie „ProductCategory“, aktivieren Sie „Public Read and Write“ und klicken Sie auf „Create class & add columns“.
Fügen Sie der Klasse folgende Spalten hinzu:
+-----------------------------+-------------+---------------+----------+
| Type | Name | Default value | Required |
+-----------------------------+-------------+---------------+----------+
| String | name | <leave blank> | yes |
+-----------------------------+-------------+---------------+----------+
| String | description | <leave blank> | no |
+-----------------------------+-------------+---------------+----------+
Als Nächstes führen Sie dieselben Schritte durch, um eine Klasse Product
zu erstellen:
+-----------------------------+-------------+---------------+----------+
| Type | Name | Default value | Required |
+-----------------------------+-------------+---------------+----------+
| String | name | <leave blank> | yes |
+-----------------------------+-------------+---------------+----------+
| String | description | <leave blank> | no |
+-----------------------------+-------------+---------------+----------+
| Relation -> ProductCategory | categories | true | yes |
+-----------------------------+-------------+---------------+----------+
| Number | price | 0.0 | yes |
+-----------------------------+-------------+---------------+----------+
| Boolean | inStock | true | yes |
+-----------------------------+-------------+---------------+----------+
Abschließend erstellen Sie die Klasse Purchase
:
+-----------------------------+-------------+---------------+----------+
| Type | Name | Default value | Required |
+-----------------------------+-------------+---------------+----------+
| Pointer -> Product | product | <leave blank> | yes |
+-----------------------------+-------------+---------------+----------+
| Number | quantity | 1 | yes |
+-----------------------------+-------------+---------------+----------+
Großartig, Sie haben die Datenbankstruktur erfolgreich erstellt.
Wie Sie sehen, werden 1:n-Beziehungen (one-to-many) über den Datentyp Pointer
und n:m-Beziehungen (many-to-many) über den Datentyp Relation
abgebildet.
Zum Schluss sollten Sie die Datenbank noch mit ein paar Produktkategorien, Produkten und Käufen befüllen. So können wir das web service später testen, um sicherzugehen, dass alles wie erwartet funktioniert.
Zum Befüllen der Datenbank haben Sie zwei Möglichkeiten:
- Erstellen Sie selbst ein paar Kategorien, Produkte und Käufe
- Importieren Sie diese Datenbank-Exporte von GitHub („More > Import > Class Data“)
Web Service Usage
Um auf das web service zuzugreifen, stellt Back4app verschiedene Möglichkeiten zur Verfügung:
- Automatisch generierte RESTful API
- Automatisch generierte GraphQL API
- Parse SDK
Schauen wir uns jede davon kurz an!
REST API
Representational State Transfer (REST) ist ein auf HTTP basierendes Protokoll, das HTTP-Methoden wie OPTIONS
, GET
, POST
, DELETE
und so weiter nutzt.
Die meisten heutigen APIs basieren auf REST. Es unterstützt verschiedene Datenformate, wobei JSON am weitesten verbreitet ist.
REST ist effektiv, hoch skalierbar und plattformunabhängig. Es kann mit jeder Programmiersprache oder jedem Framework verwendet werden.
Zu seinen Hauptnachteilen gehören das Über- oder Unter-Abfragen von Daten, fehlende Echtzeit-Abonnements und kein integriertes System zur API-Versionierung.
Um die REST API zu testen, wählen Sie „API > Console > REST“ und führen Sie folgende Abfrage aus:
Diese Abfrage sollte folgende Antwort liefern:
Mehr erfahren: How to Build a REST API?
GraphQL API
GraphQL ist eine serverseitige Laufzeitumgebung und Abfragesprache zur Erstellung von APIs.
GraphQL ermöglicht es Clients, gezielt bestimmte Daten vom API anzufordern, anstatt sich auf eine vom Backend festgelegte Datenmenge verlassen zu müssen.
Zu den Vorteilen zählen Flexibilität, Wartungsfreundlichkeit und GraphQL-Erweiterungen. Nachteile sind unter anderem die höhere Komplexität, eine steilere Lernkurve und ein Mangel an Standardisierung.
Um die GraphQL API zu testen, wählen Sie „API > Console > GraphQL“ und führen Sie die folgende Abfrage aus:
Mehr erfahren: How to Build a GraphQL API?
Parse SDK
Das Parse SDK ist die empfohlene Vorgehensweise, wenn Ihr Frontend in einer Programmiersprache oder einem Framework implementiert wird, das vom Parse SDK nativ unterstützt wird.
Dazu gehören React Native, Flutter, Android, iOS, JavaScript, IONIC und Xamarin.
Das Parse Software Development Kit (SDK) bietet Klassen und Funktionen zur Datenabfrage, -manipulation, Benutzer-Authentifizierung, Echtzeit-Daten, Cloud-Code-Funktionen und mehr.
Beispiel-Code zum Abrufen von Daten in JavaScript sieht so aus:
API Documentation
Ein weiterer Vorteil von Back4app ist, dass automatisch Dokumentation für alle Ihre Datenbankklassen generiert wird.
Die Dokumentation enthält Modellbeschreibungen, praktische Beispiele, Anweisungen zum Umgang mit Fehlern und vieles mehr.
Wählen Sie „API > API Reference“ in der Seitenleiste, um die Dokumentation anzusehen.
Cloud Code
Die automatisch generierten APIs sind großartig, aber nicht alle Anwendungsfälle lassen sich damit umsetzen. Wenn Sie zum Beispiel komplexe Abfragen durchführen, Daten aggregieren oder benutzerdefinierten Code ausführen möchten, müssen Sie Cloud-Code-Funktionen verwenden.
Cloud-Code-Funktionen sind Back4apps Functions as a Service (FaaS)-Angebot. Sie ermöglichen das Definieren benutzerdefinierter JavaScript-Funktionen, die Sie über die API aufrufen oder zeitgesteuert ausführen können.
Create Cloud Code Functions
Lassen Sie uns zwei Cloud-Code-Funktionen erstellen, um e-commerce-Statistiken zu berechnen:
totalRevenue()
berechnet den Gesamtumsatz, indem alle Käufe aggregiert werden.topTenPopularProducts()
liefert die beliebtesten Produkte basierend auf den Käufen.
Öffnen Sie dafür in der Seitenleiste „Cloud Code > Functions & Web Hosting“.
Sie werden feststellen, dass der Bildschirm in zwei Bereiche unterteilt ist. Links befindet sich die Verzeichnisstruktur, rechts können Sie Ihren Code eingeben.
Die Standardverzeichnisse sind:
- cloud – für Cloud-Code-Funktionen und anderen Code
- public – dieses Verzeichnis wird automatisch von Back4app bereitgestellt (statische Ressourcen, CSS, HTML)
Öffnen Sie main.js.
Fügen Sie dann folgenden Code ein:
Klicken Sie abschließend auf „Deploy“, um die Funktionen in der Cloud bereitzustellen.
Der obige Code wurde mithilfe des Back4app Agent generiert – einem AutoGPT für Entwickler. Der Agent ist eng in Back4app und Back4app Containers integriert. Er ermöglicht Ihnen, Apps zu erstellen, App-Einstellungen zu ändern, benutzerdefinierten Code zu generieren und mehr.
Test Cloud Code Functions
Im letzten Abschnitt testen wir die soeben implementierten Cloud-Code-Funktionen.
Wählen Sie zunächst in der Seitenleiste „API > Console > JavaScript“ und fügen Sie dann folgenden Code ein:
Um ihn auszuführen, klicken Sie oben rechts auf „Run“.
Sie sollten folgende Antworten erhalten:
// `totalRevenue` output
{
"result": 9385.389999999994
}
Um die andere Funktion auszuführen, ersetzen Sie totalRevenue
durch topTenPopularProducts
.
// `topTenPopularProducts` output
{
"result": [
{"objectId": "SA5mUfq9Ll", "name": "Science Fiction Novel", "count": 3},
{"objectId": "fV0DFPFlnz", "name": "Yoga Mat", "count": 3},
{"objectId": "gA4zn19Udo", "name": "Smartphone", "count": 2},
{"objectId": "UKeOHJkJ7l", "name": "Winter Jacket", "count": 2},
{"objectId": "8PodlEps2R", "name": "Espresso Machine", "count": 2},
{"objectId": "S15WrDgrpk", "name": "Hair Dryer", "count": 2},
{"objectId": "8O2D1egX51", "name": "4K Television", "count": 1},
{"objectId": "RriSWMDg48", "name": "Face Cream", "count": 1},
{"objectId": "Cq3Hqww69Q", "name": "Blender", "count": 1}
]
}
Conclusion
Abschließend haben Sie gelernt, was web services sind, welche Vorteile sie bieten, welche Bereitstellungsoptionen es gibt und wie sie sich von APIs unterscheiden. Außerdem wissen Sie jetzt, wie Sie Ihr eigenes web service in Back4app BaaS bereitstellen können.
Weitere Ressourcen finden Sie im back4app-web-service-Repository.