Arquitectura event-driven en AWS: cómo desacoplar sin montar un lío
Una arquitectura event-driven puede sonar a tema avanzado, pero la idea base es sencilla: en vez de que todos los componentes se llamen entre sí directamente, un sistema avisa de que “algo ha pasado” y otros sistemas reaccionan. En esta guía vamos a verlo sin humo, con ejemplos fáciles, pensando en alumnos que preparan CLF-C02 y quieren entender cuándo usar SQS, SNS, EventBridge y Lambda sin liarse.
1. Qué significa realmente event-driven
Una arquitectura event-driven, o basada en eventos, es un estilo de diseño donde los sistemas reaccionan a cosas que ocurren.
Un evento puede ser algo tan simple como:
- Un usuario se ha registrado.
- Un pedido se ha creado.
- Un pago se ha confirmado.
- Un archivo se ha subido a S3.
- Una instancia ha cambiado de estado.
- Una alarma de CloudWatch se ha activado.
En vez de que una aplicación llame directamente a cinco sistemas diferentes, publica un evento diciendo: “esto ha ocurrido”. Después, otros componentes pueden escuchar ese evento y actuar.
La idea importante es esta: el sistema que produce el evento no necesita conocer todos los sistemas que van a reaccionar.
Esto ayuda mucho a desacoplar. Y desacoplar significa que los componentes dependen menos unos de otros. Si un componente cambia, falla o se retrasa, no debería romper toda la aplicación.
2. Por qué esto importa en AWS y en CLF-C02
En el examen AWS Certified Cloud Practitioner CLF-C02 no te van a pedir que diseñes una plataforma event-driven compleja de nivel arquitecto profesional. Pero sí pueden preguntarte por conceptos importantes:
- Qué servicio se usa para colas de mensajes.
- Qué servicio permite publicar mensajes a varios suscriptores.
- Qué servicio sirve como bus de eventos.
- Qué significa desacoplar componentes.
- Por qué una cola puede ayudar a absorber picos.
- Qué servicio permite ejecutar código sin gestionar servidores.
- Qué ventaja tiene una arquitectura asíncrona.
Por eso conviene entenderlo bien desde la base, no memorizar solo nombres de servicios.
Si ves una pregunta donde una aplicación recibe muchas solicitudes y no puede procesarlas todas al instante, piensa en desacoplamiento. Si ves que un sistema debe avisar a varios sistemas a la vez, piensa en publicación/suscripción. Si ves eventos de aplicaciones, SaaS o servicios AWS que deben enrutarse por reglas, piensa en EventBridge.
3. Síncrono vs asíncrono explicado fácil
Para entender event-driven, primero hay que diferenciar entre comunicación síncrona y asíncrona.
Comunicación síncrona
Una comunicación síncrona ocurre cuando un sistema llama a otro y espera respuesta en ese momento.
Ejemplo sencillo:
Una web llama a una API para consultar el perfil de un usuario. La web espera la respuesta porque necesita mostrar el nombre, el correo y los datos del usuario en pantalla.
Ahí tiene sentido esperar. Sin esa respuesta, la pantalla no puede pintarse bien.
Comunicación asíncrona
Una comunicación asíncrona ocurre cuando un sistema deja un mensaje, evento o tarea para que otro sistema lo procese después.
Ejemplo sencillo:
Un usuario compra un curso. La aplicación confirma la compra y después se pueden lanzar otras tareas: enviar email, actualizar estadísticas, generar factura, notificar a analítica o guardar un evento de auditoría.
No hace falta que el usuario espere a que todo eso termine para ver “compra realizada”.
| Tipo | Cómo funciona | Ejemplo | Cuándo encaja |
|---|---|---|---|
| Síncrono | Un sistema llama y espera respuesta | Consultar datos de usuario antes de mostrar pantalla | Cuando necesitas respuesta inmediata |
| Asíncrono | Un sistema deja un mensaje o evento y sigue | Enviar email después de una compra | Cuando el trabajo puede procesarse después |
4. Qué significa desacoplar de verdad
Desacoplar no significa complicar la arquitectura porque sí. Significa evitar que todos los componentes dependan directamente unos de otros.
Imagina este caso:
Una API de pedidos, cuando se crea un pedido, llama directamente a:
- Servicio de facturación.
- Servicio de emails.
- Servicio de analítica.
- Servicio de almacén.
- Servicio de recomendaciones.
Si uno de esos servicios falla o tarda mucho, puede hacer que la API principal vaya lenta o falle. Y eso es un problema, porque el usuario solo quería crear un pedido.
Con un enfoque event-driven, la API puede guardar el pedido y publicar un evento como OrderCreated. Luego, cada sistema interesado reacciona por su cuenta.
La API principal no tiene que saber exactamente qué sistemas existen detrás. Solo anuncia lo que ha pasado.
5. Servicios clave de AWS para arquitecturas event-driven
En AWS hay varios servicios relacionados con mensajería, eventos y procesamiento asíncrono. Los más importantes para entender de cara a CLF-C02 son Amazon SQS, Amazon SNS, Amazon EventBridge y AWS Lambda.
| Servicio | Para qué sirve | Idea rápida | Ejemplo sencillo |
|---|---|---|---|
| Amazon SQS | Colas de mensajes | Un productor deja mensajes y un consumidor los procesa | Procesar pedidos, emails o tareas pesadas a otro ritmo |
| Amazon SNS | Publicación y suscripción | Un mensaje se publica y puede llegar a varios suscriptores | Avisar a varios sistemas cuando ocurre algo |
| Amazon EventBridge | Bus de eventos y reglas | Enruta eventos según reglas | Reaccionar a eventos de aplicaciones, servicios AWS o SaaS |
| AWS Lambda | Cómputo sin servidores | Ejecuta código cuando ocurre un evento | Procesar un mensaje, transformar datos o responder a una subida en S3 |
Una forma rápida de verlo:
- SQS es ideal cuando quieres una cola resistente entre productor y consumidor.
- SNS encaja cuando quieres enviar el mismo mensaje a varios destinos.
- EventBridge encaja cuando quieres trabajar con eventos y reglas de enrutamiento.
- Lambda encaja cuando quieres ejecutar código al ocurrir algo, sin gestionar servidores.
6. Amazon SQS: la cola que te ayuda a absorber golpes
Amazon Simple Queue Service, o SQS, es un servicio de colas de mensajes.
La idea es muy sencilla:
- Un productor envía mensajes a una cola.
- Los mensajes se quedan esperando.
- Uno o varios consumidores leen mensajes y los procesan.
Esto es muy útil cuando una parte del sistema genera trabajo más rápido de lo que otra parte puede procesarlo.
Ejemplo práctico
Imagina una plataforma de formación donde muchos alumnos terminan simuladores a la vez. Cada intento genera estadísticas, cálculo de progreso, recomendaciones y actualización del panel.
Podrías hacer todo eso en la misma petición del usuario, pero entonces la respuesta sería lenta. Mejor opción: guardar el intento, responder al alumno y enviar un mensaje a SQS para que el procesamiento pesado ocurra después.
Así la experiencia del usuario es más rápida y el backend puede procesar la cola a su ritmo.
Por qué SQS ayuda con los picos
Si de repente llegan muchos mensajes, la cola los almacena. Los consumidores irán procesando poco a poco. Esto evita que una subida puntual de tráfico tumbe directamente el sistema que procesa.
7. SQS Standard y SQS FIFO
En SQS hay dos tipos importantes de colas: Standard y FIFO.
| Tipo de cola | Qué ofrece | Cuándo usarla |
|---|---|---|
| SQS Standard | Alta escala y entrega al menos una vez | Cuando necesitas mucho rendimiento y el orden exacto no es crítico |
| SQS FIFO | Orden estricto y procesamiento exactamente una vez a nivel de cola FIFO | Cuando el orden de mensajes importa mucho |
Para nivel base, quédate con esto:
- Standard escala muchísimo y es la opción habitual en muchos casos.
- FIFO se usa cuando el orden importa.
- En sistemas distribuidos siempre hay que diseñar pensando en reintentos y posibles duplicados.
Un ejemplo donde el orden importa podría ser una secuencia de operaciones financieras o cambios de estado que deben procesarse en el mismo orden en que se generaron.
Un ejemplo donde no importa tanto el orden podría ser procesar miniaturas de imágenes, enviar emails o calcular métricas independientes.
8. Amazon SNS: publicar una vez, avisar a varios
Amazon Simple Notification Service, o SNS, sirve para un patrón conocido como pub/sub: publicación y suscripción.
Un sistema publica un mensaje en un tema de SNS y varios suscriptores pueden recibirlo.
Por ejemplo, cuando se crea un pedido, podrías publicar un mensaje en SNS y que lo reciban:
- Una cola SQS para facturación.
- Una cola SQS para logística.
- Una función Lambda para enviar notificación.
- Un endpoint HTTP/S de otro sistema.
La ventaja es que el productor no tiene que llamar a cada sistema uno por uno. Publica una vez y SNS se encarga de distribuir.
SNS + SQS: combinación muy habitual
Una combinación típica es usar SNS delante de varias colas SQS.
SNS reparte el mensaje. Cada cola guarda su copia. Y cada consumidor procesa a su ritmo.
Esto evita que un consumidor lento bloquee a los demás. Facturación puede ir a una velocidad, analítica a otra y notificaciones a otra.
9. Amazon EventBridge: eventos de negocio y reglas
Amazon EventBridge es un servicio de bus de eventos. Permite recibir eventos, evaluarlos con reglas y enviarlos a distintos destinos.
EventBridge es muy útil cuando quieres trabajar con eventos más “de negocio” o eventos que vienen de servicios AWS, aplicaciones propias o incluso aplicaciones SaaS integradas.
Por ejemplo:
- Cuando se crea un pedido, enviar evento a facturación.
- Cuando cambia el estado de un recurso AWS, lanzar una acción.
- Cuando llega un evento de una herramienta externa, iniciar un proceso.
- Cuando se cumple una regla programada, ejecutar una Lambda.
EventBridge permite crear reglas para decidir qué eventos interesan y a qué destinos se envían.
EventBridge no es “simplemente otra cola”
Esto es importante. EventBridge no se usa igual que SQS.
SQS es una cola. Guarda mensajes para que consumidores los procesen.
EventBridge es más parecido a un sistema de enrutamiento de eventos. Recibe eventos, aplica reglas y los manda a destinos.
| Necesidad | Servicio que suele encajar | Motivo |
|---|---|---|
| Guardar tareas para procesarlas poco a poco | SQS | Es una cola de mensajes |
| Enviar un mensaje a muchos suscriptores | SNS | Modelo publicación/suscripción |
| Enrutar eventos por reglas | EventBridge | Bus de eventos gestionado |
| Ejecutar código cuando ocurre algo | Lambda | Cómputo bajo demanda |
10. AWS Lambda: código que reacciona a eventos
AWS Lambda permite ejecutar código sin gestionar servidores. Tú subes la función, configuras cuándo debe ejecutarse y AWS se encarga de la infraestructura subyacente.
Lambda encaja muy bien en arquitecturas event-driven porque puede reaccionar a muchos tipos de eventos:
- Un objeto nuevo en S3.
- Un mensaje en SQS.
- Un evento en EventBridge.
- Una llamada a través de API Gateway.
- Un cambio en DynamoDB Streams.
Ejemplo sencillo:
Un alumno sube un archivo. S3 genera un evento. Ese evento lanza una Lambda. La Lambda valida el archivo, genera metadatos y guarda información en DynamoDB.
No has tenido que levantar un servidor esperando todo el día. La función se ejecuta cuando hace falta.
11. Patrón típico: API + SQS + workers
Uno de los patrones más fáciles de entender es este:
- El usuario llama a una API.
- La API valida la solicitud.
- La API guarda lo mínimo necesario.
- La API deja un mensaje en SQS.
- Un worker o Lambda procesa el mensaje después.
Esto es útil cuando el trabajo tarda más de lo que quieres hacer esperar al usuario.
Ejemplos:
- Generar un informe.
- Procesar imágenes.
- Enviar emails masivos.
- Actualizar estadísticas.
- Sincronizar datos con otro sistema.
- Procesar intentos de examen o simuladores.
El usuario recibe una respuesta rápida, y el procesamiento pesado se queda desacoplado.
Qué ganas con este patrón
- La API responde más rápido.
- La cola absorbe picos.
- Los consumidores pueden escalar.
- Si el consumidor falla, el mensaje no se pierde inmediatamente.
- Es más fácil reintentar.
Qué debes vigilar
- Que la cola no crezca sin control.
- Que los mensajes fallidos vayan a una DLQ.
- Que el consumidor sea idempotente.
- Que existan alarmas de retraso y errores.
12. Patrón fan-out: un evento, varios destinos
Otro patrón muy habitual es el fan-out.
Fan-out significa que un mensaje se reparte a varios destinos.
Ejemplo:
Se crea un nuevo usuario en la plataforma. A partir de ese evento pueden pasar varias cosas:
- Enviar email de bienvenida.
- Crear perfil inicial.
- Actualizar métricas de negocio.
- Registrar evento de auditoría.
- Notificar a un CRM.
No quieres que el servicio de registro llame directamente a todo eso. Mejor publicar un evento y que cada parte haga su trabajo.
Para esto puedes usar SNS con varias suscripciones, o EventBridge si quieres reglas de eventos más expresivas.
13. Contratos de eventos: un evento también es una API
Este punto parece avanzado, pero es muy importante incluso para entender bien el concepto.
Un evento no debería ser un mensaje improvisado con campos al azar. Un evento es casi como una API. Tiene un contrato.
Ese contrato debería dejar claro:
- Nombre del evento.
- Versión.
- Campos obligatorios.
- Campos opcionales.
- Qué significa cada campo.
- Quién lo publica.
- Quién lo consume.
- Qué compatibilidad se mantiene si cambia.
Ejemplo de evento:
| Campo | Ejemplo | Qué representa |
|---|---|---|
| eventName | OrderCreated | Nombre del evento |
| version | 1.0 | Versión del contrato |
| orderId | ORD-12345 | Identificador del pedido |
| customerId | CUS-9988 | Cliente asociado |
| createdAt | 2026-05-10T10:15:00Z | Momento en que ocurrió |
Un error típico es cambiar el significado de un campo sin avisar. Por ejemplo, que antes amount estuviera en euros y luego pase a céntimos. Eso puede romper consumidores de forma muy silenciosa.
14. Reintentos y Dead-Letter Queue: porque las cosas fallan
En una arquitectura event-driven tienes que asumir que algo va a fallar.
Puede fallar una Lambda, puede fallar una llamada a una API externa, puede venir un mensaje mal formado o puede haber un problema temporal de permisos.
Por eso existen los reintentos y las Dead-Letter Queues, normalmente llamadas DLQ.
Qué es una DLQ
Una DLQ es una cola donde terminan los mensajes que no se han podido procesar correctamente después de varios intentos.
Esto es muy útil porque evita que un mensaje problemático bloquee o ensucie el procesamiento principal.
Ejemplo:
- Llega un mensaje a SQS.
- Lambda intenta procesarlo.
- Falla.
- Se reintenta varias veces.
- Si sigue fallando, el mensaje acaba en una DLQ.
- El equipo revisa la DLQ para analizar la causa.
Sin DLQ, podrías perder visibilidad de mensajes problemáticos o generar bucles de reintentos difíciles de controlar.
15. Idempotencia: palabra rara, idea muy útil
Idempotencia suena raro, pero la idea es sencilla: que puedas ejecutar una operación más de una vez sin generar un resultado incorrecto.
En sistemas con colas y eventos pueden ocurrir reintentos. Y si hay reintentos, una operación podría ejecutarse más de una vez.
Ejemplo malo:
Un mensaje dice “cobra 50 euros al cliente”. Si el consumidor procesa el mensaje dos veces, podrías cobrar dos veces.
Ejemplo mejor:
El mensaje tiene un identificador único de operación. Antes de cobrar, el sistema comprueba si esa operación ya se procesó. Si ya existe, no cobra otra vez.
Eso es pensar de forma idempotente.
Para nivel CLF-C02 no necesitas implementar idempotencia, pero sí conviene entender por qué en arquitecturas distribuidas hay que diseñar pensando en reintentos, duplicados y fallos parciales.
16. El orden de los eventos no siempre está garantizado
Otro punto importante: en sistemas distribuidos, no siempre puedes asumir que los eventos llegarán exactamente en el orden que esperas.
Por ejemplo, podrías tener estos eventos:
- OrderCreated
- OrderPaid
- OrderCancelled
Si tu arquitectura no garantiza orden, un consumidor podría recibir eventos en una secuencia inesperada o recibir alguno tarde.
Cuando el orden importa mucho, hay que diseñarlo explícitamente. Ahí pueden entrar colas FIFO, claves de agrupación, control de estado o lógica adicional.
17. Observabilidad en sistemas event-driven
En una arquitectura síncrona, cuando algo falla suele verse en la llamada directa. Por ejemplo, una API responde 500 y el usuario nota el error.
En una arquitectura basada en eventos, el fallo puede quedar más escondido. El usuario puede haber recibido una respuesta correcta, pero por detrás un mensaje se ha quedado atascado, una Lambda está fallando o una regla no está enviando eventos al destino adecuado.
Por eso la observabilidad es todavía más importante.
Deberías vigilar, como mínimo:
- Profundidad de las colas.
- Edad del mensaje más antiguo.
- Errores de Lambda.
- Duración de las ejecuciones.
- Throttling o limitaciones de concurrencia.
- Mensajes enviados a DLQ.
- Eventos descartados o no entregados.
- Latencia total de procesamiento.
- Logs con identificadores de correlación.
| Señal | Qué puede indicar | Acción típica |
|---|---|---|
| ApproximateAgeOfOldestMessage | La cola se está atascando | Aumentar consumidores o revisar errores |
| Número de mensajes en DLQ | Hay mensajes que no se han podido procesar | Analizar payload, logs y causa raíz |
| Errores de Lambda | El consumidor está fallando | Revisar código, permisos, dependencias o validación |
| Duración alta de Lambda | Procesamiento lento o dependencias externas lentas | Optimizar código, memoria, timeouts o diseño |
| Throttling | Se está limitando la ejecución | Revisar concurrencia, límites y escalado |
En sistemas event-driven es muy útil usar un identificador de correlación. Es decir, un ID que viaja con el evento y permite seguir su recorrido por logs, colas y funciones.
18. Seguridad en arquitecturas event-driven
Que una arquitectura esté basada en eventos no significa que la seguridad venga sola.
Hay que seguir aplicando buenas prácticas:
- IAM con mínimo privilegio: una Lambda solo debe poder leer la cola que necesita, no todas las colas de la cuenta.
- Cifrado: colas, temas y datos sensibles deben protegerse cuando corresponda.
- Validación de mensajes: no confíes en cualquier payload sin comprobarlo.
- Separación por entornos: desarrollo, pruebas y producción no deberían mezclarse.
- Control de acceso a EventBridge, SNS y SQS: no todo el mundo debe poder publicar o consumir mensajes.
- No meter secretos en eventos: un evento no debería transportar contraseñas, claves privadas ni tokens sensibles.
19. Coste: event-driven ayuda, pero no es magia gratis
Una arquitectura event-driven puede ser muy eficiente en coste, sobre todo cuando usas servicios serverless y pagas por uso.
Pero eso no significa que no haya que controlar la factura.
Algunas cosas que pueden impactar en coste:
- Número de solicitudes a SQS, SNS o EventBridge.
- Número de ejecuciones de Lambda.
- Duración de las funciones Lambda.
- Datos transferidos entre servicios.
- Retención de mensajes.
- Logs en CloudWatch.
- Reintentos excesivos por errores mal gestionados.
Un fallo típico es tener una Lambda que falla constantemente y reintenta una y otra vez. Eso no solo genera ruido operativo, también puede generar coste.
Otro fallo común es guardar logs demasiado verbosos durante mucho tiempo sin política de retención.
20. Errores habituales al diseñar con eventos
Usar eventos puede mejorar mucho una arquitectura, pero también puede convertirla en un lío si se usa sin orden.
- Meter colas por todas partes sin motivo.
No todo necesita ser asíncrono. Si necesitas respuesta inmediata, quizá una llamada síncrona es más clara. - No definir nombres de eventos claros.
Eventos como “UpdateData” o “ProcessThing” no explican bien qué ha ocurrido. - No versionar eventos.
Si cambias el formato sin control, puedes romper consumidores. - Publicar eventos gigantes.
Un evento debería llevar la información necesaria, no convertirse en una base de datos portátil. - No diseñar reintentos.
Los fallos temporales ocurren. Hay que saber qué pasa cuando un consumidor falla. - No usar DLQ.
Sin DLQ, los mensajes problemáticos son más difíciles de recuperar y analizar. - Asumir orden perfecto.
Si el orden importa, tienes que diseñarlo explícitamente. - No tener trazabilidad.
Si no puedes seguir un evento desde que nace hasta que se procesa, depurar producción será doloroso. - Crear demasiados eventos parecidos.
Si cada equipo inventa sus nombres y formatos, la arquitectura se vuelve difícil de entender. - No documentar consumidores.
Deberías saber quién publica cada evento y quién lo consume.
21. Cuándo sí usar arquitectura event-driven
Event-driven suele encajar muy bien cuando:
- Hay tareas que pueden procesarse después.
- Necesitas absorber picos de tráfico.
- Quieres desacoplar productor y consumidor.
- Varios sistemas deben reaccionar al mismo hecho.
- Quieres evitar llamadas en cadena entre servicios.
- Hay procesos de negocio que ocurren en pasos.
- Quieres escalar componentes por separado.
- Quieres integrar aplicaciones o servicios sin acoplarlos demasiado.
Ejemplos claros:
- Procesamiento de pedidos.
- Envío de emails.
- Procesamiento de imágenes o vídeos.
- Actualización de métricas.
- Notificaciones.
- Integraciones con terceros.
- Auditoría y registro de eventos.
- Procesamiento de resultados de simuladores o cursos.
22. Cuándo no conviene complicarse con eventos
No todo necesita una arquitectura event-driven.
A veces una llamada directa es más simple, más fácil de depurar y suficiente.
Quizá no necesitas eventos si:
- La operación necesita respuesta inmediata.
- El sistema es muy pequeño y no tiene varios componentes.
- No hay picos de carga relevantes.
- El equipo no tiene capacidad para operar una arquitectura más distribuida.
- No hay una razón clara para desacoplar.
Un error típico en arquitectura es usar un patrón porque está de moda. Event-driven es potente, pero también exige más disciplina: contratos, observabilidad, reintentos, DLQ, trazabilidad y documentación.
23. Ejemplo completo: plataforma de formación AWS
Vamos a imaginar una plataforma de formación AWS donde los alumnos estudian, hacen simuladores y guardan su progreso.
Cuando un alumno termina un simulador, podrían ocurrir varias cosas:
- Guardar el intento.
- Calcular nota final.
- Actualizar progreso por dominio.
- Generar recomendaciones.
- Actualizar métricas del panel.
- Enviar un email si ha aprobado.
- Registrar un evento de analítica.
Podrías hacerlo todo en la misma petición, pero eso haría que el usuario espere más y que un fallo secundario pueda afectar a la experiencia principal.
Una opción más desacoplada sería:
- La API recibe el intento del simulador.
- Guarda el resultado principal en DynamoDB.
- Publica un evento ExamAttemptCompleted.
- Una Lambda actualiza estadísticas.
- Otra Lambda genera recomendaciones.
- Otra cola procesa emails.
- CloudWatch monitoriza errores y retrasos.
Así el flujo principal queda más limpio. El alumno recibe respuesta rápido, y los procesos secundarios ocurren por detrás.
24. Cómo puede aparecer en el examen CLF-C02
En CLF-C02, este tema puede aparecer de forma conceptual. No esperes una pregunta que te pida diseñar todos los detalles de EventBridge, pero sí preguntas donde tengas que elegir el servicio adecuado.
Asociaciones rápidas para memorizar
| Necesidad en la pregunta | Respuesta probable |
|---|---|
| Desacoplar productor y consumidor | Amazon SQS |
| Absorber picos de mensajes | Amazon SQS |
| Enviar una notificación a varios suscriptores | Amazon SNS |
| Modelo pub/sub | Amazon SNS |
| Enrutar eventos con reglas | Amazon EventBridge |
| Reaccionar a eventos de AWS o SaaS | Amazon EventBridge |
| Ejecutar código sin servidores | AWS Lambda |
| Procesar mensaje fallido después de varios intentos | Dead-Letter Queue |
| Monitorizar errores, métricas y alarmas | Amazon CloudWatch |
Si entiendes esa tabla, ya tienes una base muy buena para responder muchas preguntas de nivel Cloud Practitioner.
25. Checklist para revisar una arquitectura event-driven
Antes de dar por buena una arquitectura basada en eventos, revisa esto:
- ¿Está claro qué evento representa cada cosa?
Un evento debe describir algo que ya ocurrió, no una acción confusa. - ¿El productor necesita realmente esperar respuesta?
Si no necesita esperar, el diseño asíncrono puede tener sentido. - ¿SQS, SNS y EventBridge están usados para lo que toca?
Cola, pub/sub y bus de eventos no son exactamente lo mismo. - ¿Hay reintentos configurados?
Los fallos temporales son normales. - ¿Existe una DLQ para mensajes problemáticos?
Sin DLQ, analizar fallos puede ser mucho más difícil. - ¿Los consumidores son idempotentes?
Deben tolerar reintentos o mensajes duplicados cuando aplique. - ¿Hay alarmas de CloudWatch?
No basta con que la arquitectura funcione en una demo. - ¿Se mide la edad de los mensajes?
Una cola puede tener pocos mensajes, pero muy antiguos, y eso indica atasco. - ¿Los eventos tienen contrato y versión?
Cambiar eventos sin control rompe consumidores. - ¿Está documentado quién publica y quién consume?
Sin documentación, la arquitectura se vuelve difícil de mantener.
26. Resumen para quedarte con lo importante
Si estás preparando CLF-C02, quédate con estas ideas:
- Event-driven significa reaccionar a eventos.
- Un evento representa algo que ha ocurrido.
- El desacoplamiento reduce dependencias directas entre componentes.
- SQS sirve para colas de mensajes.
- SNS sirve para publicar mensajes a varios suscriptores.
- EventBridge sirve para enrutar eventos mediante reglas.
- Lambda ejecuta código en respuesta a eventos sin gestionar servidores.
- Las DLQ ayudan a gestionar mensajes que fallan repetidamente.
- CloudWatch es clave para métricas, logs y alarmas.
- No todo necesita eventos: úsalos cuando resuelvan un problema real.
Conclusión
La arquitectura event-driven en AWS es una forma muy potente de diseñar sistemas modernos, pero no consiste en meter colas, eventos y Lambdas por todas partes.
La idea de fondo es mucho más sencilla: separar componentes, absorber picos, permitir que varios sistemas reaccionen a lo que ocurre y evitar que una parte lenta o fallida tumbe todo el flujo principal.
Para alumnos que preparan AWS Certified Cloud Practitioner CLF-C02, lo más importante es entender cuándo encaja cada servicio: SQS para colas, SNS para pub/sub, EventBridge para eventos y reglas, y Lambda para ejecutar código sin servidores.
Cuando entiendes eso, ya no ves estos servicios como nombres sueltos para memorizar. Empiezas a verlos como piezas que ayudan a construir aplicaciones más flexibles, escalables y fáciles de evolucionar.