BcnDevCon12 - CQRS explicado a mi compañero arquitecto
-
Upload
edin-kapic -
Category
Technology
-
view
111 -
download
0
description
Transcript of BcnDevCon12 - CQRS explicado a mi compañero arquitecto
![Page 1: BcnDevCon12 - CQRS explicado a mi compañero arquitecto](https://reader034.fdocuments.ec/reader034/viewer/2022042623/54c85b424a7959d7758b47ad/html5/thumbnails/1.jpg)
Edin Kapić & Marçal Serrate
CQRS (explicado a mi compañero arquitecto)
BARCELONA DEVELOPERS CONFERENCE 20126 dic – 7 dic – 8 dic
![Page 2: BcnDevCon12 - CQRS explicado a mi compañero arquitecto](https://reader034.fdocuments.ec/reader034/viewer/2022042623/54c85b424a7959d7758b47ad/html5/thumbnails/2.jpg)
www.pasiona.com(+34) 669 333 [email protected]
@pasiona BarcelonaPujades 350, 10ª planta
08019 · Barcelona
BilbaoGran Vía 19-21, 2ª planta
48008 · Bilbao
Londres1 Northumberland Avenue
London · WC2N 5BW
MadridPinar 5,
28006 · Madrid
![Page 3: BcnDevCon12 - CQRS explicado a mi compañero arquitecto](https://reader034.fdocuments.ec/reader034/viewer/2022042623/54c85b424a7959d7758b47ad/html5/thumbnails/3.jpg)
Conocimientoadquirido a través de la realización de proyectos, formación e innovación tecnológica
Innovaciónligada a la mejora continua y basadaen las nuevas oportunidades tecnológicas
Tecnologíasoluciones a cada una de las necesidadesempresariales que se platean en cada ámbito
Valores humanosguía de lo que hacemos y pretendemosque nos enseña y nos conduce día a día
Pasiónsomos grandes entusiastas de todo aquello que creamos y vemos crecer
Experienciao la garantía de la habilidad derivada de años de vivencias y observación
Microsoftsocio 100% alineado partner 100% especializado
Desarrollocapacidad para realizar proyectos deámbito tecnológico con un fin de mejora
Especializaciónofrecemos soluciones a medida con las mejores herramientas tecnológicas
Qué es
![Page 4: BcnDevCon12 - CQRS explicado a mi compañero arquitecto](https://reader034.fdocuments.ec/reader034/viewer/2022042623/54c85b424a7959d7758b47ad/html5/thumbnails/4.jpg)
SocialMedia
Servicios profesionales
Consultoría Proyectos
Innovación Azure
Formación
Auditoría
Servicios
![Page 5: BcnDevCon12 - CQRS explicado a mi compañero arquitecto](https://reader034.fdocuments.ec/reader034/viewer/2022042623/54c85b424a7959d7758b47ad/html5/thumbnails/5.jpg)
![Page 6: BcnDevCon12 - CQRS explicado a mi compañero arquitecto](https://reader034.fdocuments.ec/reader034/viewer/2022042623/54c85b424a7959d7758b47ad/html5/thumbnails/6.jpg)
Edin Kapić
@ekapic
Key Consultant en pasiona ConsultingDivulgador Tecnológico en Fundación Techdencias
[email protected] [email protected]
Marçal Serrate
@mserrate
Key Consultant en pasiona ConsultingDivulgador Tecnológico en Fundación Techdencias
![Page 7: BcnDevCon12 - CQRS explicado a mi compañero arquitecto](https://reader034.fdocuments.ec/reader034/viewer/2022042623/54c85b424a7959d7758b47ad/html5/thumbnails/7.jpg)
@techdencias
@pasiona
#BDC12
![Page 8: BcnDevCon12 - CQRS explicado a mi compañero arquitecto](https://reader034.fdocuments.ec/reader034/viewer/2022042623/54c85b424a7959d7758b47ad/html5/thumbnails/8.jpg)
Agenda
CQRS.About();
CQRS.Query();
CQRS.Update();
CQRS.Implement();
CQRS.Demo();
(CQRS.Q && CQRS.A);
![Page 9: BcnDevCon12 - CQRS explicado a mi compañero arquitecto](https://reader034.fdocuments.ec/reader034/viewer/2022042623/54c85b424a7959d7758b47ad/html5/thumbnails/9.jpg)
CQRS.About();
![Page 10: BcnDevCon12 - CQRS explicado a mi compañero arquitecto](https://reader034.fdocuments.ec/reader034/viewer/2022042623/54c85b424a7959d7758b47ad/html5/thumbnails/10.jpg)
RDBMSModelo conocido y cómodo.
![Page 11: BcnDevCon12 - CQRS explicado a mi compañero arquitecto](https://reader034.fdocuments.ec/reader034/viewer/2022042623/54c85b424a7959d7758b47ad/html5/thumbnails/11.jpg)
Pero…No escala bien.
![Page 12: BcnDevCon12 - CQRS explicado a mi compañero arquitecto](https://reader034.fdocuments.ec/reader034/viewer/2022042623/54c85b424a7959d7758b47ad/html5/thumbnails/12.jpg)
Teorema CAP "Bin Laden"Explica por que no podemos tenerlo todo.Eric Brewer, 2002
![Page 13: BcnDevCon12 - CQRS explicado a mi compañero arquitecto](https://reader034.fdocuments.ec/reader034/viewer/2022042623/54c85b424a7959d7758b47ad/html5/thumbnails/13.jpg)
Consistencia eventual
Consistencia
![Page 14: BcnDevCon12 - CQRS explicado a mi compañero arquitecto](https://reader034.fdocuments.ec/reader034/viewer/2022042623/54c85b424a7959d7758b47ad/html5/thumbnails/14.jpg)
Consistencia eventual
El precio que pagamos según la CAP.* Ventana de inconsistencia
Datos viejos
*En RDBMS pagamos con la no tolerancia a particiones. No hay
nada gratis. :-(
![Page 15: BcnDevCon12 - CQRS explicado a mi compañero arquitecto](https://reader034.fdocuments.ec/reader034/viewer/2022042623/54c85b424a7959d7758b47ad/html5/thumbnails/15.jpg)
¿Datos viejos?
Formulario en papel aplicación CRUD Ideal para una aplicación individual
Aplicación multiusuario o cliente-servidor “Datos viejos” por naturaleza Nos inventamos varias cosas para huir
de este hecho, sin éxito
![Page 16: BcnDevCon12 - CQRS explicado a mi compañero arquitecto](https://reader034.fdocuments.ec/reader034/viewer/2022042623/54c85b424a7959d7758b47ad/html5/thumbnails/16.jpg)
![Page 17: BcnDevCon12 - CQRS explicado a mi compañero arquitecto](https://reader034.fdocuments.ec/reader034/viewer/2022042623/54c85b424a7959d7758b47ad/html5/thumbnails/17.jpg)
![Page 18: BcnDevCon12 - CQRS explicado a mi compañero arquitecto](https://reader034.fdocuments.ec/reader034/viewer/2022042623/54c85b424a7959d7758b47ad/html5/thumbnails/18.jpg)
Presentación
Controlador
Servicios
Dominio
DTO
Repositorio
DB
SQL
![Page 19: BcnDevCon12 - CQRS explicado a mi compañero arquitecto](https://reader034.fdocuments.ec/reader034/viewer/2022042623/54c85b424a7959d7758b47ad/html5/thumbnails/19.jpg)
Presentación
Controlador
Servicios
Dominio
DTO
Repositorio
DB
SQL
Front-End
Back-End
Base de datos
![Page 20: BcnDevCon12 - CQRS explicado a mi compañero arquitecto](https://reader034.fdocuments.ec/reader034/viewer/2022042623/54c85b424a7959d7758b47ad/html5/thumbnails/20.jpg)
Presentación
Controlador de servicios
Servicios de comandos
Dominio
DTO
Repositorio
DB
SQL
Servicios de consulta
Comandos
Almacén de consulta
Consultas
Acceso a datos
Sincronización
![Page 21: BcnDevCon12 - CQRS explicado a mi compañero arquitecto](https://reader034.fdocuments.ec/reader034/viewer/2022042623/54c85b424a7959d7758b47ad/html5/thumbnails/21.jpg)
Presentación
Controlador de servicios
Servicios de comandos
Dominio
DTO
Repositorio
DB
SQL
Servicios de consulta
Comandos
Almacén de consulta
Consultas
Acceso a datos
Sincronización
Query Command
Responsibility
Segregation
![Page 22: BcnDevCon12 - CQRS explicado a mi compañero arquitecto](https://reader034.fdocuments.ec/reader034/viewer/2022042623/54c85b424a7959d7758b47ad/html5/thumbnails/22.jpg)
CQRS.Query();
![Page 23: BcnDevCon12 - CQRS explicado a mi compañero arquitecto](https://reader034.fdocuments.ec/reader034/viewer/2022042623/54c85b424a7959d7758b47ad/html5/thumbnails/23.jpg)
Query
Modelo de lectura != modelo de dominio View Model, Data Binding “One Table per View” NoSQL La denormalización es bienvenida
![Page 24: BcnDevCon12 - CQRS explicado a mi compañero arquitecto](https://reader034.fdocuments.ec/reader034/viewer/2022042623/54c85b424a7959d7758b47ad/html5/thumbnails/24.jpg)
CQRS.Update();
![Page 25: BcnDevCon12 - CQRS explicado a mi compañero arquitecto](https://reader034.fdocuments.ec/reader034/viewer/2022042623/54c85b424a7959d7758b47ad/html5/thumbnails/25.jpg)
Command
Captura la intención, no sólo los datos Es un mensaje, no contiene lógica de
dominio Es asíncrono por naturaleza Es un verbo Dispara una actualización del modelo de
dominio
![Page 26: BcnDevCon12 - CQRS explicado a mi compañero arquitecto](https://reader034.fdocuments.ec/reader034/viewer/2022042623/54c85b424a7959d7758b47ad/html5/thumbnails/26.jpg)
Eventos
Cambio en el estado del sistema Se suelen usar para disparar la
sincronización con el modelo de consulta Fundamentos del Event Sourcing
Me gusta que me haga esa pregunta....
![Page 27: BcnDevCon12 - CQRS explicado a mi compañero arquitecto](https://reader034.fdocuments.ec/reader034/viewer/2022042623/54c85b424a7959d7758b47ad/html5/thumbnails/27.jpg)
CQRS.Implement();
![Page 28: BcnDevCon12 - CQRS explicado a mi compañero arquitecto](https://reader034.fdocuments.ec/reader034/viewer/2022042623/54c85b424a7959d7758b47ad/html5/thumbnails/28.jpg)
ACID BASE
DocumentStore IndexStore
InsertDeleteUpdate
Queries
![Page 29: BcnDevCon12 - CQRS explicado a mi compañero arquitecto](https://reader034.fdocuments.ec/reader034/viewer/2022042623/54c85b424a7959d7758b47ad/html5/thumbnails/29.jpg)
Microsoft SharePoint 2013
![Page 30: BcnDevCon12 - CQRS explicado a mi compañero arquitecto](https://reader034.fdocuments.ec/reader034/viewer/2022042623/54c85b424a7959d7758b47ad/html5/thumbnails/30.jpg)
CQRS.Demo();
![Page 31: BcnDevCon12 - CQRS explicado a mi compañero arquitecto](https://reader034.fdocuments.ec/reader034/viewer/2022042623/54c85b424a7959d7758b47ad/html5/thumbnails/31.jpg)
Moraleja
CQRS no es la respuesta a todo pero es una
manera diferente de atacar algunos
problemas de las aplicaciones actuales.
http://www.udidahan.com/2009/12/09/clarified-cqrs/https://github.com/ncqrs/ncqrs http://msdn.microsoft.com/en-us/library/jj554200.aspx
![Page 33: BcnDevCon12 - CQRS explicado a mi compañero arquitecto](https://reader034.fdocuments.ec/reader034/viewer/2022042623/54c85b424a7959d7758b47ad/html5/thumbnails/33.jpg)
BARCELONA DEVELOPERS CONFERENCE 2012
| 6 dic – 7 dic – 8 dic