Despliegue Local y en AWS de Aplicaciones con Docker y Postman
Clase 27 de 35 • Curso de MLOPS: Despliegue de Modelos de Machine Learning
Resumen
¿Cómo estructurar tu repositorio para un despliegue exitoso?
Cuando trabajas con aplicaciones complejas, es fundamental mantener una estructura de repositorio clara y bien organizada. Esto es especialmente importante si estás utilizando herramientas como Docker para el despliegue. En nuestro caso, todas las configuraciones e implementaciones deben manejarse en una rama específica de deploy para evitar confusiones. Aquí te mostramos cómo estructurar tu aplicación:
-
Directorio
app
: Debes mantener los archivos esenciales dentro del directorioapp
: -
__init__.py
: Vacío, para designar el paquete. -
config
: Configuraciones clave de la aplicación. -
convectorizer.pickle
: Artefacto vital para transformar datos a representación matricial para el modelo. -
db.py
: Configuraciones de la base de datos, incluyendo campos y tipos de datos. -
main.py
: Encapsula toda la lógica de la aplicación. -
prestart.sh
: Inicializa la base de datos, indicando el puerto 5432. -
Archivos externos a
app
: -
Dockerfile
ydocker-compose.yml
: Para la estructura de Docker. -
Model
: Usado para leer al generar predicciones en batch. -
requerimientos
: Todas las dependencias necesarias. -
Archivo para instancias en AWS: Configura la instancia, actualiza, y gestiona conexiones.
¿Cómo proceder con el despliegue local?
Desplegar una aplicación localmente antes del servidor final es un buen ejercicio para asegurar que todo funciona como se espera. A continuación, te guiamos en el proceso:
- Preparar la terminal:
- Asegúrate de estar en la correcta rama de trabajo en tu repositorio.
- Construir la imagen Docker:
-
Corre el siguiente comando:
docker compose build
-
Este comando descarga requisitos y copia archivos de la aplicación.
- Levantar la aplicación:
- Usa
docker compose up
para ejecutar.
- Corregir errores:
- Si encuentras un error, como el de indentación en
db.py
línea 29, corrígelo. Requiere ajustar docstrings o llaves mal puestas.
- Validación con Postman:
- Cambia el método a POST.
- Introduce el entry point: IP local, puerto 5004 y método
predict
. - Define el cuerpo como lista de diccionarios con campos
client name
ytext
.
¿Cómo realizar pruebas de predicciones?
Una vez la aplicación está funcionando localmente, será momento de probar las predicciones con Postman. Estos son los pasos que debes seguir:
-
Enviar solicitudes:
-
Usa el método POST a la API con el cuerpo de prueba.
-
Comprueba la estructura del
entry point
y asegúrate de que los datos están correctamente formateados. -
Verifica las respuestas:
-
Tras enviar la solicitud, deberías recibir un diccionario con el valor de
prediction
. -
Si el
status code
es 200, indica que la aplicación funcionó correctamente.
¿Cómo conectarse a la base de datos y validar datos?
Para garantizar que tus predicciones se almacenan adecuadamente en la base de datos, sigue estos pasos:
-
Usa tu gestor favorito de base de datos:
-
En este caso, puedes usar Visual Studio Code con la extensión de conexiones.
-
Configura tu conexión con
localhost
, puerto 5433 y credenciales definidas en el Dockerfile. -
Verifica los datos:
-
Examina los registros almacenados, como
ID
,client name
,prediction
. -
Confirma que las predicciones han sido decodificadas correctamente usando
label mapping
.
Esta estructura y proceso ayudan a garantizar que el despliegue se realiza sin problemas, asegurando una transición fluida de local a producción. ¡No dudes en seguir experimentando y afinando estos pasos para perfeccionar tus despliegues!