DEV Community

Cover image for 🌸 Nikte – Reconocimiento de flores con arquitectura serverless en AWS
Fernando Gutierrez
Fernando Gutierrez

Posted on

🌸 Nikte – Reconocimiento de flores con arquitectura serverless en AWS

Resumen del proyecto

Nikte es un proyecto de reconocimiento de flores que utiliza una arquitectura serverless en AWS para procesar imágenes enviadas por los usuarios y devolver resultados en tiempo casi real. El objetivo fue diseñar una solución escalable, sin administración de servidores, y que integrara servicios de inteligencia artificial.

Objetivo

  • Permitir que un usuario envíe una imagen de una flor.
  • Analizar la imagen automáticamente usando IA.
  • Almacenar tanto la imagen original como los resultados del análisis.
  • Responder de forma rápida y escalable.

Arquitectura general

  • La solución se construyó usando los siguientes servicios:
  • Amazon S3 – Almacenamiento de imágenes.
  • AWS Lambda – Orquestación y procesamiento serverless.
  • Amazon Rekognition – Análisis de imágenes (visión por computadora).
  • Amazon DynamoDB – Almacenamiento de resultados y metadatos.
  • Meta Webhooks (WhatsApp) – Entrada de imágenes desde el usuario.
  • Flask – Servidor intermediario para manejar webhooks y lógica inicial.

Flujo del sistema

  • El usuario envía una imagen de una flor por WhatsApp.
  • El webhook de Meta recibe el evento y lo envía al servidor Flask (gronk).
  • Flask sube la imagen a un bucket de Amazon S3.
  • La carga en S3 dispara una función AWS Lambda.
  • Lambda envía la imagen a Amazon Rekognition usando DetectLabels.
  • Rekognition devuelve etiquetas y niveles de confianza.
  • Lambda guarda los resultados en Amazon DynamoDB.
  • El sistema responde al usuario con el nombre de la flor identificada.

Uso de Amazon Rekognition

  • Amazon Rekognition fue el componente central de inteligencia artificial del proyecto.
  • Se utilizó la operación DetectLabels para identificar objetos presentes en la imagen.
  • Rekognition devuelve un conjunto de etiquetas con porcentajes de confianza.
  • El sistema filtra las etiquetas relacionadas con flores y selecciona la más relevante.

Ejemplo de respuesta procesada:

`{
  "label": "Rose",
  "confidence": 97.2
}`
Enter fullscreen mode Exit fullscreen mode

Rekognition permitió evitar el entrenamiento de un modelo propio, reduciendo complejidad y tiempo de desarrollo.

Uso de Amazon S3

  • Las imágenes se almacenan como objetos en un bucket S3.
  • Los archivos pueden:
  • Ser visualizados desde la consola.
  • Ser descargados directamente si es necesario.
  • S3 actúa como fuente de entrada para Rekognition y como respaldo de las imágenes originales.

Decisión técnica:
S3 fue elegido porque está optimizado para almacenamiento de objetos grandes, algo que no es eficiente en bases de datos.

Uso de Amazon DynamoDB

  • DynamoDB se utilizó para almacenar información estructurada:
  • ID de la imagen
  • Flor identificada
  • Nivel de confianza
  • Fecha y usuario
  • Permite consultas en milisegundos y escalado automático.

Ejemplo de registro:

{
  "image_id": "rosa.jpg",
  "flower": "Rosa Roja",
  "confidence": 0.97,
  "timestamp": "2025-09-15T15:30:00Z"
}
Enter fullscreen mode Exit fullscreen mode

Ventaja clave:
La baja latencia de DynamoDB permite mostrar historiales y resultados sin reprocesar imágenes.

Diferencia clave entre S3 y DynamoDB

  • S3 → almacenamiento de objetos (imágenes).
  • DynamoDB → almacenamiento de datos estructurados (resultados). Ambos servicios se complementan y cumplen roles distintos dentro de la arquitectura.

Conclusión

Nikte demuestra cómo una arquitectura serverless puede integrar almacenamiento, procesamiento y análisis de imágenes de forma eficiente:

  • S3 maneja los archivos.
  • Rekognition aporta inteligencia artificial.
  • Lambda automatiza el flujo.
  • DynamoDB permite respuestas rápidas.
  • Webhooks de Meta conectan el sistema con usuarios reales.

Este proyecto fue una experiencia práctica para entender cómo elegir el servicio correcto según el tipo de dato y la necesidad del sistema.

Te comparto el diagrama de flujo

Top comments (0)