bcndevcon12 - cqrs explicado a mi compañero arquitecto
DESCRIPTION
La introducción a CQRS presentada por Edin Kapic y Marçal Serrate en la conferencia BcnDevCon 2012.TRANSCRIPT
Edin Kapić & Marçal Serrate
CQRS (explicado a mi compañero arquitecto)
BARCELONA DEVELOPERS CONFERENCE 20126 dic – 7 dic – 8 dic
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
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
SocialMedia
Servicios profesionales
Consultoría Proyectos
Innovación Azure
Formación
Auditoría
Servicios
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
@techdencias
@pasiona
#BDC12
Agenda
CQRS.About();
CQRS.Query();
CQRS.Update();
CQRS.Implement();
CQRS.Demo();
(CQRS.Q && CQRS.A);
CQRS.About();
RDBMSModelo conocido y cómodo.
Pero…No escala bien.
Teorema CAP "Bin Laden"Explica por que no podemos tenerlo todo.Eric Brewer, 2002
Consistencia eventual
Consistencia
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. :-(
¿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
Presentación
Controlador
Servicios
Dominio
DTO
Repositorio
DB
SQL
Presentación
Controlador
Servicios
Dominio
DTO
Repositorio
DB
SQL
Front-End
Back-End
Base de datos
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
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
CQRS.Query();
Query
Modelo de lectura != modelo de dominio View Model, Data Binding “One Table per View” NoSQL La denormalización es bienvenida
CQRS.Update();
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
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....
CQRS.Implement();
ACID BASE
DocumentStore IndexStore
InsertDeleteUpdate
Queries
Microsoft SharePoint 2013
CQRS.Demo();
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
BARCELONA DEVELOPERS CONFERENCE 2012
| 6 dic – 7 dic – 8 dic