AWS SQS tutorial 📨📨 (Teoría y Laboratorio)

AWS SQS tutorial 📨📨 (Teoría y Laboratorio)

¿Cómo funcionan las colas de mensajes en aplicaciones distribuidas?

Introducción a las aplicaciones distribuidas

  • Muchas veces trabajamos con aplicaciones distribuidas o monolíticas que queremos modernizar y desacoplar. Para lograr esto, necesitamos un mecanismo que permita la comunicación entre diferentes módulos de la aplicación.

Sistema de colas de mensajes

  • Se puede utilizar un sistema de colas para manejar mensajes, permitiendo que microservicios envíen y reciban información. Hoy se abordará el uso de SQS (Simple Queue Service).

Arquitectura básica

  • La arquitectura consiste en dos partes: los componentes (productores y consumidores) y la cola que contiene los servidores y los mensajes.
  • Los componentes pueden ser múltiples productores y consumidores, dependiendo del diseño de la aplicación. Los mensajes son replicados entre diferentes servidores para asegurar su disponibilidad.

Flujo de datos

  • El flujo comienza con un productor (aplicaciones o microservicios) que envía información a una cola. Los mensajes se almacenan en esta cola y se copian automáticamente en varios servidores.
  • Un consumidor solicita información desde la cola, procesa el mensaje recibido, lo cual puede incluir funciones lambda u otros servicios.

Concepto clave: Visibility Timeout

  • El visibility timeout es crucial; define el tiempo durante el cual un mensaje no está disponible para otros consumidores mientras está siendo procesado.
  • Si un mensaje es solicitado por un consumidor, este no estará disponible para otros hasta que termine su procesamiento o expire el tiempo definido.

Tipos de colas

  • Existen dos tipos principales: colas estándar y colas FIFO. Las colas estándar permiten múltiples entregas del mismo mensaje sin garantizar el orden, mientras que las FIFO aseguran que los mensajes sean procesados en el orden exacto en que llegan.
  • En las colas estándar hay capacidad ilimitada para procesar mensajes, mientras que las FIFO tienen límites específicos sobre cuántos mensajes pueden ser procesados simultáneamente.

Resumen final sobre capacidades

  • Es importante entender estas diferencias al estudiar para certificaciones relacionadas con sistemas de mensajería, ya que impactan directamente cómo se diseñan e implementan las soluciones basadas en colas.

¿Cuándo utilizar colas estándar y FIFO?

Escenarios de uso de colas

  • En situaciones donde se procesan múltiples usuarios subiendo fotos o videos, el orden no es relevante. Lo importante es que cada archivo sea procesado, independientemente del momento en que se haga.
  • Se menciona un ejemplo de redimensionar imágenes mediante una función lambda. Aquí, el orden de procesamiento no afecta la funcionalidad final; lo crucial es que todas las imágenes sean procesadas.
  • En eventos masivos como registros de usuarios, el tiempo en que se procesa cada registro no importa. Lo esencial es que todos los usuarios queden registrados sin necesidad de un orden específico.
  • Para comandos secuenciales en aplicaciones, el orden sí es crítico. Cambiar la secuencia puede llevar a resultados inesperados, por lo tanto, debe respetarse el flujo establecido.
  • Al actualizar precios de productos, es vital mantener un orden específico para evitar problemas al cobrar. Procesar actualizaciones fuera de secuencia podría causar errores significativos.

Inscripciones y gestión de eventos

  • En inscripciones a cursos con cupos limitados, el orden es fundamental. Si una inscripción se procesa fuera del lugar correspondiente en la cola, puede resultar en que un estudiante quede fuera del curso.
  • La importancia del manejo adecuado de colas varía según la aplicación y sus requerimientos específicos. Cada escenario presenta diferentes necesidades sobre cómo gestionar los mensajes.

Conceptos adicionales sobre colas

  • La eliminación manual de mensajes en colas estándar contrasta con la eliminación automática en colas FIFO. Esto implica una gestión más activa por parte del usuario para asegurar que los mensajes sean eliminados adecuadamente.
  • El tiempo máximo para retener mensajes puede variar entre uno y catorce días dependiendo del tipo de cola utilizada y su configuración específica.

Estrategias para optimizar costos

  • El "short polling" implica verificar frecuentemente si hay nuevos mensajes disponibles en la cola; esto puede generar costos si no hay mensajes para procesar.
  • El "long polling" se recomienda cuando no se está seguro sobre la cantidad o frecuencia de los mensajes entrantes; permite reducir respuestas vacías y optimizar recursos al esperar más eficientemente por nuevos mensajes.

Manejo especial de errores

  • Se introduce el concepto del "dead letter queue", donde se envían los mensajes que no pudieron ser procesados correctamente para su posterior análisis y resolución antes de reenviarlos a otra cola adecuada.

Conclusión

El uso adecuado de diferentes tipos de colas (estándar vs FIFO), así como estrategias efectivas para manejar registros e inscripciones son esenciales para optimizar procesos dentro de aplicaciones diversas.

¿Cómo crear y gestionar colas en un servicio de mensajería?

Introducción a la creación de colas

  • Se explican los pasos para crear una cola manualmente, enviar mensajes, consultar y eliminar mensajes, así como eliminar toda una cola.
  • Se menciona que las aplicaciones utilizan colas para intercambiar información entre productores y consumidores.

Configuración de la cola

  • En la consola se elige entre una cola estándar o FIFO; se explica el funcionamiento básico de cada tipo.
  • Se discuten conceptos clave como el "visibility timeout", que por defecto es 30 segundos, y puede ajustarse hasta 12 horas según las necesidades de la aplicación.

Parámetros importantes en la configuración

  • La retención de mensajes está configurada por defecto a 4 días, con un máximo posible de 14 días.
  • El "delay" permite establecer un tiempo antes de que un mensaje sea procesado tras su llegada a la cola, con un rango de hasta 15 minutos.

Optimización del manejo de mensajes

  • Se destaca la importancia del tamaño del mensaje (hasta 256 KB), lo cual puede optimizarse dependiendo del análisis realizado sobre la aplicación.
  • El "visibility timeout" y otros parámetros son cruciales para reducir costos en escenarios donde los mismos mensajes son procesados repetidamente.

Políticas y seguridad en las colas

  • Las políticas de acceso pueden ser genéricas o avanzadas; es fundamental restringir permisos en producción.
  • La opción para cifrar datos en tránsito está habilitada por defecto, pero también se puede cifrar información almacenada en la cola.

Buenas prácticas al gestionar colas

  • Es recomendable etiquetar adecuadamente los recursos y mantener buenas políticas organizativas.
  • Al enviar mensajes a la cola, se debe considerar el tiempo que tardará cada uno en ser procesado; esto afecta directamente al rendimiento general del sistema.

¿Cómo gestionar mensajes en una cola de procesamiento?

Introducción a la gestión de colas

  • Se presenta un mensaje disponible para ser procesado, con un límite de tres mil mensajes que se pueden manejar en una cola.
  • El proceso de "bullying" (o polling) permite obtener mensajes desde las aplicaciones sin intervención manual, optimizando el flujo de trabajo.

Procesamiento de mensajes

  • Se muestra cómo acceder a los detalles del mensaje recibido, incluyendo atributos y contenido útil para la aplicación.
  • La configuración del tiempo de "bullying" puede ajustarse para evitar costos innecesarios; se pueden establecer retrasos según sea necesario.

Manejo y eliminación de mensajes

  • Una vez procesado un mensaje, este se elimina de la cola y se registra en la base de datos correspondiente.
  • Es posible tener múltiples colas que gestionen diferentes tipos de mensajes, permitiendo una integración más sofisticada con diversas aplicaciones.

Conclusiones y cierre

  • Se invita a los espectadores a seguir el canal para más contenido relacionado y se enfatiza la utilidad del material presentado.
  • Se anima a los espectadores a dejar comentarios o preguntas, destacando el interés por interactuar con ellos sobre futuros temas y laboratorios.
Video description

Integra aplicaciones distribuidas utilizando mensajes y si tienes aplicaciones legacy monolíticas 👴👵 DEBES incluir AWS SQS en tu estrategia de modernización de aplicaciones. En este video te explico la teoría (incluyendo conceptos clave) y hago un laboratorio concreto de ese sencillo pero potente servicio 👍 Contenido 00:00 Introducción 00:56 Teoría 14:10 Laboratorio 25:31 Conclusiones MIS SITIOS https://hansverduguez.com/ https://www.linkedin.com/in/hans-verduguez/ https://hansverduguez.com/blog https://hansverduguez.com/shop