Ecosistema de Notificaciones

Arquitectura Profunda de los Cores Transaccionales UMine

Análisis técnico exhaustivo de interfaces, seguridad y procesamiento

Principios Compartidos

Infraestructura 100% Serverless

  • Definición: Arquitectura base soportada en AWS Lambda (Node.js 24 + ARM64) y orquestada con AWS CDK v2.
  • En qué afecta: Otorga máxima eficiencia de cómputo y escalado automático al milisegundo, eliminando la necesidad de gestionar servidores.

Observabilidad y Seguridad

  • Definición: Estrategia de monitorización con X-Correlation-ID, AWS Secrets Manager y DLQs (Dead Letter Queues).
  • En qué afecta: Garantiza trazabilidad total entre microservicios, protege el acceso a APIs y dispara alarmas preventivas antes de impactar al usuario.

1. Email Transaccional (TX)

Flujo Asíncrono de Procesamiento

  • Definición: Separación de la petición inicial (API Gateway + Lambda "Send") de la ejecución real (SQS + Lambda "Worker").
  • En qué afecta: Permite que el sistema responda al cliente casi instantáneamente (202 Accepted). Mientras tanto, SQS y el Worker gestionan reintentos y el envío a Amazon SES en segundo plano sin bloquear la app.

Email: Flujo Asíncrono de Procesamiento

API Gateway Lambda (Send) SQS Queue Lambda (Worker) DynamoDB Log encola
División de responsabilidades: Lambda Send responde en milisegundos (202 Accepted); SQS y Worker gestionan reintentos y despacho en Amazon SES.

Email: Complejidad en Adjuntos

Limitaciones Físicas

  • API Gateway límite: 10 MB
  • Amazon SQS límite: 256 KB
  • Amazon SES límite: 40 MB

Solución: Uploads S3 Prefirmados

  • Paso 1: Cliente solicita URL de S3 al endpoint /upload-url.
  • Paso 2: Cliente sube el archivo directo a S3 vía PUT.
  • Paso 3: Cliente envía el email pasando la s3_key. Límite práctico elevado a 25 MiB.

Email: Calendarización y Plantillas

  • Definición: Uso de DynamoDB para correos SCHEDULED, un cron con EventBridge cada 30 min y un índice único (ses_message_id_index).
  • En qué afecta: Habilita el envío diferido. El índice único garantiza idempotencia real, previniendo el envío de correos duplicados ante micro-cortes de red.
  • Gestión de Templates: Plantillas HTML en S3 con versionado estricto evitan romper correos antiguos al actualizar diseños.

2. In-App Web (Notificaciones UI)

Flujo del Broadcast Interactivo

  • Definición: Arquitectura híbrida que consume simultáneamente una API REST (HTTP) y una API WebSocket, validadas con Firebase Token.
  • En qué afecta: La API HTTP guarda el estado histórico de forma persistente (lecturas, borrados). La WebSocket API hace un fan-out transmitiendo alertas en tiempo real a todas las pestañas activas del usuario.

Web: Flujo del Broadcast Interactivo

Servicios Core API HTTP DynamoDB Log WebSocket API Web Client Auth Token
La API REST guarda los datos históricos, mientras que la API WebSocket fan-out transmite los eventos en vivo a todas las pestañas activas del usuario.

Web: Estrategia de Persistencia Optimizada

Índice Disperso (Sparse Index)

  • Definición: Índice en DynamoDB (unread_index) que separa físicamente los ítems leídos de los no leídos.
  • En qué afecta: Las consultas de "mensajes sin leer" (/unread-count) son ultrarrápidas al no tener que escanear toda la tabla.

Limpieza Automática (TTL)

  • Definición: Uso del atributo Time to Live de DynamoDB para expiración de registros.
  • En qué afecta: Borra notificaciones antiguas a nivel de base de datos, ahorrando el costo y complejidad de correr procesos de limpieza batch manuales.

3. WhatsApp Transaccional

Flujo de Feedback (Webhooks)

  • Definición: El Worker se comunica activamente a la API de Meta, pero las actualizaciones de estado recaen en un Webhook pasivo.
  • En qué afecta: Desacopla el envío de la confirmación. El sistema no espera sincrónicamente, sino que escucha cuando Meta notifica eventos asíncronos ("Entregado", "Leído", "Fallido").

WhatsApp: Flujo de Feedback (Webhooks)

API Gateway SQS Queue Worker Lambda Meta API Webhook API DynamoDB Log
El Worker envía activamente al servicio Meta, mientras que el Webhook escucha pasivamente eventos diferidos ("Entregado", "Leído", "Fallido").

WhatsApp: Manejo de Rate Limits

  • Definición: Utilización estricta de colas SQS como amortiguador (buffer) frente a la API de Meta.
  • En qué afecta: Permite "estrangular" el flujo de salida para respetar los topes de peticiones por segundo de Meta, protegiendo la reputación del número comercial.
  • Gestión de Errores: Los fallos del Webhook se estandarizan en DynamoDB, detonando alarmas CloudWatch si JobsFailed supera un umbral.

Operaciones: Dashboard IT Interno

Endpoints y Visibilidad

  • Definición: Endpoints analíticos (summary, health) combinados con búsquedas de logs (X-Correlation-ID).
  • En qué afecta: Brinda a los equipos de soporte visibilidad instantánea sobre tasas de entrega, cuellos de botella y estancamientos.

Alarmas Severas

  • Definición: Monitoreo centralizado de Dead Letter Queues (DLQ) mediante CloudWatch y PagerDuty.
  • En qué afecta: Detona alertas de grado severo en tiempo real ante la mínima acumulación en las colas, permitiendo respuesta proactiva.

Conclusión de Arquitectura

Los tres pilares priorizan el aislamiento (microservicios puros), la asincronía (Event-Driven Design) y la persistencia distribuida (DynamoDB NoSQL), asegurando que UMine pueda escalar sin cuellos de botella ni pérdida de datos transaccionales.