Adrian RomoAdrian Romo
Todos los textos
Nota de arquitectura 1 min de lectura

Nota de Arquitectura: Cuándo elegir SQS FIFO sobre una cola de base de datos

Un marco de decisiones que utilizo cuando el equipo opta por una cola respaldada por Postgres por defecto.

Parte de Backend Craft

Los equipos recurren a "solo usa una tabla" en las colas más de lo que deberían. A veces eso es correcto. A menudo es una bomba de tiempo.

Mi árbol de decisiones:

  1. ¿Se requiere ordenamiento por clave? → SQS FIFO con MessageGroupId. Una cola de base de datos solo lo hace bien si tienes cuidado con SELECT FOR UPDATE SKIP LOCKED.
  2. ¿El rendimiento va a superar unas pocas centenas por segundo? → SQS. Las colas de base de datos compiten con el resto de tu aplicación por conexiones y bloqueos de filas.
  3. ¿Se necesita exactamente una vez en el consumidor? → Ninguna de las dos te da eso. Diseña consumidores idempotentes; usa la ventana de deduplicación de SQS FIFO como red de seguridad.
  4. ¿Está el consumidor fuera del radio de explosión de la base de datos? → SQS. No acoples un trabajador externo a tu Postgres principal.

Una cola de base de datos es correcta cuando el trabajo está intrínsecamente ligado a una transacción — "después de que esta fila se confirme, haz X." SQS es correcto cuando el trabajo es extrínseco.

Continúa

¿A dónde sigues?

Explora más textos técnicos, revisa los casos de estudio o escríbeme directo.