Aquí hay una posible arquitectura basada en Amazon AWS.
Puede tener el backend NoSQL (DynamoDB), pero solo si realiza un seguimiento de los perfiles de usuario y les vincula imágenes cargadas. Almacene solo metadatos (ubicaciones de archivos) en la base de datos. Es mejor almacenar blobs / imágenes en S3.
Para procesar imágenes:
- ¿Cuáles son las métricas más importantes para un gerente de producto en SaaS?
- ¿Hay un mercado para SaaS privado?
- ¿Cuál es la estructura de ventas correcta para SaaS empresarial? ¿Necesitamos gerentes de cuentas F2F, o funcionará un equipo moderno de éxito del cliente impulsado por teléfono?
- ¿Cuál es la mejor opción, SaaS o PaaS o IaaS?
- ¿Cuál es el tamaño del mercado de suscripción de software de consumo?
- Crear subred con una flota de instancias EC2
- Escriba el script Python / OpenCV para procesar sus imágenes. Libérelo a cada uno de los nodos EC2. (Alternativamente, suéltelo con Beanstalk Docker)
- Crear cola SQS (Servicio de cola simple) “Primer paso”
- Escriba la función Lambda que se llamará al cargar la imagen del usuario (desde el navegador web). Se escribirá la ubicación de la imagen S3 en la cola SQS “Primer paso”.
- Haga que los nodos EC2 (o el contenedor Docker) extraigan la cola de Amazon SQS “Primer paso” para recibir nuevos mensajes y procesarlos utilizando el código Python que escribió. Escriba los resultados del procesamiento de imágenes de OpenCV en el depósito S3 “hecho”.
- Escriba un mensaje en una nueva cola SQS “Segundo paso” con la ubicación del archivo procesado en S3.
- Haga que su código de Deep Learning escuche esta nueva cola SQS “Segundo paso”. Leer ubicación del archivo. Comience su próximo paso de procesamiento
Tenga en cuenta que:
- Si usa contenedores Docker para ejecutar su código Python, no necesita la flota EC2.
- Si eligió EC2, puede ahorrar utilizando instancias bajo demanda, reservadas o puntuales. Spot es la mejor opción para ti.
- Autoescala con AWS AutoScaling.
- Código de versión con AWS Elastic Beanstalk Docker