Estilos de arquitectura y patrones de comunicación

Desarrollo de aplicaciones en AWS

Ricardo Sueiras

Principal Technologist

Tu instructor/a

instructor

Desarrollo de aplicaciones en AWS

¿Qué son los patrones de arquitectura?

 

 

Arquitectura de aplicaciones

 

  • Solución repetible a un problema común.
  • Los patrones te ayudan a encajar servicios de AWS.
  • La arquitectura determina cómo rinde tu app bajo carga.
  • Varios patrones arquitectónicos que debes conocer.
Desarrollo de aplicaciones en AWS

Monolitos

 

 

diagrama de una arquitectura monolítica de ejemplo

 

 

  • Una sola unidad, fuertemente acoplada.
  • Un repositorio y un despliegue.
  • Sencillo al inicio.
  • Escalar duele: escalas todo a la vez.
Desarrollo de aplicaciones en AWS

Microservicios

 

arquitectura de microservicios

 

  • Servicios pequeños e independientes: cada uno posee una capacidad de negocio.
  • Despliega, escala y actualiza cada servicio por separado.
  • Contrapartida: más complejidad operativa y comunicación entre servicios.
Desarrollo de aplicaciones en AWS

Serverless

  • Sin infraestructura que gestionar: solo código y configuración.
  • Construye componiendo servicios gestionados de AWS.
  • AWS gestiona provisión, escalado y mantenimiento.
  • Contrapartida: límites de tiempo, arranques en frío, dependencia del proveedor.
  • Casi cero carga operativa y escalado automático.

 

arquitectura serverless

Desarrollo de aplicaciones en AWS

Arquitectura dirigida por eventos (EDA)

  • Los componentes se comunican con eventos, no con llamadas directas.
  • Un evento registra algo que ocurrió (pedido hecho, pago recibido, envío realizado).
  • Los productores emiten eventos.
  • Los consumidores se suscriben a los eventos que les interesan.

 

arquitectura dirigida por eventos

Desarrollo de aplicaciones en AWS

Sistemas fuertemente y débilmente acoplados

  • Las apps modernas en la nube constan de varios servicios.
  • Los servicios deben comunicarse y coordinarse para completar trabajo.
  • La comunicación síncrona está fuertemente acoplada.
  • La asíncrona está débilmente acoplada.

sistemas fuertemente y débilmente acoplados

Desarrollo de aplicaciones en AWS

Comunicación síncrona

 

comunicaciones síncronas

  • Un servicio envía una solicitud y espera la respuesta.
  • La llamada queda bloqueada hasta respuesta o tiempo de espera.
  • Fácil de implementar y entender.
  • Acoplamiento fuerte: la lentitud o fallo aguas abajo se propaga.
  • Mitiga con timeouts, reintentos y corta-circuitos.
Desarrollo de aplicaciones en AWS

Patrón: petición/respuesta

petición-respuesta

  • Base de la mayoría de interfaces de aplicación.
  • Comportamiento predecible.
  • Retroalimentación inmediata a los usuarios.
Desarrollo de aplicaciones en AWS

Comunicación asíncrona

 

comunicaciones asíncronas

  • El emisor no espera respuesta.
  • Envía un mensaje o evento y sigue procesando.
  • El receptor procesa el mensaje de forma independiente.
  • Débilmente acoplado: mejor escalabilidad y tolerancia a fallos.
  • Maneja picos de tráfico y caídas parciales con gracia.
  • Retos: mensajes duplicados, ordenación, consistencia eventual.
Desarrollo de aplicaciones en AWS

Patrón: desacoplo con colas

  • El productor envía mensajes a una cola.
  • El consumidor extrae y procesa mensajes de forma independiente.
  • Evita que los fallos se propaguen.
  • Productor y consumidor escalan por separado.

  basado en colas

Desarrollo de aplicaciones en AWS

Patrón: cola de workers

  • Varios workers extraen mensajes de una cola.
  • Mensajes procesados en paralelo.
  • Permite escalar horizontalmente y mayor rendimiento.
  • No se garantiza el orden

cola de workers

Desarrollo de aplicaciones en AWS

Patrón: publicación/suscripción

  • Los publicadores envían mensajes a un tema de SNS.
  • Varios suscriptores reciben el mismo mensaje.
  • Difusión en tiempo real a muchos consumidores.

 

patrón pub-sub

Desarrollo de aplicaciones en AWS

Patrón: fan-out

difusión (fan-out)

  • Un mensaje se entrega a varios consumidores a la vez.
  • Muy usado en arquitecturas dirigidas por eventos.
  • Útil cuando varios servicios deben reaccionar al mismo evento.
Desarrollo de aplicaciones en AWS

Orden de mensajes

orden de mensajes

  • Algunos trabajos deben procesar mensajes en la secuencia correcta.
  • Amazon SQS FIFO y Kinesis admiten procesamiento ordenado.
  • El orden estricto reduce el rendimiento.
  • Equilibra corrección y escalabilidad.
Desarrollo de aplicaciones en AWS

¡Vamos a practicar!

Desarrollo de aplicaciones en AWS

Preparing Video For Download...