Lernen Sie, ein skalierbares Backend mit KI aufzubauen
Ein „skalierbares“ Backend ist ein Backend, das eine erhöhte Last ohne erhebliche Leistungseinbußen bewältigen kann.
Der Aufbau eines skalierbaren Backends umfasst mehrere Prozesse und Überlegungen, wie z. B. das Datenbankdesign und die Bereitstellungsstrategie.
In diesem Artikel erfahren Sie, wie Sie ein skalierbares Backend mit Hilfe von künstlicher Intelligenz (KI) aufbauen können.
Contents
Was macht ein Backend skalierbar?
Die Skalierbarkeit eines Backends hängt von verschiedenen Faktoren ab, die während des Lebenszyklus der Softwareentwicklung implementiert werden.
Ein Faktor, der zur Skalierbarkeit eines Backends beiträgt, ist die Geschwindigkeit der Datenbankabfragen.
Langsame Abfragen erhöhen die Antwortzeit Ihres Servers und beeinträchtigen seine Fähigkeit, mehrere Anfragen gleichzeitig zu verarbeiten.
Sie können Ihre Abfragen beschleunigen, indem Sie ein geeignetes Schema-Design implementieren und effiziente Abfragen schreiben.
Asynchrone Verarbeitung ist ein weiterer Faktor, der ein Backend skalierbar machen kann. Ressourcenintensive Aufgaben können Ausführungs-Threads blockieren und die Fähigkeit des Servers, gleichzeitige Anfragen zu verarbeiten, einschränken.
Sie können dieses Problem lösen, indem Sie ressourcenintensive Aufgaben wie große Berechnungen und Dateiuploads an Hintergrundaufträge delegieren.
Ein weiterer Faktor ist Ihre Bereitstellungsstrategie. Sie müssen Ihr Backend mit einer skalierbaren Bereitstellungsstrategie über Dienste wie Back4app bereitstellen.
So werden beispielsweise neue Container automatisch in Betrieb genommen, wenn der Datenverkehr ansteigt, und die Last wird ohne manuelle Eingriffe auf mehrere Instanzen verteilt.
Ebenso skaliert das System, wenn die Nachfrage sinkt, und gibt ungenutzte Ressourcen frei.
In diesem Tutorial werden Sie eine Anwendung zur Verwaltung von Hundezwingern erstellen, die alle oben genannten Faktoren implementiert, um sie skalierbar zu machen.
Entwerfen eines skalierbaren Backends mit KI
Wie oben erwähnt, werden Sie eine Anwendung zur Verwaltung von Hundezwingern entwickeln. Hier sind die Anforderungen an die Anwendung:
- Ihre Anwendung wird es den Besitzern ermöglichen, ihre Hunde in Ihrem Zwinger anzumelden.
- Wenn ein Besitzer seinen Hund in Ihrem Zwinger anmeldet, speichert Ihre Anwendung Details über den Hund, wie Name, Rasse, Alter, Name des Besitzers und Bild. Dann generiert sie einen eindeutigen Code für den Besitzer.
- Der eindeutige Code, den der Besitzer erhält, ist die einzige Möglichkeit, seinen Hund am Ende des Besuchs aus Ihrem Zwinger zu holen.
- Während des Besuchs in Ihrem Zwinger werden Sie alle Aktivitäten des Hundes aufzeichnen. In dieser Anleitung werden nur das Fressen, die Verabreichung von Medikamenten und die Fellpflege aufgeführt.
- Am Ende des Besuchs gibt der Besitzer den eindeutigen Code ein, den er bei der Anmeldung erhalten hat, und holt seinen Hund bzw. seine Hunde ab.
Der erste Schritt zur Umsetzung der oben genannten Anforderungen besteht darin, eine normalisierte Datenbank mit wenig bis gar keiner Datenredundanz zu entwerfen.
Sie werden dieses Datenbankschema mit Hilfe des Back4app AI-Agenten entwerfen und erstellen, der als KI-Backend-Generator fungieren wird.
Back4app AI Agent
Der Back4app AI Agent ist ein LLM, das eine Schnittstelle zu den Back4app Produkten, der Backend Platform und der Web Deployment Platform bildet.
Er ermöglicht Ihnen die Interaktion mit diesen Produkten über Eingabeaufforderungen und hilft Ihnen, ein skalierbares Backend mit KI zu erstellen.
Für den Zugriff auf den AI-Agenten benötigen Sie ein Back4app-Konto. Wenn Sie noch keines haben, können Sie sich kostenlos anmelden.
Loggen Sie sich in Ihr Back4app-Konto ein und klicken Sie auf den Link „AI Agent“ in der Navigationsleiste Ihres Dashboards.
Wenn Sie auf den Link klicken, gelangen Sie auf die Seite für den KI-Agenten, wie in der Abbildung unten dargestellt.
Auf dieser Seite können Sie verschiedene Eingabeaufforderungen eingeben, z. B. die, eine neue BaaS-App auf Ihrem Back4app-Konto zu erstellen.
Aufbau eines Backends mit KI
Um eine neue Backend-Anwendung auf Back4app zu erstellen, können Sie die folgende oder eine ähnliche Aufforderung in den AI-Agenten eingeben.
- Erstellen Sie eine neue Backend-Anwendung mit dem Namen „ Zwingerverwaltung Backend“.
Englische Version
- Create a new backend application called "Kennel Management Backend"
Sie sollten eine Antwort erhalten, dass die Anwendung erfolgreich erstellt wurde.
Sie können die erstellte App in Ihrem Back4app-Dashboard anzeigen, wie in der Abbildung unten dargestellt.
Wie in der obigen Abbildung zu sehen ist, ist die Datenbank Ihrer neuen Backend-App bis auf die Standardklassen _Userund _Role leer.
Als Nächstes werden Sie das Datenbankschema entwerfen und zu Ihrer Backend-Anwendung hinzufügen.
Datenbank entwerfen
Um ein normalisiertes Datenbankschema für Ihre obigen Anwendungsanforderungen zu entwerfen, geben Sie die folgende Aufforderung oder etwas Ähnliches in den KI-Agenten ein.
- Entwerfen Sie ein normalisiertes Datenbankschema für eine Anwendung zur Verwaltung von Hundezwingern.
- Die Anwendung speichert Details zum Hund: Name, Rasse, Alter, einen eindeutigen Benutzernamen des Besitzers, Kontaktinformationen des Besitzers und ein Bild;
- Wenn ein Besitzer eincheckt, generiert sie einen eindeutigen Code, mit dem der Besitzer den Hund abholen kann.
- Es verfolgt die Aktivitäten während des Besuchs (Fressen, Medikamente, Pflege).
Der Besitzer gibt den eindeutigen Code ein, um seinen Hund am Ende des Besuchs wieder abzuholen.
- Stellen Sie sicher, dass die Beziehungen zwischen Entitäten wie Hunden, Besitzern, Besuchen, Aktivitäten und dem Abrufcode richtig strukturiert sind.
Englische Version
- Design a normalized database schema for a dog kennel management application.
- The app stores dog details: name, breed, age, a unique owner username, owner contact details, and an image;
- When an owner checks in and generates a unique code for the owner to retrieve the dog.
- It tracks activities during the visit (eating, medication, grooming).
The owner provides the unique code to retrieve their dog at the end of the visit.
- Ensure relationships between entities like dogs, owners, visits, activities, and the retrieval code are properly structured.
Die obige Eingabeaufforderung sollte ein Datenbankschema ähnlich dem unten abgebildeten ergeben.
Das obige Datenbankschema hat vier Tabellen: Besitzer, Hunde, Besuche und Aktivitäten.
Ein Besitzer kann mehrere Hunde haben (one-to-many), aber jeder Hund gehört nur zu einem Besitzer, der über einen Fremdschlüssel in der Tabelle „Hunde“ verknüpft ist.
Ebenso kann ein Hund im Laufe der Zeit mehrere Besuche haben (one-to-many), die jeweils spezifisch für diesen Hund sind und in der Tabelle „Besuche“ über einen Fremdschlüssel verfolgt werden.
Darüber hinaus kann jeder Besuch mehrere Aktivitäten umfassen (eins-zu-viele), z. B. Fütterung, Pflege oder Medikation, die jeweils mit einem bestimmten Besuch über den Fremdschlüssel Besuch_id in der Tabelle Aktivitätenverknüpft sind.
Nun, da Sie den Entwurf Ihrer Datenbank haben, werden Sie die KI auffordern, die Datenbank in Ihrem Backend zu erstellen, indem Sie eine Aufforderung ähnlich der unten stehenden verwenden.
- Erstellen Sie die entworfene Datenbank in der Backend-App „Kennel Management Backend“.
Englische Version
- Create the designed database in the backend app "Kennel Management Backend".
Sie sollten eine Antwort erhalten, dass die Datenbank erfolgreich erstellt wurde. Sie können dies bestätigen, indem Sie in Ihrem App-Dashboard die neu erstellten Tabellen überprüfen, wie in der Abbildung unten gezeigt.
Nun, da Sie Ihr Backend erstellt und die Datenbanktabellen Ihrer Anwendung hinzugefügt haben, werden Sie die Anwendungslogik implementieren.
Implementieren der Backend-Logik mit KI
Ausgehend von den Anwendungsanforderungen sollte Ihre Anwendung es den Besitzern ermöglichen, ihre Hunde im Zwinger anzumelden, Details wie den Namen des Hundes, die Rasse, das Alter, den Namen des Besitzers und ein Bild zu speichern und einen eindeutigen Abrufcode für den Besitzer zu generieren.
Um diese Anforderungen zu erfüllen, benötigen Sie eine Dienstprogrammfunktion, die einen eindeutigen Abrufcode generiert, und eine, die das Bild des Hundes im Hintergrund hochlädt, um sicherzustellen, dass die Hochladeaufgabe die Reaktionszeit Ihrer Anwendung nicht verlangsamt.
Implementierung von Hilfsfunktionen
Sie können eine Hilfsfunktion erstellen, die einen eindeutigen Code generiert, indem Sie den KI-Agenten mit der folgenden oder einer ähnlichen Aufforderung füttern:
- Erstellen Sie eine Utility-Cloud-Code-Funktion in der App „ Zwingerverwaltung Backend“, die einen eindeutigen Abrufcode für die im Zwinger eingecheckten Hunde generiert.
- Speichern Sie den Code in einer Datei „utils.js“ und machen Sie die Datei für die gesamte Anwendung zugänglich.
Englische Version
- Create a utility cloud code function in the "Kennel Management Backend" app that generates a unique retrieval code for the dogs checked into the kennel.
- Store the code in a `utils.js` file and make the file accessible to the entire application.
Sie sollten eine Antwort erhalten, dass die Cloud-Code-Funktion erstellt wurde, ähnlich der Antwort im Bild unten.
Als Nächstes erstellen Sie die Funktion, die das Bild des Hundes hochlädt und es mit dem entsprechenden Hundedatensatz verknüpft, indem Sie dem KI-Agenten die nachstehende Aufforderung oder etwas Ähnliches eingeben:
- Erstellen Sie eine asynchrone Utility-Cloud-Code-Funktion mit dem Namen `uploadDogImage`, die drei Parameter akzeptiert: `DogName`, `DogImaged` und `DogId`.
- Die Funktion sollte das „DogImage“ hochladen, wobei „DogName“ als Bildname verwendet wird, und sicherstellen, dass das Bild ordnungsgemäß mit dem entsprechenden Hundedatensatz verknüpft ist, der durch „DogId“ identifiziert wird.
- Implementieren Sie eine Fehlerbehandlung, um etwaige Probleme während des Hochladevorgangs zu bewältigen und bestätigen Sie die Verknüpfung mit dem Hundedatensatz.
- Fügen Sie die Datei „utils.js“ hinzu und machen Sie sie für die gesamte Anwendung zugänglich.
Englische Version
- Create an asynchronous utility Cloud Code function named `uploadDogImage` that accepts three parameters: `dogName`, `dogImage`, and `dogId`.
- The function should upload the `dogImage`, using `dogName` as the image name, and ensure that the image is properly associated with the corresponding dog record identified by `dogId`.
- Implement error handling to manage any issues during the upload process and confirm the association with the dog record.
- Add the `utils.js` file and make it accessible to the entire application.
Die obige Aufforderung stellt sicher, dass das Hundebild korrekt hochgeladen und mit dem richtigen Hundedatensatz verknüpft wird, während mögliche Fehler behandelt werden.
Sie sollten eine Antwort erhalten, dass die Funktion erfolgreich erstellt wurde.
Die beiden Utility-Funktionen wurden in einer utils.js-Datei implementiert, um die Modularität des Codes zu wahren. Jetzt haben Sie die beiden Dienstprogramme, die Sie für die Implementierung der Check-in-Funktion für Ihre Anwendung benötigen.
Implementieren der Check-in-Funktion
Um die Check-in-Funktion für Ihre Anwendung zu implementieren, benötigen Sie den Namen des Hundes, sein Alter, seine Rasse, ein Bild und den Benutzernamen des Besitzers.
Dann müssen Sie einen Abrufcode für den Besitzer generieren, den Besuch aufzeichnen, das Bild des Hundes hochladen (im Hintergrund) und den Code an den Besitzer zurückgeben.
Sie können die obige Logik zu Ihrer Backend-Anwendung hinzufügen, indem Sie den KI-Agenten mit der unten stehenden Eingabeaufforderung oder etwas Ähnlichem füttern:
- Erstellen Sie eine asynchrone Cloud-Code-Funktion namens „CheckIn“ in einer „main.js“-Datei, die fünf Parameter aus einem Anforderungskörper akzeptiert: „dogName“ (String), „dogAge“ (Zahl), „dogBreed“ (String), „ownerUsername“ (String) und „dogImage“ (Datei).
- Die Funktion sollte zunächst alle Eingaben validieren und bereinigen, um sicherzustellen, dass sie den erwarteten Typen und Formaten entsprechen.
- Sie sollte dann in der Tabelle „owner“ anhand des „ownerUsername“ nach einem Besitzer suchen und einen neuen Besitzer-Datensatz erstellen, wenn keiner existiert. Als nächstes sollte die Funktion einen neuen Datensatz in der Tabelle „Dogs“ mit dem angegebenen „DogName“, „DogBreed“, „DogAge“ und der entsprechenden „OwnerId“ erstellen.
- Danach sollte sie die Dienstfunktion „generateRetrievalCode“ aufrufen, um einen eindeutigen Abrufcode zu erstellen.
- Die Funktion muss auch das Dienstprogramm `uploadImage` verwenden, um das `dogImage` hochzuladen, wobei dieser Prozess im Hintergrund abläuft, ohne den Rückgabewert abzuwarten.
- Schließlich sollte ein Datensatz in der Tabelle „Visits“ erstellt werden, der relevante Details wie „OwnerId“, „DogId“ und den generierten Abrufcode enthält, und eine Erfolgsmeldung zusammen mit dem Abrufcode an den Benutzer zurückgegeben werden.
- Stellen Sie sicher, dass eine Fehlerbehandlung für Datenbankoperationen und Eingabevalidierung implementiert ist und geben Sie gegebenenfalls entsprechende Fehlermeldungen zurück.
Englische Version
- Create an asynchronous Cloud Code function named `checkIn` in a `main.js` file that accepts five parameters from a request body: `dogName` (String), `dogAge` (Number), `dogBreed` (String), `ownerUsername`(String), and `dogImage` (File).
- The function should first validate and sanitize each input to ensure they conform to expected types and formats.
- It should then search for an owner in the `owner` table using `ownerUsername` and create a new owner record if none exists. Next, the function should create a new record in the `dogs` table with the provided `dogName`, `dogBreed`, `dogAge`, and the corresponding `ownerId`.
- After that, it should call the `generateRetrievalCode` utility function to create a unique retrieval code.
- The function must also use the `uploadImage` utility to upload `dogImage`, running this process in the background without awaiting the return value.
- Finally, it should create a record in the `visits` table that includes relevant details such as the `ownerId`, `dogId`, and the generated retrieval code, and return a success message along with the retrieval code to the user.
- Ensure error handling is implemented for database operations and input validation, returning appropriate error messages where necessary.
Sie sollten eine Antwort erhalten, die anzeigt, dass die Funktion erfolgreich erstellt wurde.
Sie können den vom KI-Agenten erstellten Code in Ihrem App Dashboard → Cloud Code überprüfen und gegebenenfalls ändern, wie in der folgenden Abbildung gezeigt.
Jetzt können Sie neue Hunde in Ihrem Zwinger einchecken. Als nächstes werden Sie die Funktion zur Aufzeichnung von Aktivitäten implementieren.
Implementierung der Funktion „Aktivität aufzeichnen”
Basierend auf den Anforderungen der Anwendung sollte Ihre Anwendung alle Aktivitäten aufzeichnen, an denen der Hund während des Besuchs beteiligt war.
Um die Funktion „Aktivität aufzeichnen“ zu implementieren, müssen Sie den Besuchsdatensatz abrufen und eine neue Aktivität mit den erforderlichen Informationen erstellen.
Sie können die obige Logik zu Ihrer Backend-Anwendung hinzufügen, indem Sie den KI-Agenten mit der unten stehenden Eingabeaufforderung oder etwas Ähnlichem füttern:
- Erstellen Sie eine asynchrone Funktion mit dem Namen `recordActivity`, die drei Parameter aus einem Request Body akzeptiert: `visitId`, `type` und `description`.
- Sie sollte zuerst prüfen, ob ein Besuch mit der angegebenen `visitId` in der Datenbank existiert.
- Wenn der Besuch nicht gefunden wird, sollte eine entsprechende Fehlermeldung zurückgegeben werden.
- Wenn der Besuch existiert, sollte die Funktion einen neuen Aktivitätsdatensatz mit der visitId, dem Typ und der Beschreibung erstellen, die Zeit auf das aktuelle Datum setzen,
und nach erfolgreicher Erstellung eine Erfolgsmeldung zurückgeben.
- Stellen Sie sicher, dass eine Fehlerbehandlung für Datenbankoperationen und Eingabevalidierung implementiert ist, und geben Sie gegebenenfalls entsprechende Fehlermeldungen zurück.
Englische Version
- Create an asynchronous function called `recordActivity` that accepts three parameters from a request body: `visitId`, `type`, and `description`.
- It should first check if a visit with the specified `visitId` exists in the database.
- If the visit is not found, return an appropriate error message.
- If the visit exists, the function should create a new activity record with the visitId, type, and description, set the time to the current date,
and return a success message, after a successful creation.
- Ensure error handling is implemented for database operations and input validation, returning appropriate error messages where necessary.
Sie können Ihr Dashboard überprüfen, um sicherzustellen, dass diese Funktion korrekt implementiert wurde, und ggf. Änderungen vornehmen.
Implementierung der Checkout-Funktion
Um die Checkout-Funktion zu implementieren, müssen Sie den Besuchsdatensatz mit dem retrieval_code abrufen, die zugehörigen Angaben zu Hund und Besitzer einbeziehen, die check_out_time aktualisieren und eine Antwort mit den Informationen zu Hund und Besitzer sowie den Check-in- und Check-out-Zeiten des Besuchs zurückgeben.
Sie können die obige Logik zu Ihrer Backend-Anwendung hinzufügen, indem Sie den KI-Agenten mit der unten stehenden Eingabeaufforderung oder etwas Ähnlichem füttern:
- Erstellen Sie eine asynchrone Cloud-Code-Funktion namens „CheckOut“, die Hunde- und Besuchsdetails auf der Grundlage eines „Retrieval_code“ abruft, der aus dem Anforderungskörper extrahiert wurde.
- Die Funktion sollte den entsprechenden Besuchsdatensatz in der Tabelle „ Besuch ‚ abrufen und damit verbundene Hundedetails aus der Tabelle ‘ Hund ‚ und der Tabelle ‘ Besitzer “ einschließen.
- Die Funktion sollte spezifische Hundeattribute wie „Name“, „Rasse“, „Alter“ und Bild auswählen.
- Wird kein Besuch gefunden, wird eine Meldung zurückgegeben, die besagt, dass der `retrieval_code` ungültig ist.
- Nach dem erfolgreichen Auffinden des Besuchs sollte die Funktion die „check_out_time“ auf das aktuelle Datum aktualisieren und den aktualisierten Besuchsdatensatz speichern.
- Schließlich ist eine Antwort zu strukturieren, die die Informationen über den Hund
zusammen mit den Angaben zum Besitzer sowie die „check_in_time“ und „check_out_time“ des Besuchs.
- Implementieren Sie eine Fehlerbehandlung, um alle Probleme während des Prozesses abzufangen und zu protokollieren,
im Falle eines Fehlers eine entsprechende Fehlermeldung zurückzugeben.
Englische Version
- Create an asynchronous cloud code function called `checkOut` that retrieves dog and visit details based on a `retrieval_code` extracted from the request body.
- The function should fetch the corresponding visit record in the `Visit` table and include related dog details from the `Dog` table and the `Owner` table.
- The function should select specific dog attributes such as `name`, `breed`, `age` and image.
- If no visit is found, return a message indicating that the `retrieval_code` is invalid.
- Upon successfully finding the visit, the function should update the `check_out_time` to the current date and save the updated visit record.
- Finally, structure a response that includes the dog's information
along with its owner details, as well as the visit's `check_in_time` and `check_out_time`.
- Implement error handling to catch and log any issues during the process,
returning a relevant error message in case of failure.
Sie können den vom KI-Agenten erstellten Code in Ihrem App Dashboard → Cloud Code → main.js einsehen.
Wenn die Kassenfunktion vollständig implementiert ist, haben Sie die Anforderungen an eine einfache Anwendung für die Zwingerverwaltung erfüllt.
Zusammenfassung
In diesem Artikel erstellen Sie eine skalierbare Zwingerverwaltungsanwendung, die Check-Ins unterstützt, die Aktivitäten der Hunde während der Besuche verfolgt und es den Besitzern ermöglicht, ihre Hunde am Ende des Besuchs mithilfe von KI zurückzuholen.
Um die Skalierbarkeit Ihrer Anwendung zu verbessern, haben Sie eine normalisierte Datenbank entwickelt, um sicherzustellen, dass Ihre Abfragen nicht zu langsam sind.
Außerdem haben Sie langwierige Aufgaben wie das Hochladen von Hundebildern an eine Funktion delegiert, die im Hintergrund abläuft, und den Code in Dateien aufgeteilt, um ihn leichter warten zu können.
Wenn Ihr Backend fertig ist, können Sie es mit einer Benutzeroberfläche verbinden, die mit einer Frontend-Bibliothek wie React, Svelte oder Vue erstellt wurde, und es mit Docker auf Plattformen wie der Back4app Web Deployment Platform bereitstellen.