Patrones de arquitectura orientada a eventos

Aprende diseno orientado a eventos, acoplamiento debil, patrones sincronos/asincronos y Step Functions.

Si eres nuevo en el desarrollo en la nube, "arquitectura orientada a eventos" puede sonar a jerga tecnica. Pero en realidad es un concepto que ya usas en tu vida diaria. Cuando pides un cafe en una cafeteria, el barista empieza a prepararlo y tu eres libre de hacer otras cosas mientras esperas. Eso es exactamente la arquitectura orientada a eventos: cuando ocurre un "evento" (como un pedido), los servicios relacionados reaccionan cada uno por su cuenta.

 

Monolitico vs Microservicios

Comencemos entendiendo por que este tipo de estructura es necesaria.

En el pasado, era habitual meter todas las funciones en un solo programa gigante (monolitico). En una tienda en linea, eso significa que el login, la busqueda de productos, el pago y el seguimiento de envios viven todos dentro de un unico codigo. El problema es que corregir incluso una parte pequena — por ejemplo, la funcion de pago — requiere redesplegar todo el sistema. Es como tener que desalojar un edificio entero para arreglar una sola habitacion.

Los microservicios resuelven este problema. El login, el pago y el envio se separan en servicios independientes y pequenos. Si el servicio de pago tiene un problema, el login y la busqueda de productos siguen funcionando sin problemas. Piensalo como un complejo de apartamentos donde cada edificio opera de forma independiente.

 

Acoplamiento — Como se conectan los servicios entre si

Una vez que has dividido tu sistema en multiples servicios, la forma en que se conectan entre si importa enormemente.

El acoplamiento fuerte (Tight Coupling) es como el servicio A llamando directamente al servicio B por telefono. Si B no contesta (cae), A no puede hacer absolutamente nada.

El acoplamiento debil (Loose Coupling) es como A dejando una nota en un buzon para que B la recoja y la procese mas tarde. Aunque B este temporalmente fuera (caido), A puede seguir dejando notas, y cuando B regrese, las procesara en orden. En AWS, SQS (Simple Queue Service) hace el papel de ese buzon.

 

Procesamiento Sincrono vs Asincrono

Sincrono significa que pides el cafe y te quedas de pie en el mostrador esperando hasta que este listo. Llamar a Lambda directamente a traves de API Gateway y esperar una respuesta es un ejemplo clasico.

Asincrono es como pedir a traves de una app de cafe, sentarte a trabajar en otra cosa y acercarte al mostrador solo cuando suena tu buzzer. Cuando Lambda se activa via SNS o SQS, la llamada retorna inmediatamente y los resultados se verifican despues.

Los patrones asincronos ofrecen tres ventajas clave. Primero, manejan grandes volumenes de solicitudes simultaneas (escalabilidad). Segundo, un fallo en una parte no detiene todo el sistema (tolerancia a fallos). Tercero, cada servicio trabaja de forma independiente sin interferir con los demas (independencia).

 

Patrones clave

Fan-out

Piensalo como una emision de radio. Un evento se entrega a multiples servicios al mismo tiempo. Por ejemplo, cuando llega un nuevo pedido, el servicio de inventario, el servicio de pago y el servicio de notificaciones reciben la novedad simultaneamente y actuan en consecuencia.

En AWS, un topico SNS actua como la emisora de radio, y cada cola SQS actua como suscriptor. El patron de conectar un topico SNS a multiples colas SQS — el fan-out SNS + SQS — es el patron mas evaluado en DVA-C02.

Orquestacion vs Coreografia

La orquestacion funciona como un director de orquesta — una autoridad central dice "iniciar servicio 1, luego cuando termine, iniciar servicio 2" y controla todo el flujo. AWS Step Functions desempena este rol. Permite gestionar flujos de trabajo complejos de forma visual y rastrear el exito o fallo de cada paso.

La coreografia es como un flash mob. Cuando empieza la musica (un evento se dispara), cada participante realiza su movimiento asignado. No hay director central; cada servicio ve el evento y responde por su cuenta. AWS EventBridge sirve como este bus de eventos.

!Orquestación vs coreografía

Step Functions en detalle

Step Functions es un servicio de flujo de trabajo que conecta multiples funciones Lambda o servicios AWS en secuencia. Hay dos tipos segun como se ejecutan.

El tipo Standard puede ejecutarse hasta un ano y mantiene un registro de auditoria completo de cada ejecucion. Es adecuado para procesos de negocio importantes.

El tipo Express se ejecuta hasta cinco minutos, es extremadamente rapido y cuesta menos. Se usa cuando se procesan cientos de miles de eventos cortos por segundo.

Los tipos de estado incluyen Task (ejecuta trabajo), Choice (bifurcacion condicional), Parallel (procesamiento paralelo), Wait (introduce un retraso), Map (procesa arreglos), y Succeed y Fail.

 

Puntos clave para el examen

"Un evento a multiples servicios simultaneamente" -- SNS fan-out

"Gestion central del flujo de trabajo" -- Step Functions (orquestacion)

"Servicios reaccionan independientemente a eventos" -- Coreografia (EventBridge)

"Falla del servicio B no afecta a A" -- Acoplamiento debil (usar SQS)

"Componentes que no almacenan estado" -- Diseno stateless

"Solicitud y retorno inmediato, resultados despues" -- Patron asincrono

"Ejecucion corta, alto throughput" -- Step Functions Express

SNS + SQS fan-out = patron mas frecuente en DVA-C02

Volver a la lista del blog