Edin Kapić & Marçal Serrate
CQRS (explicado a mi
compañero arquitecto)
BARCELONA DEVELOPERS CONFERENCE 2012
6 dic – 7 dic – 8 dic
www.pasiona.com
info@pasiona.com
(+34) 669 333 333
@pasiona            Barcelona                 Bilbao                      Madrid           Londres
                    Pujades 350, 10ª planta   Gran Vía 19-21, 2ª planta   Pinar 5,         1 Northumberland Avenue
                    08019 · Barcelona         48008 · Bilbao              28006 · Madrid   London · WC2N 5BW
Qué es



Microsoft                                 Innovación                                      Pasión
socio 100% alineado                       ligada a la mejora continua y basada            somos grandes entusiastas de todo
partner 100% especializado                en las nuevas oportunidades tecnológicas        aquello que creamos y vemos crecer


Desarrollo                                Tecnología                                      Experiencia
capacidad para realizar proyectos de      soluciones a cada una de las necesidades        o la garantía de la habilidad derivada
ámbito tecnológico con un fin de mejora   empresariales que se platean en cada ámbito     de años de vivencias y observación


Especialización                           Conocimiento                                    Valores humanos
ofrecemos soluciones a medida con         adquirido a través de la realización de         guía de lo que hacemos y pretendemos
las mejores herramientas tecnológicas     proyectos, formación e innovación tecnológica   que nos enseña y nos conduce día a día
Servicios
Consultoría   Proyectos       Auditoría




              Servicios                    Social      Formación
              profesionales                Media



                                          Innovación    Azure
Edin Kapić
Key Consultant en pasiona Consulting
Divulgador Tecnológico en Fundación Techdencias
   @ekapic
ekapic@pasiona.com     ekapic@techdencias.net

           Marçal Serrate
           Key Consultant en pasiona Consulting
           Divulgador Tecnológico en Fundación Techdencias
               @mserrate
           mserrate@pasiona.com www.serrate.net
@techdencias

@pasiona




    #BDC1
    2
Agenda
CQRS.About();
CQRS.Query();
CQRS.Update();
CQRS.Implement();
CQRS.Demo();
(CQRS.Q && CQRS.A);
CQRS.About();
RDBMS
Modelo conocido y cómodo.
Pero…
No escala bien.
Teorema CAP "Bin Laden"
Explica por que no podemos tenerlo todo.
Eric Brewer, 2002
Consistencia




Consistencia
 eventual
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

      DTO

 Servicios

 Dominio

Repositorio

         SQL

    DB
Front-End
                Presentación

                Controlador

                      DTO

                               Back-End
                 Servicios

                 Dominio

                Repositorio

                         SQL
Base de datos
                    DB
Presentación

                          Controlador de servicios

                    DTO                               Comandos

Servicios de consulta                                Servicios de comandos

   Acceso a datos                                          Dominio

                                                          Repositorio
Consultas
                                                                   SQL
                                Sincronización
    Almacén de
                                                              DB
     consulta
Presentación

                                  Controlador de servicios

Query                       DTO                               Comandos           Command


        Servicios de consulta                                Servicios de comandos

           Acceso a datos            Responsibility                Dominio
                                      Segregation
                                                                  Repositorio
        Consultas
                                                                           SQL
                                        Sincronización
            Almacén de
                                                                      DB
             consulta
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




     Insert
    Delete        Queries
    Update
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
Edin Kapić               CQRS.Q &&
                            CQRS.A
   @ekapic
ekapic@pasiona.com
ekapic@techdencias.net

Marçal Serrate
  @mserrate
mserrate@pasiona.com
www.serrate.net
BARCELONA DEVELOPERS CONFERENCE 2012
                       | 6 dic – 7 dic – 8 dic

BcnDevCon12 - CQRS explicado a mi compañero arquitecto

  • 1.
    Edin Kapić &Marçal Serrate CQRS (explicado a mi compañero arquitecto) BARCELONA DEVELOPERS CONFERENCE 2012 6 dic – 7 dic – 8 dic
  • 2.
    www.pasiona.com info@pasiona.com (+34) 669 333333 @pasiona Barcelona Bilbao Madrid Londres Pujades 350, 10ª planta Gran Vía 19-21, 2ª planta Pinar 5, 1 Northumberland Avenue 08019 · Barcelona 48008 · Bilbao 28006 · Madrid London · WC2N 5BW
  • 3.
    Qué es Microsoft Innovación Pasión socio 100% alineado ligada a la mejora continua y basada somos grandes entusiastas de todo partner 100% especializado en las nuevas oportunidades tecnológicas aquello que creamos y vemos crecer Desarrollo Tecnología Experiencia capacidad para realizar proyectos de soluciones a cada una de las necesidades o la garantía de la habilidad derivada ámbito tecnológico con un fin de mejora empresariales que se platean en cada ámbito de años de vivencias y observación Especialización Conocimiento Valores humanos ofrecemos soluciones a medida con adquirido a través de la realización de guía de lo que hacemos y pretendemos las mejores herramientas tecnológicas proyectos, formación e innovación tecnológica que nos enseña y nos conduce día a día
  • 4.
    Servicios Consultoría Proyectos Auditoría Servicios Social Formación profesionales Media Innovación Azure
  • 6.
    Edin Kapić Key Consultanten pasiona Consulting Divulgador Tecnológico en Fundación Techdencias @ekapic ekapic@pasiona.com ekapic@techdencias.net Marçal Serrate Key Consultant en pasiona Consulting Divulgador Tecnológico en Fundación Techdencias @mserrate mserrate@pasiona.com www.serrate.net
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
    Teorema CAP "BinLaden" Explica por que no podemos tenerlo todo. Eric Brewer, 2002
  • 13.
  • 14.
    Consistencia eventual  Elprecio que pagamos según la CAP.*  Ventana de inconsistencia  Datos viejos *En RDBMS pagamos con la no tolerancia a particiones. No hay nada gratis.
  • 15.
    ¿Datos viejos?  Formularioen 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
  • 18.
    Presentación Controlador DTO Servicios Dominio Repositorio SQL DB
  • 19.
    Front-End Presentación Controlador DTO Back-End Servicios Dominio Repositorio SQL Base de datos DB
  • 20.
    Presentación Controlador de servicios DTO Comandos Servicios de consulta Servicios de comandos Acceso a datos Dominio Repositorio Consultas SQL Sincronización Almacén de DB consulta
  • 21.
    Presentación Controlador de servicios Query DTO Comandos Command Servicios de consulta Servicios de comandos Acceso a datos Responsibility Dominio Segregation Repositorio Consultas SQL Sincronización Almacén de DB consulta
  • 22.
  • 23.
    Query  Modelo delectura != modelo de dominio  View Model, Data Binding  “One Table per View”  NoSQL  La denormalización es bienvenida
  • 24.
  • 25.
    Command  Captura laintenció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
  • 26.
    Eventos  Cambio enel 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....
  • 27.
  • 28.
    ACID BASE DocumentStore IndexStore Insert Delete Queries Update
  • 29.
  • 30.
  • 31.
    Moraleja CQRS no esla 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
  • 32.
    Edin Kapić CQRS.Q && CQRS.A @ekapic ekapic@pasiona.com ekapic@techdencias.net Marçal Serrate @mserrate mserrate@pasiona.com www.serrate.net
  • 33.
    BARCELONA DEVELOPERS CONFERENCE2012 | 6 dic – 7 dic – 8 dic