foro arquitectos de microsoft 2015 - cqrs/es cambiando tu forma de pensar

25
Foro de arquitectos 2015 CQRS/ES - Cambiando tu forma de pensar

Upload: luis-ruiz-pavon

Post on 18-Jul-2015

499 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Foro arquitectos de Microsoft 2015 - CQRS/ES Cambiando tu forma de pensar

Foro de arquitectos 2015CQRS/ES - Cambiando tu forma de pensar

Page 2: Foro arquitectos de Microsoft 2015 - CQRS/ES Cambiando tu forma de pensar

¿Quienes Somos?

Page 3: Foro arquitectos de Microsoft 2015 - CQRS/ES Cambiando tu forma de pensar

https://www.desarrollaconmicrosoft.com/dotnetspain2015

Page 4: Foro arquitectos de Microsoft 2015 - CQRS/ES Cambiando tu forma de pensar

Sobre todo esta es una charla seria sobre escalabilidad, eh???

Page 5: Foro arquitectos de Microsoft 2015 - CQRS/ES Cambiando tu forma de pensar

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

■ “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

CQRS como táctica de guerra

Page 8: Foro arquitectos de Microsoft 2015 - CQRS/ES Cambiando tu forma de pensar

■ Aislamiento

■ Agilidad

■ Pruebas

■ Mantenimiento

■ Escalabilidad

■ Disponibilidad

■ ...

Beneficios de usar CQRS

Page 9: Foro arquitectos de Microsoft 2015 - CQRS/ES Cambiando tu forma de pensar

CQRS por un niño de 10 años

Page 10: Foro arquitectos de Microsoft 2015 - CQRS/ES Cambiando tu forma de pensar

CQRS en serio

Page 11: Foro arquitectos de Microsoft 2015 - CQRS/ES Cambiando tu forma de pensar

■ 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

■ 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

Teorema de CAP

Page 14: Foro arquitectos de Microsoft 2015 - CQRS/ES Cambiando tu forma de pensar

■ 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

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

■ 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

■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

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

¿Cómo funciona?

Page 20: Foro arquitectos de Microsoft 2015 - CQRS/ES Cambiando tu forma de pensar

■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

■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

■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

Probablemente no

¿Debería usar CQRS/ES?

Page 24: Foro arquitectos de Microsoft 2015 - CQRS/ES Cambiando tu forma de pensar

¿Preguntas?

Page 25: Foro arquitectos de Microsoft 2015 - CQRS/ES Cambiando tu forma de pensar

Gracias!