Implementación de Modelos en Entornos Productivos con AWS y Docker
Todos los cursos GRATIS
Se acaba en:
:::
Resumen
¿Cómo simular un entorno productivo en AWS?
Simular un entorno productivo es crucial para asegurarse de que nuestra aplicación pueda funcionar correctamente en un ambiente real. AWS ofrece un servicio adecuado para este propósito, utilizando instancias EC2. Aquí te explicamos cómo configurar una instancia EC2 para simular un entorno productivo:
Configuración de la instancia EC2:
Elige un tamaño de instancia mínimo de small basado en Ubuntu.
Deja los demás parámetros por defecto.
Reglas de seguridad:
Configura la conexión por SSH.
Abre los puertos necesarios:
5004 para la aplicación desde cualquier IP.
Puerto de la base de datos Postgres para que las predicciones se almacenen automáticamente.
3000 relacionado con Grafana para monitoreo.
Conexión a la instancia:
Genera y descarga las llaves para conexión SSH.
Modifica los puertos mencionados.
Asegúrate de que las llaves están en el mismo directorio al abrir la terminal.
¿Qué debes tener en cuenta antes de hacer pruebas en producción?
Antes de comenzar a realizar pruebas en un entorno productivo, es esencial asegurar la correcta configuración de los permisos y preparar el entorno con Docker.
Permisos del servidor:
Dale permisos a la instancia de AWS en tu repositorio de producción.
Genera llaves SSH para el acceso.
Asegúrate de que el servidor tiene acceso a los recursos necesarios.
Configuración con Docker:
Realiza una actualización de la instancia y la instalación de Docker.
Sigue los comandos detallados en el archivo de recursos del repositorio.
Ejecuta Docker Compose Build y Docker Compose App para construir y levantar la imagen.
¿Cómo crear y utilizar colecciones y ambientes en Postman?
El uso de Postman para simular un entorno productivo y realizar pruebas es una herramienta poderosa. Aquí te explicamos cómo configurar los ambientes necesarios.
Crear una colección:
En Postman, crea una nueva colección, por ejemplo, mleopsticket.
Añade un nuevo método POST utilizando la IP y puerto configurados.
Configurar ambientes:
Define dos ambientes: local y productivo.
En el ambiente local, usa tu IP pública con el puerto configurado.
Para el ambiente productivo, utiliza la dirección IP de tu instancia en AWS.
Realizar pruebas:
Especifica el entorno al hacer la petición.
Asegúrate de alternar entre el entorno local y productivo al realizar las pruebas.
Usar Postman para realizar estas pruebas te permite asegurarte de que el servidor responde correctamente a las solicitudes en ambos entornos. Esto no solo ayuda a verificar el correcto funcionamiento sino también a identificar posibles mejoras.
Una alternativa de despliegue más económica (incluso gratuita), es trabajar bajo una arquitectura serverless, muy útil para este tipo de aplicaciones livianas de un solo método. Por ejemplo haciendo un push de la imagen de Docker a un ECR y crear una función Lambda desde esa imagen; para consumir la función puedes integrarla directamente con API Gateway o crear el endpoint directamente en la opción de URL de lambda. Como base de datos se puede usar DynamoDB la cual usando boto3 se puede instanciar la tabla e insertar los valores directamente desde la función
Estimado, me hace mucho sentido tu solución.
Me imagino usando distintos endpoints en api getaway que haga referencia a cada imagen/función lambda para ir sumando otros modelos similares.
Y usando dvc pusheando modelos y datasets a S3, y GitHub actions para el tema de testing y deploy. Para poder lograr la completa automatización.
¿Tendrás algún diagrama, repo o artículos para compartir para indagar un poco más en la solución?
tengo dudas sobre cual Grupo de seguridad debe modificarse, tengo uno que usa SSH con puerto 22, el custom TCP con puerto 5000 pero no 3000.
Deberian mostrar más sobre la configuracion, sin saltarse pasos.
Adicionalmente, deberia mostrarse que archivos se modifico entre 1 repositorio y el otro, no se entiende nada, que nos funcione la ejecucion no significa que podamos replicarlo, ya que no se explica los pasos, sobre todo esta ultima parte de poner en produccion ya sea localhost o nube.
Actualmente para proyectos en los que estoy trabajando he usado AutoML implementandolo con Optuna y es interesante por qué ayuda a encontrar una muy buena configuración de hiper parámetros ahorrando tiempo en las pruebas de cambiar diferentes hipeparsmetros
¿Y el paso a paso para crear la instancia en EC2? ¿Generar llaves? ¿Cómo? Mal asunto.