Aprenda a crear un backend escalable con IA

Un backend “escalable” es un backend que puede manejar una mayor carga sin una disminución considerable en el rendimiento.

La construcción de un backend escalable implica varios procesos y consideraciones, como el diseño de la base de datos y la estrategia de implementación.

En este artículo, aprenderá cómo construir un backend escalable con la ayuda de inteligencia artificial (IA).

¿Qué hace que un backend sea escalable?

Varios factores implementados durante el ciclo de vida del desarrollo de software trabajan juntos para hacer que un backend sea escalable.

Un factor que contribuye a la escalabilidad de un backend es la velocidad de las consultas de la base de datos.

Las consultas lentas aumentan el tiempo de respuesta de su servidor y afectan su capacidad de procesar múltiples solicitudes simultáneamente.

Puede hacer sus consultas más rápidas implementando un diseño de esquema adecuado y escribiendo consultas eficientes.

El procesamiento asincrónico es otro factor que puede hacer que un backend sea escalable. Las tareas que consumen muchos recursos pueden bloquear los subprocesos de ejecución y limitar la capacidad del servidor para procesar solicitudes simultáneas.

Puede resolver este problema delegando tareas que consumen muchos recursos, como cálculos grandes y cargas de archivos, a trabajos en segundo plano.

Otro factor es la estrategia de implementación. Debe implementar su backend utilizando una estrategia de implementación escalable a través de servicios como Back4app.

Por ejemplo, los nuevos contenedores se activan automáticamente a medida que aumenta el tráfico y distribuyen la carga entre múltiples instancias sin intervención manual.

De manera similar, el sistema se reduce a medida que disminuye la demanda, liberando recursos no utilizados.

En este tutorial, creará una aplicación de gestión de perreras que implementa todos los factores mencionados anteriormente para que sea escalable.

Diseño de un backend escalable con IA

Como se mencionó anteriormente, creará una aplicación de gestión de perreras. Estos son los requisitos de la aplicación:

  • Su aplicación permitirá a los propietarios registrar a sus perros en su perrera.
  • Cuando un propietario registra a su perro en su perrera, su aplicación almacenará detalles sobre el perro, como su nombre, raza, edad, nombre del propietario e imagen. Luego, generará un código único para el propietario.
  • El código único que recibe el propietario es la única forma de recuperar a su perro de su perrera al final de la visita.
  • Durante la visita a su perrera, llevará un registro de todas las actividades en las que participó el perro. Este tutorial solo incluirá la alimentación, la medicación y el aseo.
  • Al final de la visita, el propietario proporcionará el código único que recibió al realizar el check-in y recuperará su(s) perro(s).

El primer paso para hacer realidad los requisitos anteriores es diseñar una base de datos normalizada con poca o ninguna redundancia de datos.

Diseñará y creará este esquema de base de datos con la ayuda del Agente de IA de Back4app, que actuará como un generador de back-end de IA.

El agente de inteligencia artificial de Back4app

El agente de inteligencia artificial de Back4app es un LLM que interactúa con los productos de Back4app, la plataforma backend y la plataforma de implementación web.

Le permite interactuar con estos productos mediante indicaciones y le ayudará a crear un backend escalable con IA.

Para acceder al agente de IA, necesitas una cuenta de Back4app. Si no tiene una, puede registrarse gratis .

Inicie sesión en su cuenta de Back4app y haga clic en el enlace “Agente de IA” en la barra de navegación de su panel de control.

Back4app app dashboard navbar with the AI Agent link highlighted

Al hacer clic en el enlace, accederá a la página del Agente de IA, como se muestra en la imagen a continuación.

Back4app AI agent start page

Puede ingresar varias indicaciones en esta página, como por ejemplo una para crear una nueva aplicación BaaS en su cuenta Back4app.

Construya un backend con IA

Para crear una nueva aplicación de backend en Back4app, puede ingresar el siguiente mensaje o algo similar en el agente de IA.

- Crear una nueva aplicación backend llamada "Backend de gestión de perreras"

Versión en inglés.

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

Debería recibir una respuesta que indique que la aplicación se ha creado correctamente.

AI agent response with redacted sensitive information

Puede ver la aplicación creada en el panel de Back4app, como se muestra en la imagen a continuación.

Default Back4app dashboard

Como se muestra en la imagen de arriba, la base de datos de su nueva aplicación backend está vacía, excepto por las clases predeterminadas _User y _Role.

A continuación, diseñará y agregará el esquema de la base de datos a su aplicación backend.

Diseño de su base de datos

Para diseñar un esquema de base de datos normalizado para los requisitos de su aplicación mencionados anteriormente, ingrese el mensaje a continuación o algo similar en el agente de IA.

- Diseñar un esquema de base de datos normalizado para una aplicación de gestión de perreras.

- La aplicación almacena detalles del perro: nombre, raza, edad, un nombre de usuario único del propietario, detalles de contacto del propietario y una imagen;

- Cuando un propietario realiza el check-in y genera un código único para que el propietario recupere al perro.

- Realiza un seguimiento de las actividades durante la visita (alimentación, medicación, aseo).
El propietario proporciona el código único para recuperar a su perro al final de la visita.

- Asegúrese de que las relaciones entre entidades como perros, dueños, visitas, actividades y el código de recuperación estén correctamente estructuradas.

Versión en inglés.

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

El mensaje anterior debería devolver un esquema de base de datos similar al que se visualiza a continuación.

Visual representation of a normalized database schema

El esquema de base de datos anterior tiene cuatro tablas: Dueños, perros, visitas y actividades. Un dueño puede tener varios perros (uno a muchos), pero cada perro pertenece a un solo propietario, vinculado a través de una clave externa en la tabla perros.

De manera similar, un perro puede tener múltiples visitas (de una a muchas) a lo largo del tiempo, cada una de las cuales es específica para ese perro y se rastrea en la tabla de visitas a través de una clave externa.

Además, cada visita puede involucrar varias actividades (una a muchas), como alimentación, aseo o medicación, cada una vinculada a una visita específica a través de la clave externa visit_id en la tabla de actividades.

Ahora que tiene el diseño de su base de datos, solicitarás a la IA que cree la base de datos en su backend usando un mensaje similar al que aparece a continuación.

- Crear la base de datos diseñada en la aplicación backend “Backend de gestión de perreras”.

Versión en inglés.

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

Debería recibir una respuesta que indique que la base de datos se creó correctamente.

Puede confirmarlo consultando el panel de control de su aplicación para ver las tablas recién creadas, como se muestra en la siguiente imagen.

Back4app dashboard highlighting newly created database tables.

Ahora que ha creado su backend y agregado las tablas de base de datos de su aplicación, implementará la lógica de la aplicación.

Implementando la lógica de backend con IA

Según los requisitos de la aplicación, su aplicación debe permitir a los propietarios registrar a sus perros en la perrera, almacenar detalles como el nombre del perro, la raza, la edad, el nombre del propietario y la imagen, y generar un código de recuperación único para el propietario.

Para implementar estos requisitos, necesita una función de utilidad que genere un código de recuperación único y que cargue la imagen del perro en segundo plano para garantizar que la tarea de carga no ralentice el tiempo de respuesta de su aplicación.

Implementación de funciones de utilidad

Puede crear una función de utilidad que genere un código único introduciendo el mensaje a continuación o algo similar al Agente de IA:

- Cree una función de código de nube de utilidad en la aplicación "Backend de gestión de perreras" que genere un código de recuperación único para los perros registrados en la perrera.

-Almacene el código en un archivo `utils.js` y haga que el archivo sea accesible para toda la aplicación.

Versión en inglés.

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

Debería recibir una respuesta indicando que se ha creado la función de código de nube, similar a la respuesta en la imagen a continuación.

Back4app AI Agent page showing the response to a prompt

A continuación, genere la función que carga la imagen del perro y la asocia con el registro del perro correspondiente introduciendo el mensaje a continuación o algo similar al Agente de IA:

- Cree una función de código en la nube de utilidad asincrónica denominada `uploadDogImage` que acepte tres parámetros: `dogName`, `dogImage` y `dogId`.

- La función debe cargar la `dogImage`, utilizando `dogName` como nombre de la imagen, y garantizar que la imagen esté correctamente asociada con el registro del perro correspondiente identificado por `dogId`.

- Implementar el manejo de errores para gestionar cualquier problema durante el proceso de carga y confirmar la asociación con el registro del perro.

- Agregue el archivo `utils.js` y hágalo accesible a toda la aplicación.

Versión en inglés.

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

El mensaje anterior garantiza que la imagen del perro se cargue correctamente y se asocie con el registro del perro correcto mientras se manejan posibles errores.

Debería recibir una respuesta indicando que la función se creó correctamente.

Las dos funciones de utilidad se implementaron en un archivo utils.js para mantener la modularidad del código.

Ahora, tiene las dos funciones de utilidad necesarias para implementar la función de registro para su aplicación.

Implementación de la función de check-in

Para implementar la función de check-in en su aplicación, necesita el nombre del perro, la edad, la raza, la imagen y el nombre de usuario del propietario.

Luego, debe generar un código de recuperación para el propietario, registrar la visita, cargar la imagen del perro (en segundo plano) y devolver el código al propietario.

Puede agregar la lógica anterior a su aplicación backend ingresando el mensaje a continuación o algo similar al Agente de IA:

- Cree una función asincrónica de Cloud Code llamada `checkIn` en un archivo `main.js` que acepte cinco parámetros de un cuerpo de solicitud: `dogName` (Cadena), `dogAge` (Número), `dogBreed` (Cadena), `ownerUsername` (Cadena) y `dogImage` (Archivo).

- La función primero debe validar y desinfectar cada entrada para garantizar que se ajuste a los tipos y formatos esperados.

- A continuación, debe buscar un propietario en la tabla `owner` utilizando `ownerUsername` y crear un nuevo registro de propietario si no existe ninguno. A continuación, la función debe crear un nuevo registro en la tabla `dogs` con los `dogName`, `dogBreed`, `dogAge` y el `ownerId` correspondientes.

- Después de eso, debe llamar a la función de utilidad `generateRetrievalCode` para crear un código de recuperación único.

- La función también debe utilizar la utilidad `uploadImage` para cargar `dogImage`, ejecutando este proceso en segundo plano sin esperar el valor de retorno.

- Por último, debe crear un registro en la tabla 'visitas' que incluya detalles relevantes como 'ownerId', 'dogId' y el código de recuperación generado, y devolver un mensaje de éxito junto con el código de recuperación al usuario.

- Garantizar que se implemente el manejo de errores para las operaciones de la base de datos y la validación de entradas, devolviendo mensajes de error apropiados cuando sea necesario.

Versión en inglés.

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

Debería recibir una respuesta indicando que la función se creó correctamente.

Puede revisar el código creado por el agente de IA y modificarlo si es necesario en su App Dashboard → Cloud Code,como se muestra en la imagen a continuación.

Back4app cloud code page highlighting the cloud code button and the files in the cloud folder

Ahora, puede registrar nuevos perros en su perrera. A continuación, implementará la función de registro de actividad.

Implementación de la función de registro de actividad

Según los requisitos de la solicitud, su solicitud debe realizar un seguimiento de todas las actividades en las que participó el perro durante la visita.

Para implementar la función de registro de actividad, debe obtener el registro de visita y crear una nueva actividad con la información requerida.

Puede agregar la lógica anterior a su aplicación backend ingresando el mensaje a continuación o algo similar al Agente de IA:

- Cree una función asincrónica llamada `recordActivity` que acepte tres parámetros del cuerpo de una solicitud: `visitId`, `type` y `description`.

- Primero debe verificar si existe una visita con el `visitId` especificado en la base de datos.

- Si no se encuentra la visita, devuelve un mensaje de error apropiado.

- Si la visita existe, la función debe crear un nuevo registro de actividad con el visitId, tipo y descripción, establecer la hora a la fecha actual, y devolver un mensaje de éxito, después de una creación exitosa.

- Garantizar que se implemente el manejo de errores para las operaciones de la base de datos y la validación de entradas, devolviendo mensajes de error apropiados cuando sea necesario.

Versión en inglés.

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

Puede revisar su panel de control para asegurarse de que esta función se haya implementado correctamente y realizar cambios si es necesario.

Implementación de la función de pago

Para implementar la función de pago, debe obtener el registro de la visita utilizando retrieval_code, incluir los detalles relacionados del perro y el dueño, actualizar check_out_time y devolver una respuesta con la información del perro y el dueño, así como los horarios de entrada y salida de la visita.

Puede agregar la lógica anterior a su aplicación backend ingresando el mensaje a continuación o algo similar al Agente de IA:

- Cree una función de código en la nube asincrónica llamada `checkOut` que recupere detalles del perro y de la visita basándose en un `retrieval_code` extraído del cuerpo de la solicitud.

- La función debe obtener el registro de visita correspondiente en la tabla "Visita" e incluir detalles del perro relacionados de la tabla "Perro" y la tabla "Propietario".

- La función debe seleccionar atributos específicos del perro, como "nombre", "raza", "edad" e imagen.

- Si no se encuentra ninguna visita, devuelve un mensaje indicando que el `retrieval_code` no es válido.

- Luego de encontrar exitosamente la visita, la función debe actualizar el `check_out_time` a la fecha actual y guardar el registro de visita actualizado.

- Por último, estructura una respuesta que incluya la información del perro, junto con los datos de su propietario, así como el `check_in_time` y el `check_out_time` de la visita.

- Implementar el manejo de errores para detectar y registrar cualquier problema durante el proceso devolviendo un mensaje de error relevante en caso de falla.

Versión en inglés.

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

Puede revisar el código creado por el agente de IA en su App Dashboard → Cloud Code  → main.js.

Back4app Cloud Code Dashboard showing the contents of the main.js file

Con la función de pago completamente implementada, ha completado los requisitos de la aplicación para una aplicación de gestión de perreras simple.

Conclusión

En este artículo, creará una aplicación de gestión de perreras escalable que admite registros, rastrea las actividades de los perros durante las visitas y permite a los propietarios recuperar a sus perros al final de la visita mediante IA.

Para mejorar la capacidad de escalabilidad de su aplicación, diseñó una base de datos normalizada para garantizar que sus consultas no sean lentas.

También delegó tareas de larga ejecución, como la carga de la imagen del perro, a una función que se ejecuta en segundo plano y dividió el código en archivos para facilitar su mantenimiento.

Una vez completado el backend, puede conectarlo a una interfaz de usuario creada con una biblioteca frontend como ReactSvelte o Vue e implementarlo usando Docker en plataformas como Back4app Web Deployment Platform.


Leave a reply

Your email address will not be published.