Introducción al curso

1

Introducción al curso de Profesional de Arquitectura de Software

Atributos de calidad

2

Definición

3

Atributos: Idoneidad funcional

4

Atributos: Eficiencia de ejecución

5

Atributos: Compatibilidad

6

Atributos: Usabilidad

7

Atributos: Confiabilidad

8

Atributos: Seguridad

9

Atributos: Mantenibilidad

10

Atributos: Portabilidad

11

Tensiones entre atributos

12

Analizando PlatziServicios

Patrones de arquitectura

13

Patrones monolíticos vs distribuidos

14

Patrones: Modelo Vista Controlador

15

Patrones: Capas

16

Patrones: Orientado a eventos / Provisión de eventos.

17

Patrones: Microkernel - Plug-ins

18

Patrones: Comparte-nada

19

Patrones: Microservicios

20

Patrones: CQRS

21

Patrones: Hexagonal - Puertos y adaptadores

22

Patrones: Diseño orientado al dominio

23

Combinando patrones de arquitectura

24

Analizando nuevamente PlatziServicios

Diseño de una arquitectura

25

Pararse en hombros de gigantes

26

Herramientas y partes de un diseño: Tipos de conectores

27

Conectores: Llamado asincrónico / sincrónico. Modelo Cliente servidor.

28

Conectores: Enrutador, difusión

29

Conectores: Pizarra, repositorio, colas, modelo PUBSUB

30

Escenarios y tácticas

31

Escenarios: Disponibilidad, detección, reparación

32

Escenarios: Reintroducción y prevención

33

Escenarios: Mantenibilidad

34

Escenarios: Prevenir efectos dominó y diferir enlace

35

Escenarios: Eficiencia de ejecución

36

Escenarios: Seguridad

37

Escenarios: Capacidad de prueba

38

Escenarios: Usabilidad

39

Validar las decisiones de diseño: Arquitectura en evolución

40

Último análisis a PlatziServicios

Modelado y documentación de arquitectura

41

Cómo comunicar la arquitectura: Vistas y Puntos de vista

42

Documentación vs implementación

43

Conclusiones del curso

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Patrones: CQRS

20/43
Recursos

Aportes 13

Preguntas 2

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Como ejemplo, para una aplicación que desarrollamos en mi empresa utilizamos el modelo CQRS de la siguiente manera:

  • La aplicación móvil interaccionaba con un respositorio NoSQL (AWS: DynamoDB) para priorizar los tiempos de respuesta, especialmente de escritura.

  • Utilizamos una arquitectura basada en eventos para replicar los datos en tiempo real a una BD en MySQL optimizado para la reportería.

Con lo anterior ganamos en:

  • Aseguramos una alta disponbilidad y rápidos tiempos de respuesta para la aplicación móvil.
  • Aseguramos excelentes tiempos de respuesta para la reportería.

Pero perdimos en:

  • Complejidad de instalación.
  • Complejidad de testing, que llegó a ser bastante complejo.
  • Integridad de la información, ya que se vuelve muy complejo asegurar que la data es íntegra en ambos repositorios.

Apuntes:

CQRS: Separación de Responsabilidades entre Consultas y Comandos

Nos dice que cuándo es muy difícil hacer óptima la lectura y escritura con un modelo compartido podemos aprovechar eso para separar ese modelo e incluso separar las bases de datos de esos modelos, de esta manera cuando queremos escribir tenemos un modelo optimizado para la escritura y luego cuando queremos leer tenemos un modelo optimizado para la lectura. Nos sirve para poder modelar el dominio de escritura y a su vez tener preparados los datos para poder leerlos de la mejor forma posible.

Command Query Responsability Segregation (CQRS), es un estilo arquitectónico en el que tenemos dos subsistemas diferenciados, uno responsable de los comandos, y otro responsable de las consultas. Por comando entendemos un petición por parte del usuario u otro sistema, para realizar una operación de negocio, que evolucione el sistema de un estado a otro. Cada uno de estos subsistemas tiene un diseño, modelo de información y mecanismo de persistencia diferente, optimizado para las tareas que deba afrontar. Normalmente el subsistema de consulta suele ser mucho más simple que el otro.

Les dejo aquí este artículo que explica muy bien este patrón de diseño https://eamodeorubio.wordpress.com/2012/09/03/cqrs-1-que-es/

Patrones: Separación de Rsponsabilidades entre Consultas y Comandos / CQRS

Diferencia el momento del que estamos escribiendo del de que estamos leyendo. Nos permite modelar el dominio de a escritura y a su vez tener preparados ya sus datos para poder leerlos de la mejor forma posible. Caso de uso: reportes.


Este es un patron puntual, puede generar sobre-costos.

me mate buscando informacion sobre esto en la web jajaja, pensar que estaba aqui y tan bien explicado

CQRS: Se utilizan mas en reportes y eventos.
CQRS( Separación de responsabilidades entre consultas y comandos).

Patron de arquitectura Separacion de Responsabilidades entre Consultas y Comandos o CQRS
Sirve para diferenciar el momento en el que estamos escribiendo del momento en el que leemos.
Modelos optimizados para lectura y escritura.

En mí caso he utilizado mucho este patrón para temas de BI. Por ejemplo, por un lado, se tiene el sistema transaccional de las aplicaciones, por otro lado, se tiene los datos de reportería.
.
Normalmente el llenado de tablas para reportes se realiza en la madruga donde no hay tanto uso del sistema transaccional, así poder hacer la extracción para tener la información en las bases para los reportes; De esta manera se asegura que pueda ser consultado por el usuario sin afectar el sistema transaccional al momento de hacer operaciones de escritura.

¿La tecnología BlockChain tiene algo que ver con este patrón?

No soy ningún experto con CQRS, pero no necesariamente se ocupa solo para eso de tener 2 BD separadas, a veces es para tener el codigo más limpio, es decir, por un lado tener comandos y por el otro lectura, así el código está mejor estructurado, especialmente cuando se ocupa en conjunto con el patrón mediador.

Estos 2 patrones Mediador y CQRS se ocupan muy comunmente en aplicaciones grandes.

Command Query Responsibility Segregation = separación de responsabilidades entre consultas y comandos (CQRS)

🤖🤖🤖
CQRS:
La segregación de responsabilidades de consultas y comandos (CQRS), Es un estilo de arquitectura que separa las operaciones de lectura de las operaciones de escritura.
Los comandos, Deberían basarse en tareas, en lugar de centrarse en datos. (“Reservar habitación de hotel” y no “Establecer ReservationStatus en Reservado”). Los comandos se pueden colocar en una cola para un procesamiento asincrónico, en lugar de que se procesen de forma sincrónica.
Las consultas, Nunca modifican la base de datos. Una consulta devuelve un DTO que no encapsula ningún conocimiento del dominio.