Apprendre à construire un backend évolutif avec l’IA

Un backend “évolutif” est un backend qui peut supporter une charge accrue sans baisse considérable des performances.

La mise en place d’un backend évolutif implique plusieurs processus et considérations, tels que la conception de la base de données et la stratégie de déploiement.

Dans cet article, vous apprendrez comment construire un backend évolutif à l’aide de l’intelligence artificielle (IA).

Qu’est-ce qui rend un backend évolutif ?

Différents facteurs mis en œuvre au cours du cycle de développement du logiciel se conjuguent pour rendre un backend évolutif.

L’un des facteurs contribuant à l’évolutivité d’un backend est la vitesse des requêtes de la base de données.

Les requêtes lentes augmentent le temps de réponse de votre serveur et affectent sa capacité à traiter plusieurs requêtes simultanément.

Vous accélérez vos requêtes en mettant en œuvre un schéma approprié et en écrivant des requêtes efficaces.

Le traitement asynchrone est un autre facteur qui peut rendre un backend évolutif. Les tâches gourmandes en ressources peuvent bloquer les fils d’exécution et limiter la capacité du serveur à traiter des demandes simultanées.

Vous pouvez résoudre ce problème en déléguant les tâches gourmandes en ressources, telles que les gros calculs et les téléchargements de fichiers, à des tâches d’arrière-plan.

Un autre facteur est votre stratégie de déploiement. Vous devez déployer votre backend en utilisant une stratégie de déploiement évolutive via des services tels que Back4app.

Par exemple, de nouveaux conteneurs sont automatiquement mis en service lorsque le trafic augmente, ce qui permet de répartir la charge sur plusieurs instances sans intervention manuelle.

De même, le système s’adapte à la baisse de la demande, libérant ainsi les ressources inutilisées.

Dans ce tutoriel, vous construirez une application de gestion de chenil qui met en œuvre tous les facteurs susmentionnés pour la rendre évolutive.

Concevoir un backend évolutif avec l’IA

Comme indiqué ci-dessus, vous allez créer une application de gestion de chenil. Voici les exigences de l’application :

  • Votre application permettra aux propriétaires d’enregistrer leurs chiens dans votre chenil.
  • Lorsqu’un propriétaire enregistre son chien dans votre chenil, votre application stocke des informations sur le chien, telles que son nom, sa race, son âge, le nom du propriétaire et son image. Elle génère ensuite un code unique pour le propriétaire.
  • Le code unique que le propriétaire reçoit est le seul moyen de récupérer son chien dans votre chenil à la fin de la visite.
  • Pendant la visite de votre chenil, vous noterez toutes les activités auxquelles le chien a participé. Ce tutoriel ne portera que sur l’alimentation, les médicaments et le toilettage.
  • À la fin de la visite, le propriétaire fournira le code unique qu’il a reçu lors de l’enregistrement et récupérera son (ses) chien(s).

La première étape de l’actualisation des exigences ci-dessus consiste à concevoir une base de données normalisée avec peu ou pas de redondance de données.

Vous concevrez et créerez ce schéma de base de données avec l’aide de l’agent d’IA Back4app qui agira comme un générateur de backend d’IA.

L’agent d’intelligence artificielle de Back4app

Le Back4app AI Agent est un LLM qui s’interface avec les produits Back4app, la Backend Platform et la Web Deployment Platform.

Il vous permet d’interagir avec ces produits à l’aide d’invites et vous aidera à créer un backend évolutif grâce à l’IA.

Pour accéder à l’agent AI, vous avez besoin d’un compte Back4app. Si vous n’en avez pas, vous pouvez vous inscrire gratuitement.

Connectez-vous à votre compte Back4app et cliquez sur le lien “AI Agent” dans la barre de navigation de votre tableau de bord.

Barre de navigation du tableau de bord de l'application Back4app avec le lien AI Agent mis en évidence

En cliquant sur le lien, vous accéderez à la page de l’agent AI, comme le montre l’image ci-dessous.

Page d'accueil de l'agent Back4app AI

Vous pouvez saisir diverses invites sur cette page, comme celle de créer une nouvelle application BaaS sur votre compte Back4app.

Construire un backend avec l’IA

Pour créer une nouvelle application backend sur Back4app, vous pouvez saisir l’invite ci-dessous ou quelque chose de similaire dans l’agent AI.

- Create a new backend application called "Kennel Management Backend"

Vous devriez obtenir une réponse indiquant que l’application a été créée avec succès.

Réponse de l'agent d'IA avec des informations sensibles expurgées

Vous pouvez voir l’application créée sur votre tableau de bord Back4app, comme le montre l’image ci-dessous.

Tableau de bord par défaut de Back4app

Comme le montre l’image ci-dessus, la base de données de votre nouvelle application backend est vide, à l’exception des classes par défaut _User et _Role.

Ensuite, vous allez concevoir et ajouter le schéma de la base de données à votre application backend.

Conception de la base de données

Pour concevoir un schéma de base de données normalisé répondant aux exigences de votre application, saisissez l’invite ci-dessous ou quelque chose de similaire dans l’agent AI.

- 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.

L’invite ci-dessus devrait renvoyer un schéma de base de données similaire à celui représenté ci-dessous.

Représentation visuelle d'un schéma de base de données normalisé

Le schéma de base de données ci-dessus comporte quatre tables : propriétaires, chiens, visites et activités. Un propriétaire peut avoir plusieurs chiens (one-to-many), mais chaque chien n’appartient qu’à un seul propriétaire, lié par une clé étrangère dans la table dogs.

De même, un chien peut avoir plusieurs visites (une à plusieurs) au fil du temps, chacune étant spécifique à ce chien et suivie dans la table des visites par le biais d’une clé étrangère.

En outre, chaque visite peut impliquer plusieurs activités (one-to-many), telles que l’alimentation, la toilette ou les médicaments, chacune étant liée à une visite spécifique par le biais de la clé étrangère visit_id dans la table des activités.

Maintenant que vous avez conçu votre base de données, vous allez demander à l’IA de créer la base de données dans votre backend à l’aide d’une invite similaire à celle ci-dessous.

- Create the designed database in the backend app "Kennel Management Backend".

Vous devriez obtenir une réponse indiquant que la base de données a été créée avec succès. Vous pouvez le confirmer en vérifiant les tables nouvellement créées dans le tableau de bord de votre application, comme le montre l’image ci-dessous.

Tableau de bord Back4app mettant en évidence les tables de la base de données nouvellement créées.

Maintenant que vous avez créé votre backend et ajouté les tables de la base de données de votre application, vous allez mettre en œuvre la logique de l’application.

Mettre en œuvre votre logique de backend avec l’IA

D’après les exigences de l’application, celle-ci doit permettre aux propriétaires d’enregistrer leurs chiens dans le chenil, de stocker des informations telles que le nom du chien, sa race, son âge, le nom du propriétaire et une image, et de générer un code de récupération unique pour le propriétaire.

Pour répondre à ces exigences, vous avez besoin d’une fonction utilitaire qui génère un code de récupération unique et d’une fonction qui télécharge l’image du chien en arrière-plan afin de s’assurer que la tâche de téléchargement ne ralentit pas le temps de réponse de votre application.

Mise en œuvre des fonctions utilitaires

Vous pouvez créer une fonction utilitaire qui génère un code unique en envoyant l’invite ci-dessous ou quelque chose de similaire à l’agent AI :

- 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.

Vous devriez obtenir une réponse indiquant que la fonction de code cloud a été créée, semblable à la réponse de l’image ci-dessous.

Page de l'agent AI de Back4app montrant la réponse à une invite

Ensuite, générez la fonction qui télécharge l’image du chien et l’associe à l’enregistrement du chien correspondant en envoyant l’invite ci-dessous ou quelque chose de similaire à l’agent AI :

- 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.

L’invite ci-dessus permet de s’assurer que l’image du chien est téléchargée correctement et associée au bon dossier, tout en gérant les éventuelles erreurs.

Vous devriez obtenir une réponse indiquant que la fonction a été créée avec succès.

Les deux fonctions utilitaires ont été implémentées dans un fichier utils.js afin de maintenir la modularité du code. Vous disposez maintenant des deux fonctions utilitaires nécessaires à la mise en œuvre de la fonctionnalité de check-in pour votre application.

Mise en œuvre de la fonction d’enregistrement

Pour mettre en œuvre la fonction d’enregistrement dans votre application, vous avez besoin du nom, de l’âge, de la race et de l’image du chien, ainsi que du nom d’utilisateur du propriétaire.

Vous devez ensuite générer un code de récupération pour le propriétaire, enregistrer la visite, télécharger l’image du chien (en arrière-plan) et renvoyer le code au propriétaire.

Vous pouvez ajouter la logique ci-dessus à votre application dorsale en envoyant l’invite ci-dessous ou quelque chose de similaire à l’agent AI :

- 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.

Vous devriez recevoir une réponse indiquant que la fonction a été créée avec succès.

Vous pouvez examiner le code créé par l’agent IA et le modifier si nécessaire sur votre App DashboardCloud Code, comme le montre l’image ci-dessous.

Page du code cloud de Back4app mettant en évidence le bouton code cloud et les fichiers dans le dossier cloud

Vous pouvez désormais enregistrer de nouveaux chiens dans votre chenil. Ensuite, vous allez mettre en œuvre la fonction d’enregistrement des activités.

Mise en œuvre de la fonctionnalité d’enregistrement des activités

En fonction des exigences de la demande, votre demande doit tenir compte de toutes les activités auxquelles le chien a participé au cours de la visite.

Pour mettre en œuvre la fonction d’activité d’enregistrement, vous devez récupérer l’enregistrement de la visite et créer une nouvelle activité avec les informations requises.

Vous pouvez ajouter la logique ci-dessus à votre application dorsale en envoyant l’invite ci-dessous ou quelque chose de similaire à l’agent AI :

- 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.

Vous pouvez vérifier votre tableau de bord pour vous assurer que cette fonction a été mise en œuvre correctement et apporter des modifications si nécessaire.

Mise en œuvre de la fonctionnalité de paiement

Pour mettre en œuvre la fonction d’enregistrement des sorties, vous devez récupérer l’enregistrement de la visite à l’aide du code d'enregistrement, inclure les informations relatives au chien et au propriétaire, mettre à jour l’heure d'enregistrement des sorties et renvoyer une réponse contenant les informations relatives au chien et au propriétaire, ainsi que les heures d’enregistrement et d’enregistrement de la visite.

Vous pouvez ajouter la logique ci-dessus à votre application dorsale en envoyant l’invite ci-dessous ou quelque chose de similaire à l’agent AI :

- 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.

Vous pouvez consulter le code créé par l’agent d’IA sur votre App DashboardCloud Codemain.js.

Back4app Cloud Code Dashboard montrant le contenu du fichier main.js

Avec la mise en œuvre complète de la fonction d’encaissement, vous avez rempli les conditions requises pour une application simple de gestion de chenil.

Conclusion

Dans cet article, vous créez une application évolutive de gestion de chenil qui prend en charge les enregistrements, suit les activités des chiens pendant les visites et permet aux propriétaires de récupérer leurs chiens à la fin de la visite à l’aide de l’IA.

Pour améliorer la capacité de votre application à évoluer, vous avez conçu une base de données normalisée afin de vous assurer que vos requêtes ne sont pas lentes.

Vous avez également délégué les tâches de longue haleine, comme le téléchargement de l’image du chien, à une fonction qui s’exécute en arrière-plan, et vous avez divisé le code en fichiers pour en faciliter la maintenance.

Une fois votre backend terminé, vous pouvez le connecter à une interface utilisateur construite avec une bibliothèque frontale comme React, Svelte ou Vue et le déployer à l’aide de Docker dans des plateformes comme la plateforme de déploiement web Back4app.


Leave a reply

Your email address will not be published.