Patrones de Arquitectura para Aplicaciones Escalables y Modulares
Clase 23 de 43 • Curso Profesional de Arquitectura de Software
Contenido del curso
- 2

Atributos de Calidad en Sistemas: Definición y Medición
01:49 - 3

Idoneidad Funcional: Completitud, Exactitud y Pertinencia
02:52 - 4

Eficiencia de Ejecución en Sistemas Informáticos
04:14 - 5

Compatibilidad en Sistemas: Interoperabilidad y Coexistencia
03:49 - 6

Subcaracterísticas de Usabilidad en Desarrollo de Software
08:14 - 7

Confiabilidad de Sistemas: Madurez, Disponibilidad, Resiliencia y Recuperación
05:38 - 8

Seguridad de Usuarios en Desarrollo de Software
04:01 - 9

Subcaracterísticas de Mantenibilidad en Sistemas de Software
06:28 - 10

Medición de Adaptabilidad en Sistemas de Software
02:48 - 11

Relación y Tensión entre Atributos de Calidad en Sistemas de Software
04:04 - 12

Atributos de Calidad en Arquitectura de Software
07:00
- 13

Patrones de Arquitectura Monolítica y Distribuida
02:50 - 14

Modelo Vista Controlador: Separación de Responsabilidades en Aplicaciones
05:38 - 15

Arquitectura de Capas: Diseño y Comunicación entre Niveles
03:14 - 16

Patrones de Arquitectura Orientada a Eventos y Event Sourcing
06:17 - 17

Patrón de Arquitectura MicroKernel y su Implementación en IDEs
01:52 - 18

Arquitectura "Comparte Nada": Optimización y Procesamiento de Datos
02:29 - 19

Patrón de Microservicios en Arquitectura de Software
03:57 - 20

Patrón CQRS para Separación de Consultas y Comandos
03:24 - 21

Arquitectura Hexagonal: Diseño y Aplicación Práctica
04:10 - 22

Diseño Orientado al Dominio: Conceptos y Aplicaciones Prácticas
05:34 - 23

Patrones de Arquitectura para Aplicaciones Escalables y Modulares
09:22 - 24

Patrones de Arquitectura en Proyectos de Crecimiento Empresarial
07:59
- 25

Diseño de Arquitecturas a Medida: Herramientas y Estrategias
02:18 - 26

Tipos de Conectores en Arquitectura de Software
06:18 - 27

Conectores Asíncronos y Sincrónicos: Implementación y Uso Práctico
03:05 - 28

Diferencias entre Enrutadores y Difusores en Comunicación de Mensajes
01:55 - 29

Conexión de Productores y Consumidores con Colas de Mensajes
03:52 - 30

Framework de Diseño Orientado a Atributos: Escenarios y Tácticas
01:55 - 31

Tácticas para Mejorar la Disponibilidad de Sistemas
05:59 - 32

Tácticas para Mejorar la Disponibilidad del Sistema
04:10 - 33

Tácticas para Mejorar la Mantenibilidad del Software
06:16 - 34

Prevención de Efectos Dominó en Mantenibilidad de Software
12:17 - 35

Estrategias para Mejorar la Eficiencia de Ejecución en Sistemas
09:15 - 36

Tácticas de Seguridad Informática para Detectar, Resistir y Recuperarse de Ataques
09:03 - 37

Estrategias para Mejorar la Capacidad de Prueba de Software
05:14 - 38

Tácticas de Usabilidad en Diseño de Interfaces de Usuario
08:20 - 39

Validación de Arquitectura con ATAM y Métricas de Calidad
06:34 - 40

Diseño de Arquitectura para Startups y Empresas Escalables
10:30
¿Cómo combinar patrones de arquitectura en aplicaciones complejas?
Combinar patrones de arquitectura es una habilidad esencial para desarrolladores de software, especialmente cuando se trabaja con aplicaciones complejas que requieren modularidad y escalabilidad. Esto implica entender cómo interactúan las diferentes partes de una aplicación y cómo se pueden estructurar internamente. A continuación, exploraremos cómo aplicar estas combinaciones efectivamente.
¿Qué es una aplicación cliente-servidor con microservicios y Flux?
Al crear una aplicación cliente, React es una elección popular, utilizando la arquitectura Flux propuesta por Facebook. Esta aplicación cliente se comunica con servidores a través de la web, que operan bajo un balanceador de carga. Los servidores son microservicios, cada uno operando de forma independiente:
- Cliente en React y Flux: Uso de la arquitectura para gestionar estados y acciones dentro del cliente.
- Microservicios: Permiten que cada componente se despliegue independientemente y tenga claro su responsabilidad, facilitando el mantenimiento y la actualización.
Cuando los microservicios necesitan comunicarse, aunque están diseñados para no conocerse mutuamente, se puede implementar una arquitectura de eventos. Esta usa un bus de eventos que mantiene a los servicios independientes al introducir modelos Publish-Subscribe, eliminando la necesidad de comunicación directa entre ellos.
¿Cuál es la importancia del patrón CQRS en arquitecturas centradas en datos?
Al manejar datos en múltiples aplicaciones, se puede usar el patrón CQRS (Command Query Responsibility Segregation) para separar las operaciones de escritura y lectura. Este patrón se aplica frecuentemente en arquitecturas donde el procesamiento se realiza en capas separadas:
- Aplicación MVC: Encargada de comunicarse con el usuario y gestionar una base de datos inicialmente.
- Procesamiento Share Nothing: Separa el procesamiento de datos en procesos individuales que no dependen del estado compartido.
- Lectura de datos: A través de aplicaciones en capas que interactúan con operadores para interpretar datos procesados.
Estas capas de escritura, procesamiento y lectura facilitan modularidad y permiten escalar servicios en respuesta a datos agregados. Tal enfoque es crucial para aplicaciones que crecen en complejidad y requieren una separación clara de responsabilidades.
¿Cómo se maneja un sistema legacy con una arquitectura hexagonal?
Cuando se trabaja con sistemas legacy no bien estructurados, la estrategia es implementar un nuevo sistema más limpio al lado del existente:
- Arquitectura Hexagonal: Utiliza puertos y adaptadores para desacoplar el sistema nuevo de la estructura legacy.
- Base de datos compartida: Permite la coexistencia de ambos sistemas, eliminando la necesidad del legacy de conocer los detalles internos del nuevo sistema.
- Persistencia de eventos: Ambos sistemas pueden enviar eventos a un bus común, sirviendo como fundamentos para auditoría y análisis histórico.
Al implementar nuevas funciones por fuera del legacy, se pueden apagar partes obsoletas, eventualmente retirando el sistema legacy, especialmente cuando este no es sostenible a largo plazo por falta de pruebas o tecnología anticuada. Esta transformación asegura la coexistencia de sistemas sin aumentar el caos, permitiendo la evolución controlada del stack tecnológico.
Esta metodología de trabajar con sistemas legacy mientras se transforman arquitecturas hacia modelos más modernos es esencial para mantener la flexibilidad y mejorar la eficiencia operativa a lo largo del tiempo.