Estilos de arquitectura y patrones de comunicación
Desarrollo de aplicaciones en AWS
Ricardo Sueiras
Principal Technologist
Tu instructor/a
¿Qué son los patrones de arquitectura?
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.
Monolitos
Una sola unidad, fuertemente acoplada.
Un repositorio y un despliegue.
Sencillo al inicio.
Escalar duele: escalas todo a la vez.
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.
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 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.
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.
Comunicación síncrona
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.
Patrón: petición/respuesta
Base de la mayoría de interfaces de aplicación.
Comportamiento predecible.
Retroalimentación inmediata a los usuarios.
Comunicación asíncrona
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.
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.
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
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: 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.
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.
¡Vamos a practicar!
Desarrollo de aplicaciones en AWS
Preparing Video For Download...