SlideShare una empresa de Scribd logo
1 de 25
Foro de arquitectos 2015
CQRS/ES - Cambiando tu forma de pensar
¿Quienes Somos?
https://www.desarrollaconmicrosoft.com/dotnetspain2015
Sobre todo esta es una charla seria sobre escalabilidad, eh???
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?
■ “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?
CQRS como táctica de guerra
■ Aislamiento
■ Agilidad
■ Pruebas
■ Mantenimiento
■ Escalabilidad
■ Disponibilidad
■ ...
Beneficios de usar CQRS
CQRS por un niño de 10 años
CQRS en serio
■ El 90% del acceso a nuestras aplicaciones son consultas
■ Muy rápidas
■ Cachealas!
■ Consitencia eventual
Consultas
■ 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
Teorema de CAP
■ 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
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;
}
}
■ Son el resultado de una acción que ha ocurrido en el dominio
■ Nunca pueden ser rechazados
■ Siempre en pasado
■ OrderPlaced, no PlaceOrder
Eventos
■Captura todos los cambios de estado que se produce en nuestra
aplicación como una secuencia de eventos en el orden en que
suceden.
■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?
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 … Approved
ID Modified … State
1 28/01/2015 … Cancelled
¿Cómo funciona?
■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
■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?
■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
Probablemente no 
¿Debería usar CQRS/ES?
¿Preguntas?
Gracias!

Más contenido relacionado

Similar a CQRS-ES cambia forma pensar

Testing de Aplicaciones Móviles, Públicas, Masivas y Críticas
Testing de Aplicaciones Móviles, Públicas, Masivas y CríticasTesting de Aplicaciones Móviles, Públicas, Masivas y Críticas
Testing de Aplicaciones Móviles, Públicas, Masivas y CríticasBelatrix Software
 
Dev ops en arquitectura de sistemas
Dev ops en arquitectura de sistemasDev ops en arquitectura de sistemas
Dev ops en arquitectura de sistemasMitzi Moncada
 
Arquitectura basada a Eventos para principiantes con Apache Kafka
Arquitectura basada a Eventos para principiantes con Apache KafkaArquitectura basada a Eventos para principiantes con Apache Kafka
Arquitectura basada a Eventos para principiantes con Apache KafkaSoftware Guru
 
Buenas prácticas que debes seguir en la administración de tu SQL Server
Buenas prácticas que debes seguir en la administración de tu SQL ServerBuenas prácticas que debes seguir en la administración de tu SQL Server
Buenas prácticas que debes seguir en la administración de tu SQL ServerSolidQ
 
Real World Agile Roadshow 2013 - Planificación y Arquitectura Ágil
Real World Agile Roadshow 2013 - Planificación y Arquitectura ÁgilReal World Agile Roadshow 2013 - Planificación y Arquitectura Ágil
Real World Agile Roadshow 2013 - Planificación y Arquitectura ÁgilJose Luis Soria
 
Query Store en SQL 2016
Query Store en SQL 2016Query Store en SQL 2016
Query Store en SQL 2016SpanishPASSVC
 
Argentesting 2017 - The evolving role of QA
Argentesting 2017 - The evolving role of QAArgentesting 2017 - The evolving role of QA
Argentesting 2017 - The evolving role of QAArgentesting
 
Herramientas usadas para definir el ambiente
Herramientas usadas para definir el ambienteHerramientas usadas para definir el ambiente
Herramientas usadas para definir el ambienteAlejandra Apeleister
 
Desafíos de la Ciberseguridad Industrial
Desafíos de la Ciberseguridad IndustrialDesafíos de la Ciberseguridad Industrial
Desafíos de la Ciberseguridad IndustrialMariano M. del Río
 
Construyendo tu propio laboratorio de pentesting
Construyendo tu propio laboratorio de pentestingConstruyendo tu propio laboratorio de pentesting
Construyendo tu propio laboratorio de pentestingJaime Andrés Bello Vieda
 
20130329 Patrones de Aplicaciones para La nube #GWAB
20130329 Patrones de Aplicaciones para La nube #GWAB20130329 Patrones de Aplicaciones para La nube #GWAB
20130329 Patrones de Aplicaciones para La nube #GWABRicardo González
 
GWAB - Patrones para aplicaciones en la Nube
GWAB - Patrones para aplicaciones en la NubeGWAB - Patrones para aplicaciones en la Nube
GWAB - Patrones para aplicaciones en la NubeComunidad BDotNet
 
03 troubleshooting essentials dmv - sql pass peru
03 troubleshooting essentials   dmv - sql pass peru03 troubleshooting essentials   dmv - sql pass peru
03 troubleshooting essentials dmv - sql pass peruGuillermo Taylor
 

Similar a CQRS-ES cambia forma pensar (20)

Testing de Aplicaciones Móviles, Públicas, Masivas y Críticas
Testing de Aplicaciones Móviles, Públicas, Masivas y CríticasTesting de Aplicaciones Móviles, Públicas, Masivas y Críticas
Testing de Aplicaciones Móviles, Públicas, Masivas y Críticas
 
Microservicios con spring
Microservicios con springMicroservicios con spring
Microservicios con spring
 
Dev ops en arquitectura de sistemas
Dev ops en arquitectura de sistemasDev ops en arquitectura de sistemas
Dev ops en arquitectura de sistemas
 
Arquitectura basada a Eventos para principiantes con Apache Kafka
Arquitectura basada a Eventos para principiantes con Apache KafkaArquitectura basada a Eventos para principiantes con Apache Kafka
Arquitectura basada a Eventos para principiantes con Apache Kafka
 
Buenas prácticas que debes seguir en la administración de tu SQL Server
Buenas prácticas que debes seguir en la administración de tu SQL ServerBuenas prácticas que debes seguir en la administración de tu SQL Server
Buenas prácticas que debes seguir en la administración de tu SQL Server
 
Real World Agile Roadshow 2013 - Planificación y Arquitectura Ágil
Real World Agile Roadshow 2013 - Planificación y Arquitectura ÁgilReal World Agile Roadshow 2013 - Planificación y Arquitectura Ágil
Real World Agile Roadshow 2013 - Planificación y Arquitectura Ágil
 
Hardening murcia lan party 2013
Hardening   murcia lan party 2013Hardening   murcia lan party 2013
Hardening murcia lan party 2013
 
Query Store en SQL 2016
Query Store en SQL 2016Query Store en SQL 2016
Query Store en SQL 2016
 
Argentesting 2017 - The evolving role of QA
Argentesting 2017 - The evolving role of QAArgentesting 2017 - The evolving role of QA
Argentesting 2017 - The evolving role of QA
 
Herramientas usadas para definir el ambiente
Herramientas usadas para definir el ambienteHerramientas usadas para definir el ambiente
Herramientas usadas para definir el ambiente
 
Desafíos de la Ciberseguridad Industrial
Desafíos de la Ciberseguridad IndustrialDesafíos de la Ciberseguridad Industrial
Desafíos de la Ciberseguridad Industrial
 
Construyendo tu propio laboratorio de pentesting
Construyendo tu propio laboratorio de pentestingConstruyendo tu propio laboratorio de pentesting
Construyendo tu propio laboratorio de pentesting
 
20130329 Patrones de Aplicaciones para La nube #GWAB
20130329 Patrones de Aplicaciones para La nube #GWAB20130329 Patrones de Aplicaciones para La nube #GWAB
20130329 Patrones de Aplicaciones para La nube #GWAB
 
GWAB - Patrones para aplicaciones en la Nube
GWAB - Patrones para aplicaciones en la NubeGWAB - Patrones para aplicaciones en la Nube
GWAB - Patrones para aplicaciones en la Nube
 
ALM y Office 365
ALM y Office 365 ALM y Office 365
ALM y Office 365
 
03 troubleshooting essentials dmv - sql pass peru
03 troubleshooting essentials   dmv - sql pass peru03 troubleshooting essentials   dmv - sql pass peru
03 troubleshooting essentials dmv - sql pass peru
 
10 Principales Controles Proactivos de OWASP
10 Principales Controles Proactivos de OWASP 10 Principales Controles Proactivos de OWASP
10 Principales Controles Proactivos de OWASP
 
Microservicios
MicroserviciosMicroservicios
Microservicios
 
Agileload - pruebas de carga
Agileload - pruebas de cargaAgileload - pruebas de carga
Agileload - pruebas de carga
 
Creando sistemas enterprise con Software Libre
Creando sistemas enterprise con Software LibreCreando sistemas enterprise con Software Libre
Creando sistemas enterprise con Software Libre
 

Más de Luis Ruiz Pavón

OAuth2 para desarrolladores
OAuth2 para desarrolladoresOAuth2 para desarrolladores
OAuth2 para desarrolladoresLuis Ruiz Pavón
 
Patrones de diseño de software en la creación de microservicios
Patrones de diseño de software en la creación de microserviciosPatrones de diseño de software en la creación de microservicios
Patrones de diseño de software en la creación de microserviciosLuis Ruiz Pavón
 
Servicios comunes en .NET Core
Servicios comunes en .NET CoreServicios comunes en .NET Core
Servicios comunes en .NET CoreLuis Ruiz Pavón
 
.NET Core 1.0 y ASP.NET Core 1.0
.NET Core 1.0 y ASP.NET Core 1.0.NET Core 1.0 y ASP.NET Core 1.0
.NET Core 1.0 y ASP.NET Core 1.0Luis Ruiz Pavón
 
ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7
ReConnect 2015  - ASP.NET 5: MVC 6 y EF 7ReConnect 2015  - ASP.NET 5: MVC 6 y EF 7
ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7Luis Ruiz Pavón
 
ASP.NET 5 en Linux y Mac OS X: herramientas e integración
ASP.NET 5 en Linux y Mac OS X: herramientas e integraciónASP.NET 5 en Linux y Mac OS X: herramientas e integración
ASP.NET 5 en Linux y Mac OS X: herramientas e integraciónLuis Ruiz Pavón
 
#Dean document db + express + angularjs + nodejs running on azure
#Dean document db + express + angularjs + nodejs running on azure#Dean document db + express + angularjs + nodejs running on azure
#Dean document db + express + angularjs + nodejs running on azureLuis Ruiz Pavón
 
Como hago yo asp.net mvc dot netspainconference 2015
Como hago yo asp.net mvc   dot netspainconference 2015Como hago yo asp.net mvc   dot netspainconference 2015
Como hago yo asp.net mvc dot netspainconference 2015Luis Ruiz Pavón
 
JavaScript para desarrolladores c#
JavaScript para desarrolladores c#JavaScript para desarrolladores c#
JavaScript para desarrolladores c#Luis Ruiz Pavón
 
La calidad de código importa
La calidad de código importaLa calidad de código importa
La calidad de código importaLuis Ruiz Pavón
 

Más de Luis Ruiz Pavón (10)

OAuth2 para desarrolladores
OAuth2 para desarrolladoresOAuth2 para desarrolladores
OAuth2 para desarrolladores
 
Patrones de diseño de software en la creación de microservicios
Patrones de diseño de software en la creación de microserviciosPatrones de diseño de software en la creación de microservicios
Patrones de diseño de software en la creación de microservicios
 
Servicios comunes en .NET Core
Servicios comunes en .NET CoreServicios comunes en .NET Core
Servicios comunes en .NET Core
 
.NET Core 1.0 y ASP.NET Core 1.0
.NET Core 1.0 y ASP.NET Core 1.0.NET Core 1.0 y ASP.NET Core 1.0
.NET Core 1.0 y ASP.NET Core 1.0
 
ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7
ReConnect 2015  - ASP.NET 5: MVC 6 y EF 7ReConnect 2015  - ASP.NET 5: MVC 6 y EF 7
ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7
 
ASP.NET 5 en Linux y Mac OS X: herramientas e integración
ASP.NET 5 en Linux y Mac OS X: herramientas e integraciónASP.NET 5 en Linux y Mac OS X: herramientas e integración
ASP.NET 5 en Linux y Mac OS X: herramientas e integración
 
#Dean document db + express + angularjs + nodejs running on azure
#Dean document db + express + angularjs + nodejs running on azure#Dean document db + express + angularjs + nodejs running on azure
#Dean document db + express + angularjs + nodejs running on azure
 
Como hago yo asp.net mvc dot netspainconference 2015
Como hago yo asp.net mvc   dot netspainconference 2015Como hago yo asp.net mvc   dot netspainconference 2015
Como hago yo asp.net mvc dot netspainconference 2015
 
JavaScript para desarrolladores c#
JavaScript para desarrolladores c#JavaScript para desarrolladores c#
JavaScript para desarrolladores c#
 
La calidad de código importa
La calidad de código importaLa calidad de código importa
La calidad de código importa
 

Último

Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 

Último (16)

Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 

CQRS-ES cambia forma pensar

  • 1. Foro de arquitectos 2015 CQRS/ES - Cambiando tu forma de pensar
  • 4. Sobre todo esta es una charla seria sobre escalabilidad, eh???
  • 5. 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?
  • 6. ■ “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?
  • 7. CQRS como táctica de guerra
  • 8. ■ Aislamiento ■ Agilidad ■ Pruebas ■ Mantenimiento ■ Escalabilidad ■ Disponibilidad ■ ... Beneficios de usar CQRS
  • 9. CQRS por un niño de 10 años
  • 11. ■ El 90% del acceso a nuestras aplicaciones son consultas ■ Muy rápidas ■ Cachealas! ■ Consitencia eventual Consultas
  • 12. ■ 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
  • 14. ■ 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
  • 15. 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; } }
  • 16. ■ Son el resultado de una acción que ha ocurrido en el dominio ■ Nunca pueden ser rechazados ■ Siempre en pasado ■ OrderPlaced, no PlaceOrder Eventos
  • 17. ■Captura todos los cambios de estado que se produce en nuestra aplicación como una secuencia de eventos en el orden en que suceden. ■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?
  • 18. 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 … Approved ID Modified … State 1 28/01/2015 … Cancelled
  • 20. ■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
  • 21. ■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?
  • 22. ■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

Notas del editor

  1. Es el principio en el que se basa el patrón CQRS
  2. Es el principio en el que se basa el patrón CQRS
  3. O lo que es lo mismo, usar un modelo para actualizar la información y otro para leerla. No podemos usar CQRS en toda la aplicación entera.
  4. Lo importante de la imagen es ver que CQRS es más fácil de lo que nos pensamos
  5. Lo importante de la imagen es ver que CQRS es más fácil de lo que nos pensamos