Acoplamiento débil
Si ya sabes qué es una cola de mensajes y qué significa desacoplar, salta a Amazon SQS.
Dos componentes están fuertemente acoplados cuando uno llama al otro y espera su respuesta: si el segundo se cae o se satura, el primero falla con él. Es lo que pasa en la pregunta 1 del inicio: sin facturación, la tienda pierde los pedidos o deja al cliente esperando.
En el acoplamiento débil, el primero deja un mensaje en un intermediario y sigue con lo suyo. Quien lo envía es el productor; quien lo procesa, el consumidor. La comunicación es asíncrona: el consumidor lo procesa cuando puede, aunque esté caído un rato. Así se responde la pregunta 1: un intermediario guarda los pedidos hasta que facturación vuelve. Es la base de los microservicios: una aplicación partida en servicios pequeños que se despliegan y escalan por separado. En AWS, ese intermediario puede ser una cola, un tema o un bus de eventos.
Amazon SQS
Qué es: Amazon Simple Queue Service (SQS) es una cola de mensajes administrada: el productor deja mensajes y el consumidor los saca cuando puede.
- Sondeo (pull): el consumidor pregunta a la cola si hay mensajes; SQS nunca se los empuja. Lambda puede sondear la cola por ti y ejecutar tu función con cada lote.
- Recibir y borrar: leer un mensaje no lo borra. Queda oculto durante el tiempo de visibilidad (30 segundos por defecto); si el consumidor no lo borra antes, reaparece para otro intento.
- Retención: los mensajes esperan 4 días por defecto, configurable de 1 minuto a 14 días. Una cola de mensajes fallidos (dead-letter queue) aparta los que fallan una y otra vez.
- Precio: por solicitud. El primer millón de solicitudes al mes es siempre gratis.
Analogía: las comandas de la cocina de un restaurante. El mesero cuelga el pedido y vuelve a la sala; cada cocinero toma una comanda cuando se libera. Dónde falla la analogía: una comanda tomada sale del riel. En SQS, el mensaje recibido sigue en la cola, oculto; si el consumidor no lo borra a tiempo, vuelve a aparecer.
Ejemplo real: Boletos Faro recibe 50.000 pedidos en diez minutos cuando abre la venta de un concierto. La tienda deja cada pedido en una cola SQS y responde al instante. Facturación los procesa a su ritmo y, con Auto Scaling, suma instancias si crece la cola.
Úsalo cuando: quieras absorber picos, repartir trabajo entre varios consumidores o que un componente siga funcionando aunque el otro caiga. No lo uses cuando: necesites la respuesta en el acto, como validar una tarjeta mientras el cliente espera, o que varios sistemas reciban la misma copia del mensaje.
| Criterio | Cola estándar | Cola FIFO |
|---|---|---|
| Orden | El mejor posible, no garantizado | Exacto, el de llegada |
| Duplicados | Puede entregar un mensaje dos veces | Procesa cada mensaje una vez |
| Rendimiento | Casi ilimitado | Menor, con un tope por segundo |
| Úsala para | Volumen alto, orden irrelevante | Pasos que deben seguir su orden |
En el examen: “desacoplar”, “cola”, “absorber picos”, “procesar de forma asíncrona” o “que los mensajes no se pierdan si el consumidor falla” es SQS. “Orden estricto” o “sin duplicados” es una cola FIFO.
Trampa común: una cola no reparte copias. Cada mensaje lo procesa un solo consumidor y luego se borra. Si tres sistemas necesitan el mismo pedido, hace falta el servicio de la sección siguiente.