ARQUITECTURA DE
SOFTWARE
Unidad 2
Docente: Yosser Urzúa Gallardo
INTRODUCCIÓN A DOMAIN-DRIVEN DESIGN (DDD)
• Definición: "Diseño enfocado en modelar un
dominio complejo para crear software
efectivo".
• Origen: Eric Evans y su libro "Domain-Driven
Design: Tackling Complexity in the Heart of
Software".
• Importancia: Relevancia en sistemas
complejos.
¿QUÉ ES EL DOMINIO?
• Dominio: El área de conocimiento específica que el software debe resolver.
• Ejemplo: Para una biblioteca, el dominio incluye libros, usuarios y préstamos.
¿Qué dominio podríamos modelar para una aplicación de comida a domicilio?
MODELADO DEL DOMINIO
• Proceso de convertir conceptos
del negocio en representaciones
técnicas.
• Herramientas: Diagramas UML,
entrevistas con expertos del
dominio.
• Ejemplo: Mapeo de usuarios,
libros y préstamos en una
biblioteca.
¿Cuál es el benefcio de usar modelos visuales para comprender el dominio?
UBICUIDAD DEL LENGUAJE
• Definición: Un lenguaje
común entre
desarrolladores y
expertos del dominio.
• Ejemplo: En lugar de
"item", usar "Libro" en
discusiones y código.
¿Cómo usar un lenguaje compartdo podría evitar malentendidos en un proyecto?
AGREGADOS Y RAÍCES DE AGREGADO
• Definición: Agrupación
lógica de entidades y
objetos de valor.
• Ejemplo: "Préstamo" como
agregado que incluye
"Libro", "Usuario" y "Fecha".
VENTAJAS Y DESVENTAJAS
DE DDD
ARQUITECTURAS DE SOFTWARE Y PRINCIPIOS DDD
• Objetivos:
1.Conocer las principales estructuras de aplicaciones: Monolítica, Cliente-
Servidor y P2P.
2.Entender ventajas, desventajas y usos de cada arquitectura.
3.Aplicar conceptos de DDD en ejemplos prácticos.
¿Sabes cuál es la arquitectura más común en las aplicaciones que usas diariamente?
ARQUITECTURA MONOLÍTICA
• Definición: Una única unidad de software.
• Componentes principales: Capas (UI, Lógica, Datos), base de datos común
y un solo proceso.
• Ejemplo práctico:
Una tienda en línea pequeña que gestiona productos, clientes y ventas desde
una sola aplicación.
¿Qué problemas enfrentarías si esta tenda en línea crece rápidamente?
ARQUITECTURA MONOLÍTICA (VENTAJAS Y DESVENTAJAS)
• Ventajas: Desarrollo rápido, despliegue sencillo, facilidad de depuración.
• Desventajas: Acoplamiento fuerte, problemas de escalabilidad, mayor riesgo
de fallos.
¿Por qué es ideal para startups?
¿Qué limitaciones tendría al crecer?
ARQUITECTURA CLIENTE-SERVIDOR (ESTRUCTURA)
• Definición: Separación entre cliente (interfaz) y servidor (lógica y datos).
• Componentes: Cliente, servidor, comunicación por protocolos (ej.: HTTP).
• Diagrama visual: Cliente -> Red -> Servidor.
• Ejemplo práctico:
Una aplicación web donde los usuarios solicitan datos al servidor (como
Gmail).
¿Qué pasa si el servidor de Gmail falla?
ARQUITECTURA CLIENTE-SERVIDOR (VENTAJAS Y DESVENTAJAS)
• Ventajas: Escalabilidad, mantenimiento simplificado, control centralizado.
• Desventajas: Dependencia de red, complejidad en la comunicación, costo.
ARQUITECTURA CLIENTE-SERVIDOR
EJEMPLO PRÁCTICO
• Contexto
• Imagina que trabajas como desarrollador en una empresa que utiliza una aplicación cliente-servidor
para la gestión de inventarios. Esta aplicación permite que los empleados registren entradas y salidas
de productos en tiempo real desde sus estaciones de trabajo (clientes) conectadas a un servidor
central que almacena y procesa los datos.Un día, durante un horario de alta actividad, el servidor deja
de responder. Los empleados no pueden registrar movimientos de inventario, lo que está generando
retrasos significativos y caos en la operación.Problema a resolverEl servidor está inactivo, y la
aplicación cliente muestra errores al intentar conectarse. La comunicación no se restablecerá en al
menos 2 horas debido a una falla en el hardware del servidor. Sin embargo, los empleados necesitan
seguir trabajando para evitar interrupciones críticas.
• Preguntas para Reflexión
• ¿Cómo puedes permitir que los clientes sigan registrando datos de inventario sin conexión al
servidor?P
• ¿Qué mecanismos puedes implementar en el futuro para mitigar este tipo de fallos?
• ¿Cómo se podría manejar la sincronización de datos una vez que el servidor esté operativo
nuevamente?
ARQUITECTURA PEER-TO-PEER (P2P) (ESTRUCTURA)
• Definición: Todos los nodos actúan como cliente y servidor.
• Componentes: Nodos equivalentes, comunicación descentralizada, sin punto
único de fallo.
• Diagrama: Red de nodos interconectados.
• Ejemplo práctico:
Compartir archivos mediante BitTorrent.
¿Cómo se asegura que todos los nodos compartan datos de manera justa?
ARQUITECTURA PEER-TO-PEER (VENTAJAS Y DESVENTAJAS)
• Ventajas: Descentralización, escalabilidad, resistencia a fallos.
• Desventajas: Complejidad de gestión, seguridad, eficiencia limitada.
Tabla comparatva de las arquitecturas
ALTERNATIVAS DE ARQUITECTURAS DE SOFTWARE
Otras alternativas de arquitectura de software…
Service-Oriented
Característca Arquitectura en Capas Microkernel Architecture (SOA)
Capas lógicas (presentación,Núcleo mínimo esencial; Servicios independientes,
Estructura lógica de negocio, servicios adicionales como cada uno con su propia lógica
persistencia). módulos externos. y datos.
Núcleo mínimo esencial para
Capas están fuertemente funcionalidad central; Servicios independientes y
Desacoplamiento
acopladas. módulos externos desacoplados.
desacoplados.
Menos fexible en Permite escalabilidad
Permite escalabilidad
Escalabilidad escalabilidad individual de independiente de módulos individual de servicios.
capas. externos.
Menos modularidad, cambios Alta modularidad, cambios en Modular, servicios
Modularidad pueden afectar a múltples módulos externos no afectan independientes pueden
capas. al núcleo esencial. actualizarse sin afectar otros.
ALTERNATIVAS DE ARQUITECTURAS DE SOFTWARE
Service-Oriented
Característca Arquitectura en Capas Microkernel Architecture (SOA)
Comunicación entre núcleo
Comunicación Comunicación a través de
y módulos externos, a
Comunicación principalmente interna servicios y protocolos
menudo a través de
entre capas. estándar.
interfaces.
Menos fexible en términos Mayor fexibilidad debido a Mayor fexibilidad y
Flexibilidad de cambio rápido y la modularidad y adaptabilidad a través de
adaptación. extensibilidad. servicios independientes.
Tecnologías de servicios
Frameworks MVC, Microkernel frameworks
Tecnologías Asociadas web, estándares como
monolitos. como OSGi. SOAP y REST.
Aplicación empresarial Núcleo mínimo esencial del Plataformas de servicios
clásica con capas de web, aplicaciones
Ejemplos sistema operatvo con
presentación, lógica de distribuidas con servicios
módulos externos.
negocio y persistencia. independientes.
ALTERNATIVAS DE ARQUITECTURAS DE SOFTWARE
Otras alternativas de arquitectura de software…
Tional Event-Driven Architecture Representatonal State
Característca Microservicios (EDA) Transfer (REST)
Servicios independientes y Basada en eventos y Basada en recursos y
Estructura
autocontenidos. mensajes. operaciones.
Altamente desacoplado entre Desacoplamiento a través de Desacoplamiento a través de
Desacoplamiento microservicios. eventos y mensajes. URI y representaciones.
Escalabilidad individual de Escalabilidad basada en Escalabilidad basada en
Escalabilidad
microservicios. eventos distribuidos. recursos.
Alta modularidad, cada Modularidad a través de Modularidad a través de
Modularidad microservicio es eventos y mensajes. recursos y servicios.
independiente.
ALTERNATIVAS DE ARQUITECTURAS DE SOFTWARE
Event-Driven Architecture Representatonal State
Característca Microservicios (EDA) Transfer (REST)
Comunicación a través de Comunicación a través de
Comunicación basada en
Comunicación API y protocolos (HTTP, protocolos estándar (HTTP,
eventos y mensajes.
gRPC, etc.). HTTPS).
Bases de datos
Cada microservicio puede Bases de datos
compartdas o eventos
Manejo de Datos tener su propia base de independientes, estado sin
para mantener la
datos. sesión.
coherencia.
Favorece operaciones
Facilita la adaptabilidad y Permite reacción a eventos sencillas y fexibilidad en el
Flexibilidad
cambio rápido. y cambios en tempo real. cliente.
Docker, Kubernetes, Spring Apache Kafa, RabbitMQ, HTTP, HTTPS, JSON, XML,
Tecnologías Asociadas
Boot. Event Hubs. RESTful frameworks.
Sistemas de transmisión
APIs web en aplicaciones
Ejemplos Netflix, Amazon, Spotfy. en tempo real, sistemas
RESTful, servicios web.
de IoT.
MUCHAS GRACIAS