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

A煤n no tienes acceso a esta clase

Crea una cuenta y contin煤a viendo este curso

Patrones: CQRS

20/43
Recursos

Aportes 11

Preguntas 2

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesi贸n.

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.

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.

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/

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

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

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.

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.

驴La tecnolog铆a BlockChain tiene algo que ver con este patr贸n?

馃馃馃
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. (鈥淩eservar habitaci贸n de hotel鈥 y no 鈥淓stablecer 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.

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