bcndevcon12 - cqrs explicado a mi compañero arquitecto

33
Edin Kapić & Marçal Serra CQRS (explicado a mi compañero arquitecto) BARCELONA DEVELOPERS CONFERENCE 2012 6 dic – 7 dic – 8 dic

Upload: edin-kapic

Post on 28-Jan-2015

107 views

Category:

Technology


0 download

DESCRIPTION

La introducción a CQRS presentada por Edin Kapic y Marçal Serrate en la conferencia BcnDevCon 2012.

TRANSCRIPT

Page 1: BcnDevCon12 - CQRS explicado a mi compañero arquitecto

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

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

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

SocialMedia

Servicios profesionales

Consultoría Proyectos

Innovación Azure

Formación

Auditoría

Servicios

Page 5: BcnDevCon12 - CQRS explicado a mi compañero arquitecto
Page 6: BcnDevCon12 - CQRS explicado a mi compañero arquitecto

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

[email protected]

Page 7: BcnDevCon12 - CQRS explicado a mi compañero arquitecto

@techdencias

@pasiona

#BDC12

Page 8: BcnDevCon12 - CQRS explicado a mi compañero arquitecto

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

CQRS.About();

Page 10: BcnDevCon12 - CQRS explicado a mi compañero arquitecto

RDBMSModelo conocido y cómodo.

Page 11: BcnDevCon12 - CQRS explicado a mi compañero arquitecto

Pero…No escala bien.

Page 12: BcnDevCon12 - CQRS explicado a mi compañero arquitecto

Teorema CAP "Bin Laden"Explica por que no podemos tenerlo todo.Eric Brewer, 2002

Page 13: BcnDevCon12 - CQRS explicado a mi compañero arquitecto

Consistencia eventual

Consistencia

Page 14: BcnDevCon12 - CQRS explicado a mi compañero arquitecto

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

¿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
Page 17: BcnDevCon12 - CQRS explicado a mi compañero arquitecto
Page 18: BcnDevCon12 - CQRS explicado a mi compañero arquitecto

Presentación

Controlador

Servicios

Dominio

DTO

Repositorio

DB

SQL

Page 19: BcnDevCon12 - CQRS explicado a mi compañero arquitecto

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

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

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

CQRS.Query();

Page 23: BcnDevCon12 - CQRS explicado a mi compañero arquitecto

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

CQRS.Update();

Page 25: BcnDevCon12 - CQRS explicado a mi compañero arquitecto

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

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

CQRS.Implement();

Page 28: BcnDevCon12 - CQRS explicado a mi compañero arquitecto

ACID BASE

DocumentStore IndexStore

InsertDeleteUpdate

Queries

Page 29: BcnDevCon12 - CQRS explicado a mi compañero arquitecto

Microsoft SharePoint 2013

Page 30: BcnDevCon12 - CQRS explicado a mi compañero arquitecto

CQRS.Demo();

Page 31: BcnDevCon12 - CQRS explicado a mi compañero arquitecto

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 32: BcnDevCon12 - CQRS explicado a mi compañero arquitecto

Edin Kapić@ekapic

[email protected]@techdencias.net

CQRS.Q &&CQRS.A

Marçal Serrate@mserrate

[email protected]

Page 33: BcnDevCon12 - CQRS explicado a mi compañero arquitecto

BARCELONA DEVELOPERS CONFERENCE 2012

| 6 dic – 7 dic – 8 dic