Módulo 9 · Eventos, colas y mensajería/Lección 54
Desacoplar: síncrono y asíncrono
Si una parte se cae, ¿se cae todo? Cómo las colas y los eventos hacen que un sistema aguante.
Un sistema real tiene muchas partes: la tienda recibe el pedido, otra parte cobra, otra descuenta inventario, otra envía el correo. La pregunta clave es qué pasa cuando una de esas partes se pone lenta o se cae. Si la tienda entera deja de vender porque el servicio de correos falla, el sistema está acoplado.
Desacoplar es poner algo en medio para que las partes no dependan de que la otra esté disponible justo en ese segundo. En AWS, ese algo suele ser una cola, un tema de notificaciones o un bus de eventos.
Síncrono y asíncrono
En una llamada síncrona, quien llama espera la respuesta antes de seguir. Es como pedir en un mostrador: no te mueves hasta que te entregan. Sirve cuando necesitas el resultado ya, por ejemplo, para mostrar el saldo de una cuenta.
En una comunicación asíncrona, quien envía deja el mensaje y sigue. El trabajo se hace después, en otro proceso. Sirve para todo lo que no tiene que estar listo antes de responder al usuario: enviar un correo, generar un PDF, actualizar estadísticas.
| Criterio | Acoplado (síncrono) | Desacoplado (asíncrono) |
|---|---|---|
| Si el destino se cae | La petición falla y el error se propaga hacia atrás | Los mensajes esperan hasta que el destino vuelva |
| Ante un pico de tráfico | El destino recibe todo de golpe y puede caerse | La cola absorbe el pico y el destino procesa a su ritmo |
| Escalar | Ambas partes deben escalar juntas | Cada parte escala por su cuenta |
| Cambiar una parte | Hay que tocar a quien la llama | Mientras el mensaje no cambie, el resto no se entera |
| Lo que cuesta | Es más simple de seguir y depurar | El resultado no es inmediato; hay que diseñar reintentos y duplicados |
Por qué un sistema desacoplado resiste mejor
- Aísla las fallas: si el servicio de correos se cae una hora, los pedidos se siguen recibiendo. Los correos salen cuando vuelva.
- Amortigua los picos: un viernes de ofertas entran diez veces más pedidos. La cola los guarda y los consumidores avanzan sin colapsar. Puedes escalar los consumidores según el tamaño de la cola.
- Permite crecer por partes: agregar un nuevo proceso (por ejemplo, un sistema de puntos) no obliga a cambiar la tienda si escucha los mismos eventos.
Este es uno de los principios del pilar de confiabilidad de AWS Well-Architected: diseñar para que la falla de un componente no tumbe a los demás.
Cola, tema o bus de eventos
AWS ofrece tres herramientas para desacoplar. Se parecen, pero resuelven problemas distintos:
| Criterio | |||
|---|---|---|---|
| Servicio | Amazon SQS | Amazon SNS | Amazon EventBridge |
| En el restaurante | El riel de comandas | El altavoz que anuncia a todos | El jefe de sala que lee cada aviso y decide a quién le toca |
| Quién recibe | Un consumidor procesa cada mensaje | Todos los suscriptores reciben una copia | Los destinos cuyas reglas coinciden con el evento |
| Entrega | El consumidor pide los mensajes (pull) | SNS los empuja a cada suscriptor (push) | EventBridge los empuja a cada destino (push) |
| Se queda con el mensaje | Sí, hasta que lo procesen o venza | No, lo entrega y listo | No, salvo que actives un archivo |
| Úsalo para | Repartir trabajo y absorber picos | Avisar lo mismo a muchos a la vez | Enrutar eventos de AWS, de tus apps y de terceros |
Las siguientes lecciones bajan al detalle de cada herramienta: SQS, SNS, EventBridge y Step Functions.
Quiz
Pon a prueba lo que aprendiste
0 de 5 correctas · 5 sin responder
1.El servicio que envía correos de confirmación falla y hace que la tienda deje de aceptar pedidos. ¿Qué cambio lo evita?
2.¿Qué describe mejor una comunicación asíncrona?
3.Cada vez que se crea un pedido, tres sistemas distintos deben recibir el mismo aviso al mismo tiempo. ¿Qué patrón usas?
4.Durante una promoción, los pedidos llegan diez veces más rápido de lo que el sistema de facturación puede procesar. ¿Qué ayuda?
5.Una empresa quiere reaccionar a eventos de servicios de AWS y de una aplicación SaaS, enviando cada uno a un destino según su contenido. ¿Qué servicio usa?