Parte 2 - Tema 1 Flashcards

Arquitectura software

1
Q

Arquitectura software

A

La arquitectura de un sistema software constituye un modelo relativamente pequeño e intelectualmente comprensible de cómo está estructurado dicho sistema y de cómo trabajan juntos sus componentes. Es la representación de dicho software que permite:
* Analizar la efectividad del diseño para la consecución de los requisitos fijados.
* Considerar las alternativas arquitectónicas en una etapa en la cual hacer cambios en el diseño es relativamente fácil.
* Reducir los riesgos asociados a la construcción del software

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Principios

A

Hay 12 principios que están relacionados a la escalabilidad, disponibilidad y costo

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Principio 1: N+1 Design

A

Para garantizar la disponibilidad de tu software, ten al menos una instancia adicional en tu esquema de despliegue.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Principio 2: Design for rollback

A

Para garantizar también la disponibilidad, asegúrate que todo cambio en tu software sea fácilmente revertible.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Principio 3: Design to Be Disabled

A

Cuando dependes de un sistema, y este no se encuentre disponible, establece un mecanismo que garantice un normal funcionamiento.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Principio 4: Design to Be Monitored

A

Además de monitorear cuándo el sistema no está funcionando correctamente, debes obtener indicadores que permita identificar cuándo se está desempeñando de manera diferente a lo normal.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Principio 5: Design for Multiple Live Sites

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Principio 6: Use Mature Technologies

A

Usar una tecnología emergente se consciente que al hallar errores, la comunidad a consultar será muy pequeña. Si quieres evitar eso trata de usar tecnologías ya probadas y con una gran comunidad.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Principio 7: Asynchronous Design

A

Siempre que sea posible, los sistemas deben comunicarse de forma asincrónica, ya que son más tolerantes a fallas y no caen fácilmente a cargas extremas

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Principio 8: Stateless Systems

A

Trate de evitar el estado siempre que sea posible, ya que almacenarlo requiere memoria lo que aumenta el costo de su sistema.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Principio 9: Scale Out Not Up

A

Escale horizontalmente en lugar de verticalmente, si el adquirir un hardware más rápido, más grande y más caro, no sea indispensable para el crecimiento de su negocio.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Principio 10: Design for at Least Two Axes of Scale

A

Se consideran el escalamiento en ejes, lo que se conoce como el cubo de la escalabilidad, eje x (clonación y replicación), eje y (divide componentes diferentes) y eje z (divide componentes no diferentes)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Principio 11: Buy when non core

A

Independientemente de lo inteligente que sea su equipo, simplemente no son los mejores en todo. Construya cosas cuando sea realmente bueno en eso y haga una diferencia significativa en su producto, plataforma o sistema. Y compre cuando no sea el caso.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Principio 12: Use Commodity Hardware

A

No diseñes una solución que dependa de un hardware específico.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Arquitectura Monolítica

A

Consiste en crear una aplicación autosuficiente que contenga absolutamente toda la funcionalidad necesaria para realizar la tarea para la cual fue diseñada, sin contar con dependencias externas que complementen su funcionalidad.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Arquitectura Monolítica Ventajas

A
  • Fácil de desarrollar
  • Fácil de escalar
  • Pocos puntos de fallo
  • Autónomo
  • Rendimiento
  • Fácil de probar
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Arquitectura Monolítica Desventajas

A
  • Anclado a un Stack tecnológico
  • Escalado Monolítico
  • El tamaño sí importa
  • Versión tras versión
  • Si falla, falla todo
  • Es fácil perder el rumbo
  • Puede ser abrumador
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Arquitectura Cliente/Servidor

A

El componente servidor proporcionará servicios a múltiples componentes cliente. Los clientes solicitan servicios al servidor y éste proporciona los servicios pertinentes a dichos clientes. Además, el servidor sigue escuchando las peticiones de los clientes.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Arquitectura Cliente/Servidor Ventajas

A
  • Administración centrada en el servidor.
  • Centralización de los recursos.
  • Mejora de la seguridad.
  • Escalabilidad de la instalación.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Arquitectura Cliente/Servidor Desventajas

A
  • Coste elevado.
  • Dependencia del servidor.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Arquitectura en capas

A

Cuya base es la separación de las diferentes funcionalidades del sistema en capas o niveles, donde cada capa se encarga de un conjunto de tareas específicas y se comunica con los niveles adyacentes mediante interfaces bien definidas.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

Arquitectura en capas Ventajas

A
  • Modularidad
  • Separación de responsabilidades
  • Reutilización
  • Escalabilidad
  • Flexibilidad
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

Arquitectura en capas Desventajas

A
  • Complejidad
  • Tiempo y esfuerzo de desarrollo
  • Consumo de recursos
  • Costos
  • Rendimiento
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

Arquitectura peer to peer

A

Es una red de computadoras donde todos los dispositivos conectados a la red actúan como cliente y servidor al mismo tiempo. En esta arquitectura no es necesario un servidor central que administre la red (aunque puede existir), si no que todos los nodos de la red pueden comunicarse entre sí.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Q

Arquitectura peer to peer Ventajas

A

Alta escalabilidad
Tolerancia a fallas
Descentralización
Privacidad
Equilibrio de carga

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
26
Q

Arquitectura peer to peer Desventajas

A
  • Alta complejidad
  • Control
  • Seguridad
  • Tráfico
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
27
Q

Arquitectura orientada a los servicios (SOA)

A

SOA es una arquitectura de software que estructura una aplicación como una colección de servicios interoperables que se comunican entre sí a través de una red. Cada servicio realiza una función empresarial específica y se publica, descubre y se invoca a través de una red.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
28
Q

Cuáles son los principales componentes de una SOA

A

Los componentes clave incluyen: servicios, contratos de servicio, registro de servicios, ESB (Enterprise Service Bus), y consumidores de servicios.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
28
Q

¿Cuál es la diferencia entre un servicio web y un servicio SOA?

A

Aunque todos los servicios web son servicios, no todos los servicios son servicios web. SOA es un enfoque más amplio que incluye servicios web, pero también puede utilizar otros protocolos y estándares. Los servicios SOA se centran más en los negocios y en la interoperabilidad a largo plazo.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
29
Q

¿Cuáles son las ventajas de SOA?

A

Reutilización de servicios, mayor flexibilidad, escalabilidad, agilidad, y alineación con los objetivos del negocio.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
30
Q

¿Cuáles son los desafíos de SOA?

A

Complejidad de implementación, costos de desarrollo iniciales, gestión de la gobernanza de servicios, y dependencia de una infraestructura sólida.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
31
Q

¿Qué es un ESB?

A

Un ESB es un software que actúa como intermediario entre los diferentes servicios de una SOA, facilitando la comunicación y la transformación de datos.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
32
Q

¿Cómo se asegura la seguridad en una SOA?

A

A través de mecanismos como la autenticación, la autorización, el cifrado de datos, y la gestión de identidades.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
33
Q

¿Cuál es la diferencia entre SOA y microservicios?

A

Ambos son enfoques arquitectónicos basados en servicios, pero los microservicios son más granulares y se despliegan de forma independiente. SOA suele tener un enfoque más centralizado.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
34
Q

Desventajas de la Arquitectura Orientada a Servicios (SOA)

A
  • Complejidad
  • Costo
  • Riesgo
  • Tiempo de implementación
  • Curva de aprendizaje
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
35
Q

¿Qué es un microservicio?

A

Un microservicio es una pequeña aplicación independiente que realiza una única función bien definida dentro de un sistema más grande.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
36
Q

¿Por qué utilizar microservicios?

A

Mayor escalabilidad, flexibilidad, facilidad de desarrollo, despliegue independiente y tecnologías heterogéneas.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
37
Q

¿Cómo se diseñan los microservicios?

A

Se diseñan en torno a dominios de negocio específicos y se comunican a través de APIs bien definidas.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
38
Q

¿Qué tecnologías se utilizan comúnmente para desarrollar microservicios?

A

Docker, Kubernetes, contenedores, API Gateway, lenguajes como Java, Node.js, Go y frameworks como Spring Boot.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
39
Q

¿Qué es un API Gateway?

A

Un API Gateway actúa como punto de entrada único para los clientes, enrutando las solicitudes a los microservicios correspondientes.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
40
Q

¿Cuáles son las ventajas de los microservicios sobre SOA?

A

Mayor escalabilidad, flexibilidad, tecnología heterogénea, despliegue independiente.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
41
Q

¿Cuáles son las desventajas de los microservicios?

A

Mayor complejidad operativa, gestión de múltiples servicios, necesidad de herramientas especializadas.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
42
Q

¿Cuándo es adecuado utilizar microservicios?

A

Para sistemas grandes y complejos que requieren alta escalabilidad y flexibilidad.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
43
Q

¿Cuáles son las tendencias actuales en microservicios?

A

Serverless, funciones como servicio, edge computing

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
44
Q

¿Qué es un sistema en tiempo real?

A

Un sistema en tiempo real es aquel cuya corrección depende no solo de la lógica de los resultados computacionales, sino también de los momentos en los que se producen dichos resultados.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
45
Q

¿Cuáles son las características clave de un sistema en tiempo real?

A

Respuesta rápida, determinismo, fiabilidad, seguridad, capacidad de respuesta a eventos externos.

46
Q

¿Qué requisitos especiales tienen los sistemas en tiempo real?

A

Tiempo de respuesta predecible, baja latencia, alta disponibilidad, tolerancia a fallos.

47
Q

¿Cuáles son los componentes principales de un sistema en tiempo real?

A

Hardware (procesadores, sensores, actuadores), sistema operativo en tiempo real (RTOS), software de aplicación.

48
Q

¿Qué factores se deben considerar al diseñar un sistema en tiempo real?

A

Predictibilidad, modularidad, escalabilidad, seguridad.

49
Q

¿Cuáles son algunos ejemplos de sistemas en tiempo real?

A

Sistemas de control industrial, sistemas de aviónica, sistemas médicos, robots.

50
Q

¿Qué es un sistema transaccional?

A

Un sistema transaccional es un sistema de información que recopila, almacena, modifica y recupera información relacionada con las transacciones de una organización. Estas transacciones pueden ser desde ventas y compras hasta actualizaciones de registros.

51
Q

¿Qué es una transacción?

A

Una transacción es una unidad de trabajo atómica, es decir, una serie de operaciones que se ejecutan como un todo. Si una transacción falla, todas las operaciones se deshacen, garantizando la integridad de los datos.

52
Q

¿Cuáles son las propiedades ACID de las transacciones?

A

Las propiedades ACID (Atomicidad, Consistencia, Aislamiento y Durabilidad) garantizan la integridad y la fiabilidad de las transacciones en un sistema de base de datos.

53
Q

¿Cuáles son los componentes principales de un sistema transaccional?

A

Base de datos transaccional, interfaz de usuario, lógica de negocio, middleware.

54
Q

¿Cuál es la importancia del middleware en un sistema transaccional?

A

El middleware facilita la comunicación entre diferentes componentes del sistema, gestiona las transacciones y proporciona servicios adicionales como seguridad y monitoreo.

55
Q

¿Cuáles son algunos ejemplos de sistemas transaccionales?

A

Sistemas de punto de venta, sistemas bancarios, sistemas de reservas, sistemas de gestión de inventario.

56
Q

¿Cuál es la principal ventaja de un sistema transaccional?

A

Garantizan la integridad y consistencia de los datos, evitando pérdidas o duplicidades. Son esenciales para operaciones críticas donde la precisión es fundamental.

57
Q

¿Cómo mejora un sistema transaccional la eficiencia de una organización?

A

Respuesta: Automatiza procesos, reduce errores manuales y agiliza las transacciones, lo que se traduce en una mayor productividad.

58
Q

¿Qué papel juegan los sistemas transaccionales en la toma de decisiones?

A

Proporcionan datos precisos y actualizados para la toma de decisiones informadas y basadas en hechos.

59
Q

¿Cómo contribuyen los sistemas transaccionales a la seguridad de los datos?

A

Implementan mecanismos de control de acceso, cifrado y copias de seguridad para proteger la información confidencial.

60
Q

¿Cuál es la principal desventaja de un sistema transaccional?

A

Pueden ser rígidos y difíciles de modificar, lo que los hace menos flexibles ante cambios rápidos en los requisitos del negocio.

61
Q

¿Cómo afecta la complejidad de un sistema transaccional a su mantenimiento?

A

Sistemas complejos pueden ser difíciles de mantener y actualizar, requiriendo personal altamente especializado.

62
Q

¿Qué problemas de rendimiento pueden surgir en sistemas transaccionales de gran tamaño?

A

Pueden experimentar cuellos de botella y lentitud en el procesamiento de transacciones, especialmente bajo cargas altas.

63
Q

¿Cómo afecta la dependencia de una base de datos a un sistema transaccional?

A

Una falla en la base de datos puede causar la pérdida de datos y paralizar el sistema completo.

64
Q

¿Qué es una arquitectura de objetos distribuidos?

A

Una arquitectura de objetos distribuidos es un modelo de software donde los objetos, que encapsulan tanto datos como comportamiento, se distribuyen en múltiples computadoras conectadas en red.

65
Q

¿Cuál es la diferencia entre un objeto y un proceso en una arquitectura distribuida?

A

Un objeto representa una entidad del mundo real con propiedades y métodos, mientras que un proceso es la unidad de ejecución en un sistema operativo.

66
Q

¿Cuáles son los principales objetivos de una arquitectura de objetos distribuidos?

A

Reutilización de código, modularidad, escalabilidad, transparencia de la distribución.

67
Q

¿Cuáles son los componentes clave de una arquitectura de objetos distribuidos?

A

Objetos distribuidos, middleware, registro de objetos, sistema de nombres.

68
Q

¿Qué es el middleware en una arquitectura de objetos distribuidos?

A

El middleware proporciona servicios de comunicación, gestión de transacciones y seguridad entre objetos distribuidos.

69
Q

¿Qué es un registro de objetos?

A

Un registro de objetos es una base de datos que almacena información sobre los objetos disponibles en el sistema.

70
Q

¿Cuáles son los principales desafíos en el diseño de arquitecturas de objetos distribuidos?

A

Transparencia de la distribución, concurrencia, gestión de estados, seguridad.

71
Q

¿Cómo se garantiza la consistencia de los datos en un sistema distribuido de objetos?

A

A través de mecanismos de bloqueo, transacciones distribuidas y replicación de datos.

72
Q

¿Qué papel juega la seguridad en una arquitectura de objetos distribuidos?

A

La seguridad es fundamental para proteger los objetos y la comunicación entre ellos. Se utilizan mecanismos como la autenticación, la autorización y el cifrado

73
Q

¿Cuáles son algunos ejemplos de sistemas que utilizan arquitecturas de objetos distribuidos?

A

Sistemas de comercio electrónico, sistemas de colaboración en línea, aplicaciones de realidad virtual.

74
Q

¿Cuáles son las principales ventajas de las arquitecturas de objetos distribuidos?

A

Reutilización de código, modularidad, escalabilidad, flexibilidad.

75
Q

¿Cuáles son las principales desventajas de las arquitecturas de objetos distribuidos?

A

Complejidad, gestión de estados, rendimiento, seguridad

76
Q

¿Qué es CORBA?

A

CORBA es un estándar de la industria para desarrollar y ejecutar aplicaciones distribuidas basadas en objetos. Define una arquitectura de middleware que permite a objetos en diferentes plataformas comunicarse entre sí.

77
Q

¿Cuáles son las principales características de CORBA?

A
  • Interoperabilidad: Permite que objetos escritos en diferentes lenguajes y ejecutando en diferentes plataformas se comuniquen.
  • Independencia de la plataforma: Las aplicaciones CORBA pueden ejecutarse en cualquier plataforma que implemente la especificación CORBA.
  • Abstracción de la distribución: Oculta la complejidad de la comunicación distribuida a los desarrolladores.
78
Q

¿Cuáles son los componentes clave de CORBA?

A
  • ORB (Object Request Broker): El núcleo de CORBA, que enruta las solicitudes de los clientes a los objetos correspondientes.
  • IDL (Interface Definition Language): Un lenguaje para definir las interfaces de los objetos.
  • IIOP (Internet Inter-ORB Protocol): El protocolo de comunicación estándar para CORBA.
79
Q

¿Cuáles son las ventajas de CORBA?

A

Alta interoperabilidad, madurez, gran comunidad de desarrolladores.

80
Q

¿Cuáles son las desventajas de CORBA?

A

Complejidad, sobrecarga, puede ser pesado para aplicaciones simples.

81
Q

¿Qué es DCOM?

A

DCOM es una tecnología propietaria de Microsoft que extiende el modelo de objetos componentes (COM) a entornos distribuidos.

82
Q

¿Cuáles son las principales características de DCOM?

A
  • Integración con el sistema operativo Windows: DCOM está estrechamente integrado con el sistema operativo Windows.
  • Facilidad de uso: DCOM es relativamente fácil de usar para los desarrolladores de Microsoft.
83
Q

¿Cuáles son las ventajas de DCOM

A

Fácil integración con otras tecnologías de Microsoft, rendimiento.

84
Q

¿Cuáles son las desventajas de DCOM?

A

Propietario, menos interoperable que CORBA, más ligado a la plataforma Windows.

85
Q

¿Qué es una arquitectura Event-Driven?

A

Una arquitectura Event-Driven (EDA) es un paradigma de diseño de software donde los eventos desencadenan y coordinan la comunicación entre servicios desacoplados. Un evento es un cambio de estado o una actualización, como un pedido realizado o un pago completado.

86
Q

¿Cuáles son los componentes principales de una arquitectura Event-Driven?

A

Productores de eventos, consumidores de eventos, canal de eventos (bus de eventos) y el propio evento.

87
Q

¿Cuál es la diferencia entre una arquitectura Event-Driven y una arquitectura orientada a servicios (SOA)?

A

Mientras que SOA se centra en la exposición de servicios a través de interfaces bien definidas, EDA se enfoca en la detección y reacción a eventos. EDA puede complementar a SOA, ya que los servicios pueden ser activados por eventos entrantes.

88
Q

¿Cuáles son las principales ventajas de una arquitectura Event-Driven?

A

Alta escalabilidad, desacoplamiento de componentes, procesamiento en tiempo real, mayor resiliencia a fallos.

89
Q

¿Cuáles son las principales desventajas de una arquitectura Event-Driven?

A

Complejidad en la gestión de eventos, dificultad en la depuración, necesidad de herramientas especializadas.

90
Q

¿Cómo se garantiza la consistencia de los datos en una arquitectura Event-Driven?

A

A través de mecanismos de confirmación de eventos, sagas y eventual consistency.

91
Q

¿Qué papel juega la seguridad en una arquitectura Event-Driven?

A

La seguridad es crucial para proteger los eventos y garantizar la integridad de los datos. Se utilizan mecanismos de autenticación, autorización y cifrado.

92
Q

¿Cómo se gestionan los eventos duplicados o fuera de orden?

A

Mediante el uso de identificadores únicos de eventos, índices y mecanismos de reintentos.

93
Q

¿Cuáles son algunos ejemplos de sistemas que utilizan arquitectura Event-Driven?

A

Sistemas de recomendación, plataformas de comercio electrónico, sistemas de IoT.

94
Q

¿Qué es la Arquitectura Hexagonal?

A

La Arquitectura Hexagonal, también conocida como Arquitectura de Puertos y Adaptadores, es un patrón de diseño de software que busca aislar la lógica de negocio del núcleo de una aplicación de las tecnologías externas con las que interactúa, como bases de datos, interfaces de usuario, etc.

95
Q

¿Cuáles son los componentes principales de una Arquitectura Hexagonal?

A
  • Núcleo: Contiene la lógica de negocio central de la aplicación.
  • Puertos: Son los puntos de entrada y salida de la aplicación, definidos como interfaces abstractas.
  • Adaptadores: Implementan los puertos y se conectan a las tecnologías externas (bases de datos, frameworks, etc.).
96
Q

¿Cuáles son las principales ventajas de utilizar Arquitectura Hexagonal?

A
  • Desacople: Separa la lógica de negocio de las tecnologías externas, facilitando los cambios y las pruebas.
  • Testabilidad: Permite realizar pruebas unitarias de la lógica de negocio de forma aislada.
  • Flexibilidad: Facilita la sustitución de tecnologías y frameworks.
  • Reutilización: El núcleo de la aplicación puede ser reutilizado en diferentes contextos.
97
Q

¿Cuáles son los desafíos al implementar la Arquitectura Hexagonal?

A
  • Curva de aprendizaje: Puede requerir un cambio en la forma de pensar y diseñar aplicaciones.
  • Complejidad inicial: La configuración inicial puede ser más compleja que en otros patrones.
98
Q

¿Cuál es la diferencia entre la Arquitectura Hexagonal y la Arquitectura en Capas?

A

La Arquitectura Hexagonal se centra en desacoplar la lógica de negocio de las tecnologías externas, mientras que la Arquitectura en Capas se enfoca en organizar el código en capas bien definidas.

99
Q

¿Cuándo es recomendable utilizar la Arquitectura Hexagonal?

A

Es ideal para aplicaciones con requisitos cambiantes, donde la tecnología subyacente puede evolucionar rápidamente.

100
Q

¿Cuál es el papel de los tests en la Arquitectura Hexagonal?

A

Los tests son fundamentales para garantizar la calidad y la corrección de la lógica de negocio.

101
Q

¿En qué tipo de aplicaciones es más común utilizar la Arquitectura Hexagonal?

A

Es muy utilizada en aplicaciones empresariales, microservicios y aplicaciones con requisitos de alta testabilidad.

102
Q

¿Qué es Arquitectura CQRS (Command Query Responsibility Segregation)?

A

CQRS es un patrón arquitectónico que separa las responsabilidades de lectura (consultas) y escritura (comandos) en un sistema. En lugar de utilizar un modelo único para ambas operaciones, CQRS introduce dos modelos separados: uno para actualizaciones y otro para lecturas.

103
Q

¿Cuál es la diferencia entre un comando y una consulta en CQRS?

A

Un comando modifica el estado del sistema (crear, actualizar, eliminar), mientras que una consulta solo devuelve información sin modificar el estado.

104
Q

¿Cuáles son las principales ventajas de utilizar CQRS?

A
  • Escalabilidad: Permite optimizar de manera independiente los modelos de lectura y escritura.
  • Flexibilidad: Facilita la implementación de diferentes estrategias de almacenamiento y indexación para cada modelo.
  • Performance: Al separar las responsabilidades, se puede mejorar el rendimiento de las operaciones de lectura y escritura.
  • Seguridad: Permite aplicar políticas de seguridad más granulares a las operaciones de lectura y escritura.
105
Q

¿Cuáles son los desafíos al implementar CQRS?

A
  • Complejidad: Introducir dos modelos separados puede aumentar la complejidad del sistema.
  • Consistencia eventual: En algunos casos, los datos pueden no ser consistentes de forma inmediata entre los dos modelos.
  • Desarrollo: Requiere un cambio de mentalidad en el desarrollo de aplicaciones.
106
Q

¿Cuándo es recomendable utilizar CQRS?

A
  • Sistemas con altas cargas de lectura y escritura.
  • Sistemas con requisitos de escalabilidad y performance muy exigentes.
  • Sistemas con modelos de datos complejos y evolutivos.
107
Q

¿Qué herramientas y tecnologías son útiles para implementar CQRS?

A

Frameworks de mensajería (Kafka, RabbitMQ), bases de datos NoSQL, etc.

108
Q

¿Qué es una arquitectura de n niveles?

A

Es un modelo de diseño de software que divide una aplicación en múltiples capas lógicas, cada una con una responsabilidad específica. Esto permite una mejor organización, mantenimiento y escalabilidad.

109
Q

¿Cuáles son las capas típicas en una arquitectura de n niveles?

A

Las capas más comunes son: presentación, lógica de negocio y acceso a datos. Sin embargo, pueden existir más capas dependiendo de la complejidad de la aplicación.

110
Q

¿Cuál es el propósito de cada capa?

A
  • Presentación: Interactúa con el usuario, mostrando la interfaz gráfica y capturando los datos de entrada.
  • Lógica de negocio: Contiene la lógica principal de la aplicación, implementando las reglas de negocio y los procesos.
  • Acceso a datos: Se encarga de la interacción con la base de datos, realizando operaciones de lectura, escritura y actualización.
111
Q

¿Cuáles son las principales ventajas de una arquitectura de n niveles?

A
  • Reusabilidad: Las capas pueden ser reutilizadas en diferentes proyectos.
  • Mantenibilidad: Los cambios en una capa afectan menos a las demás.
  • Escalabilidad: Permite escalar cada capa de forma independiente.
  • Abstracción: Oculta la complejidad de las capas inferiores.
112
Q

¿Cuáles son las principales desventajas de una arquitectura de n niveles?

A
  • Mayor complejidad: Requiere un diseño más cuidadoso y puede aumentar el tiempo de desarrollo.
  • Mayor sobrecarga: Las llamadas entre capas pueden generar un overhead adicional.