Foro arquitectos de Microsoft 2015 - CQRS/ES Cambiando tu forma de pensar
-
Upload
luis-ruiz-pavon -
Category
Technology
-
view
499 -
download
0
Transcript of Foro arquitectos de Microsoft 2015 - CQRS/ES Cambiando tu forma de pensar
![Page 1: Foro arquitectos de Microsoft 2015 - CQRS/ES Cambiando tu forma de pensar](https://reader034.fdocument.pub/reader034/viewer/2022051516/55aa181a1a28ab51248b470a/html5/thumbnails/1.jpg)
Foro de arquitectos 2015CQRS/ES - Cambiando tu forma de pensar
![Page 2: Foro arquitectos de Microsoft 2015 - CQRS/ES Cambiando tu forma de pensar](https://reader034.fdocument.pub/reader034/viewer/2022051516/55aa181a1a28ab51248b470a/html5/thumbnails/2.jpg)
¿Quienes Somos?
![Page 3: Foro arquitectos de Microsoft 2015 - CQRS/ES Cambiando tu forma de pensar](https://reader034.fdocument.pub/reader034/viewer/2022051516/55aa181a1a28ab51248b470a/html5/thumbnails/3.jpg)
https://www.desarrollaconmicrosoft.com/dotnetspain2015
![Page 4: Foro arquitectos de Microsoft 2015 - CQRS/ES Cambiando tu forma de pensar](https://reader034.fdocument.pub/reader034/viewer/2022051516/55aa181a1a28ab51248b470a/html5/thumbnails/4.jpg)
Sobre todo esta es una charla seria sobre escalabilidad, eh???
![Page 5: Foro arquitectos de Microsoft 2015 - CQRS/ES Cambiando tu forma de pensar](https://reader034.fdocument.pub/reader034/viewer/2022051516/55aa181a1a28ab51248b470a/html5/thumbnails/5.jpg)
Bertrand Meyer (via Wikipedia)
“Command Query Separation”“every method should either be a command that performs an action, or a query that returns data to the caller, but not both. In other words, asking a question should not change the answer.”
¿CQS? ¿Pero esto no iba de CQRS?
![Page 6: Foro arquitectos de Microsoft 2015 - CQRS/ES Cambiando tu forma de pensar](https://reader034.fdocument.pub/reader034/viewer/2022051516/55aa181a1a28ab51248b470a/html5/thumbnails/6.jpg)
■ “Command Query Responsibility Segregation”
■ Es un patrón que se basa en el principio CQS.
■ No es una arquitectura, es un patrón.
¿Qué es CQRS?
![Page 7: Foro arquitectos de Microsoft 2015 - CQRS/ES Cambiando tu forma de pensar](https://reader034.fdocument.pub/reader034/viewer/2022051516/55aa181a1a28ab51248b470a/html5/thumbnails/7.jpg)
CQRS como táctica de guerra
![Page 8: Foro arquitectos de Microsoft 2015 - CQRS/ES Cambiando tu forma de pensar](https://reader034.fdocument.pub/reader034/viewer/2022051516/55aa181a1a28ab51248b470a/html5/thumbnails/8.jpg)
■ Aislamiento
■ Agilidad
■ Pruebas
■ Mantenimiento
■ Escalabilidad
■ Disponibilidad
■ ...
Beneficios de usar CQRS
![Page 9: Foro arquitectos de Microsoft 2015 - CQRS/ES Cambiando tu forma de pensar](https://reader034.fdocument.pub/reader034/viewer/2022051516/55aa181a1a28ab51248b470a/html5/thumbnails/9.jpg)
CQRS por un niño de 10 años
![Page 10: Foro arquitectos de Microsoft 2015 - CQRS/ES Cambiando tu forma de pensar](https://reader034.fdocument.pub/reader034/viewer/2022051516/55aa181a1a28ab51248b470a/html5/thumbnails/10.jpg)
CQRS en serio
![Page 11: Foro arquitectos de Microsoft 2015 - CQRS/ES Cambiando tu forma de pensar](https://reader034.fdocument.pub/reader034/viewer/2022051516/55aa181a1a28ab51248b470a/html5/thumbnails/11.jpg)
■ El 90% del acceso a nuestras aplicaciones son consultas
■ Muy rápidas
■ Cachealas!
■ Consitencia eventual
Consultas
![Page 12: Foro arquitectos de Microsoft 2015 - CQRS/ES Cambiando tu forma de pensar](https://reader034.fdocument.pub/reader034/viewer/2022051516/55aa181a1a28ab51248b470a/html5/thumbnails/12.jpg)
■ Aplicable a todo el sistema o solo a una parte (Base de datos)
■ Es lo opuesto a la consistencia de datos
■ Es una característica natural de los sistemas distribuidos y escalables
Consistencia eventual
![Page 13: Foro arquitectos de Microsoft 2015 - CQRS/ES Cambiando tu forma de pensar](https://reader034.fdocument.pub/reader034/viewer/2022051516/55aa181a1a28ab51248b470a/html5/thumbnails/13.jpg)
Teorema de CAP
![Page 14: Foro arquitectos de Microsoft 2015 - CQRS/ES Cambiando tu forma de pensar](https://reader034.fdocument.pub/reader034/viewer/2022051516/55aa181a1a28ab51248b470a/html5/thumbnails/14.jpg)
■ Son directivas del dominio para ejecutar una acción
■ Pueden ser rechazados por el dominio (Validaciones/Negocio)
■ Puede dar resultado a 0:n eventos
■ Siempre en imperativo■PlaceOrder, no OrderPlaced
■ Un manejador por commando
■ Pueden ser encolados
Comandos
![Page 15: Foro arquitectos de Microsoft 2015 - CQRS/ES Cambiando tu forma de pensar](https://reader034.fdocument.pub/reader034/viewer/2022051516/55aa181a1a28ab51248b470a/html5/thumbnails/15.jpg)
Perdiendo el miedo a los comandos
public class PlaceOrderCommand
{
//properties
public readonly Guid OrderId;
public readonly string Comment;
//ctor
public PlaceOrderCommand(Guid id, string comment)
{
OrderId = id;
Comment = comment;
}
}
![Page 16: Foro arquitectos de Microsoft 2015 - CQRS/ES Cambiando tu forma de pensar](https://reader034.fdocument.pub/reader034/viewer/2022051516/55aa181a1a28ab51248b470a/html5/thumbnails/16.jpg)
■ Son el resultado de una acción que ha ocurrido en el dominio
■ Nunca pueden ser rechazados
■ Siempre en pasado■ OrderPlaced, no PlaceOrder
Eventos
![Page 17: Foro arquitectos de Microsoft 2015 - CQRS/ES Cambiando tu forma de pensar](https://reader034.fdocument.pub/reader034/viewer/2022051516/55aa181a1a28ab51248b470a/html5/thumbnails/17.jpg)
■Captura todos los cambios de estado que se produce en nuestraaplicación como una secuencia de eventos en el orden en quesuceden.
■No modelo entidad/relación o modelo de objectos.
■Tenemos todo el historial de operaciones realizadas frente a lo que se conoce como “last-known good state”.
■No es una arquitectura independiente.
■Casa perfectamente con DDD y CQRS.
¿Qué es Event Sourcing?
![Page 18: Foro arquitectos de Microsoft 2015 - CQRS/ES Cambiando tu forma de pensar](https://reader034.fdocument.pub/reader034/viewer/2022051516/55aa181a1a28ab51248b470a/html5/thumbnails/18.jpg)
ID Modified … State
1 26/01/2015 … Pending
¿Cómo funciona?
Sistema tradicional
Event Sourcing
ID Modified … State
1 28/01/2015 … Cancelled
1 27/01/2015 … Approved
1 26/01/2015 … Pending
ID Modified … State
1 27/01/2015 … ApprovedID Modified … State
1 28/01/2015 … Cancelled
![Page 19: Foro arquitectos de Microsoft 2015 - CQRS/ES Cambiando tu forma de pensar](https://reader034.fdocument.pub/reader034/viewer/2022051516/55aa181a1a28ab51248b470a/html5/thumbnails/19.jpg)
¿Cómo funciona?
![Page 20: Foro arquitectos de Microsoft 2015 - CQRS/ES Cambiando tu forma de pensar](https://reader034.fdocument.pub/reader034/viewer/2022051516/55aa181a1a28ab51248b470a/html5/thumbnails/20.jpg)
■Es una base de datos para almacenar eventos:■GetEventStore – http://geteventstore.com
■NEventStore – http://neventstore.org
■Base de datos relacional (JSON)
■Base de datos documental
Event Store
![Page 21: Foro arquitectos de Microsoft 2015 - CQRS/ES Cambiando tu forma de pensar](https://reader034.fdocument.pub/reader034/viewer/2022051516/55aa181a1a28ab51248b470a/html5/thumbnails/21.jpg)
■Volviendo a ejecutar los eventos (Replay Events)
Pero… ¿Qué ocurre si tenemos que volver a ejecutar eventos para saber cual es el estado de nuestra cuenta bancaria? ¿Qué pasa si la abrimos hace 10 años?
Podemos encontrarnos con problemas de rendimiento al tener que ejecutar miles de eventos…
¿Cómo podemos solucionar esto?
¿Cómo reconstruimos el estado de la aplicación?
![Page 22: Foro arquitectos de Microsoft 2015 - CQRS/ES Cambiando tu forma de pensar](https://reader034.fdocument.pub/reader034/viewer/2022051516/55aa181a1a28ab51248b470a/html5/thumbnails/22.jpg)
■Para evitar tener que ejecutar miles de eventos para reconstruir el estado de nuestra aplicación se usan Data Snapshots.
■Cada x eventos guardamos el estado actual de nuestra aplicación. (Caché)y podemos hacer un replay de eventos desde es momento.
Data Snapshots
![Page 23: Foro arquitectos de Microsoft 2015 - CQRS/ES Cambiando tu forma de pensar](https://reader034.fdocument.pub/reader034/viewer/2022051516/55aa181a1a28ab51248b470a/html5/thumbnails/23.jpg)
Probablemente no
¿Debería usar CQRS/ES?
![Page 24: Foro arquitectos de Microsoft 2015 - CQRS/ES Cambiando tu forma de pensar](https://reader034.fdocument.pub/reader034/viewer/2022051516/55aa181a1a28ab51248b470a/html5/thumbnails/24.jpg)
¿Preguntas?
![Page 25: Foro arquitectos de Microsoft 2015 - CQRS/ES Cambiando tu forma de pensar](https://reader034.fdocument.pub/reader034/viewer/2022051516/55aa181a1a28ab51248b470a/html5/thumbnails/25.jpg)
Gracias!