SlideShare une entreprise Scribd logo
1  sur  33
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

Contenu connexe

Similaire à BcnDevCon12 - CQRS explicado a mi compañero arquitecto

Codecamp 2010 - Arquitecturas en la nube
Codecamp 2010 - Arquitecturas en la nubeCodecamp 2010 - Arquitecturas en la nube
Codecamp 2010 - Arquitecturas en la nube
Nicolas Padula
 
Servicios de Calidad de Datos Empresariales con Data Quality Service "Denali"
Servicios de Calidad de Datos Empresariales con Data Quality Service "Denali"Servicios de Calidad de Datos Empresariales con Data Quality Service "Denali"
Servicios de Calidad de Datos Empresariales con Data Quality Service "Denali"
Joseph Lopez
 
Sql server 2008 novedades en BI - es - tech net
Sql server 2008 novedades en BI - es - tech netSql server 2008 novedades en BI - es - tech net
Sql server 2008 novedades en BI - es - tech net
Salvador Ramos
 
Marcodetrabajode au
Marcodetrabajode auMarcodetrabajode au
Marcodetrabajode au
Fernando Paz
 
Presentación hp ess - (pablo ráez).- evento nube conectada 18042012
Presentación hp ess - (pablo ráez).- evento nube conectada 18042012Presentación hp ess - (pablo ráez).- evento nube conectada 18042012
Presentación hp ess - (pablo ráez).- evento nube conectada 18042012
Datacity Comunicaciones S.L.
 

Similaire à BcnDevCon12 - CQRS explicado a mi compañero arquitecto (20)

Codecamp 2010 - Arquitecturas en la nube
Codecamp 2010 - Arquitecturas en la nubeCodecamp 2010 - Arquitecturas en la nube
Codecamp 2010 - Arquitecturas en la nube
 
Servicios de Calidad de Datos Empresariales con Data Quality Service "Denali"
Servicios de Calidad de Datos Empresariales con Data Quality Service "Denali"Servicios de Calidad de Datos Empresariales con Data Quality Service "Denali"
Servicios de Calidad de Datos Empresariales con Data Quality Service "Denali"
 
JBoss para Tramites Gubernamentales
JBoss para Tramites GubernamentalesJBoss para Tramites Gubernamentales
JBoss para Tramites Gubernamentales
 
Webinar: Descubre los diferentes servicios Cloud Native en Azure
Webinar: Descubre los diferentes servicios Cloud Native en AzureWebinar: Descubre los diferentes servicios Cloud Native en Azure
Webinar: Descubre los diferentes servicios Cloud Native en Azure
 
Cloud Native en Azure Webinar atSistemas
Cloud Native en Azure Webinar atSistemasCloud Native en Azure Webinar atSistemas
Cloud Native en Azure Webinar atSistemas
 
Introducción a Cloud computing y Office 365
Introducción a Cloud computing y Office 365Introducción a Cloud computing y Office 365
Introducción a Cloud computing y Office 365
 
Sql server 2008 novedades en BI - es - tech net
Sql server 2008 novedades en BI - es - tech netSql server 2008 novedades en BI - es - tech net
Sql server 2008 novedades en BI - es - tech net
 
Seminario Web MongoDB-Paradigma: Cree aplicaciones más escalables utilizando ...
Seminario Web MongoDB-Paradigma: Cree aplicaciones más escalables utilizando ...Seminario Web MongoDB-Paradigma: Cree aplicaciones más escalables utilizando ...
Seminario Web MongoDB-Paradigma: Cree aplicaciones más escalables utilizando ...
 
Digital Week Innovation - TIVIT & AWS.pdf
Digital Week Innovation - TIVIT & AWS.pdfDigital Week Innovation - TIVIT & AWS.pdf
Digital Week Innovation - TIVIT & AWS.pdf
 
Webinar Administracion de Servicios Nube Azure
Webinar Administracion de Servicios Nube AzureWebinar Administracion de Servicios Nube Azure
Webinar Administracion de Servicios Nube Azure
 
Marcodetrabajode au
Marcodetrabajode auMarcodetrabajode au
Marcodetrabajode au
 
SEMANA 1 Introduccion.pptx
SEMANA 1 Introduccion.pptxSEMANA 1 Introduccion.pptx
SEMANA 1 Introduccion.pptx
 
WorkShop SQL Azure
WorkShop SQL AzureWorkShop SQL Azure
WorkShop SQL Azure
 
Dts y analysis services 2000
Dts y analysis services 2000Dts y analysis services 2000
Dts y analysis services 2000
 
Entorno de datos Microsoft Cloud
Entorno de datos Microsoft CloudEntorno de datos Microsoft Cloud
Entorno de datos Microsoft Cloud
 
08 Cast V Semana CMMI 2009
08 Cast V Semana CMMI 200908 Cast V Semana CMMI 2009
08 Cast V Semana CMMI 2009
 
Arquitectura Orientada a Servicios
Arquitectura Orientada a ServiciosArquitectura Orientada a Servicios
Arquitectura Orientada a Servicios
 
Is soa
Is soaIs soa
Is soa
 
BcnDevCon12 - Una vuelta por Orchard CMS
BcnDevCon12 - Una vuelta por Orchard CMSBcnDevCon12 - Una vuelta por Orchard CMS
BcnDevCon12 - Una vuelta por Orchard CMS
 
Presentación hp ess - (pablo ráez).- evento nube conectada 18042012
Presentación hp ess - (pablo ráez).- evento nube conectada 18042012Presentación hp ess - (pablo ráez).- evento nube conectada 18042012
Presentación hp ess - (pablo ráez).- evento nube conectada 18042012
 

Plus de Edin Kapic

SPS London 2015 - IoT and Room Reservation Cloud-Style
SPS London 2015 - IoT and Room Reservation Cloud-StyleSPS London 2015 - IoT and Room Reservation Cloud-Style
SPS London 2015 - IoT and Room Reservation Cloud-Style
Edin Kapic
 
SharePoint 2013 Novedades y más allá (Introducción de SUG.CAT)
SharePoint 2013 Novedades y más allá (Introducción de SUG.CAT)SharePoint 2013 Novedades y más allá (Introducción de SUG.CAT)
SharePoint 2013 Novedades y más allá (Introducción de SUG.CAT)
Edin Kapic
 

Plus de Edin Kapic (20)

High-Trust Add-Ins SharePoint for On-Premises Development
High-Trust Add-Ins SharePoint for On-Premises DevelopmentHigh-Trust Add-Ins SharePoint for On-Premises Development
High-Trust Add-Ins SharePoint for On-Premises Development
 
Extending Authentication and Authorization
Extending Authentication and AuthorizationExtending Authentication and Authorization
Extending Authentication and Authorization
 
Rx la joya oculta de Net
Rx la joya oculta de NetRx la joya oculta de Net
Rx la joya oculta de Net
 
ESPC15 - Extending Authentication and Authorization
ESPC15 - Extending Authentication and AuthorizationESPC15 - Extending Authentication and Authorization
ESPC15 - Extending Authentication and Authorization
 
SPS London 2015 - IoT and Room Reservation Cloud-Style
SPS London 2015 - IoT and Room Reservation Cloud-StyleSPS London 2015 - IoT and Room Reservation Cloud-Style
SPS London 2015 - IoT and Room Reservation Cloud-Style
 
SPS Belgium 2015 - High-trust Apps for On-Premises Development
SPS Belgium 2015 -  High-trust Apps for On-Premises DevelopmentSPS Belgium 2015 -  High-trust Apps for On-Premises Development
SPS Belgium 2015 - High-trust Apps for On-Premises Development
 
Personal Branding for Developers
Personal Branding for DevelopersPersonal Branding for Developers
Personal Branding for Developers
 
SharePoint Saturday Stockholm 2015 - Building Maintainable and Testable Share...
SharePoint Saturday Stockholm 2015 - Building Maintainable and Testable Share...SharePoint Saturday Stockholm 2015 - Building Maintainable and Testable Share...
SharePoint Saturday Stockholm 2015 - Building Maintainable and Testable Share...
 
ESPC14 Social Business Value Demystified
ESPC14 Social Business Value DemystifiedESPC14 Social Business Value Demystified
ESPC14 Social Business Value Demystified
 
Maintainable Testable SharePoint Components SPSBE 2014
Maintainable Testable SharePoint Components SPSBE 2014Maintainable Testable SharePoint Components SPSBE 2014
Maintainable Testable SharePoint Components SPSBE 2014
 
MVP Open Day 2014 - Hacking Human Behaviour
MVP Open Day 2014 - Hacking Human BehaviourMVP Open Day 2014 - Hacking Human Behaviour
MVP Open Day 2014 - Hacking Human Behaviour
 
SPS Stockholm 7 Key Things for Building a Highly-Scalable SharePoint 2013 App
SPS Stockholm 7 Key Things for Building a Highly-Scalable SharePoint 2013 AppSPS Stockholm 7 Key Things for Building a Highly-Scalable SharePoint 2013 App
SPS Stockholm 7 Key Things for Building a Highly-Scalable SharePoint 2013 App
 
7 Key Things for Building a Highly-Scalable SharePoint 2013 App
7 Key Things for Building a Highly-Scalable SharePoint 2013 App7 Key Things for Building a Highly-Scalable SharePoint 2013 App
7 Key Things for Building a Highly-Scalable SharePoint 2013 App
 
Social Business Value Demystified: Real-World Experiences
Social Business Value Demystified: Real-World ExperiencesSocial Business Value Demystified: Real-World Experiences
Social Business Value Demystified: Real-World Experiences
 
BcnDevCon13 - No Designer? No Problem!
BcnDevCon13 - No Designer? No Problem!BcnDevCon13 - No Designer? No Problem!
BcnDevCon13 - No Designer? No Problem!
 
Modelos de madurez de SharePoint
Modelos de madurez de SharePointModelos de madurez de SharePoint
Modelos de madurez de SharePoint
 
SharePoint 2013 Novedades y más allá (Introducción de SUG.CAT)
SharePoint 2013 Novedades y más allá (Introducción de SUG.CAT)SharePoint 2013 Novedades y más allá (Introducción de SUG.CAT)
SharePoint 2013 Novedades y más allá (Introducción de SUG.CAT)
 
SUG.CAT First Monday Noviembre 2012
SUG.CAT First Monday Noviembre 2012SUG.CAT First Monday Noviembre 2012
SUG.CAT First Monday Noviembre 2012
 
JavaScript per a desenvolupadors de C#
JavaScript per a desenvolupadors de C#JavaScript per a desenvolupadors de C#
JavaScript per a desenvolupadors de C#
 
CatDotNet - Farmville para SharePoint
CatDotNet - Farmville para SharePointCatDotNet - Farmville para SharePoint
CatDotNet - Farmville para SharePoint
 

Dernier

Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
AnnimoUno1
 
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
FagnerLisboa3
 

Dernier (11)

Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
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
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 

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 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
  • 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
  • 5.
  • 6. 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
  • 12. Teorema CAP "Bin Laden" Explica por que no podemos tenerlo todo. Eric Brewer, 2002
  • 14. 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.
  • 15. ¿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
  • 16.
  • 17.
  • 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
  • 23. Query  Modelo de lectura != modelo de dominio  View Model, Data Binding  “One Table per View”  NoSQL  La denormalización es bienvenida
  • 25. 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
  • 26. 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....
  • 28. ACID BASE DocumentStore IndexStore Insert Delete Queries Update
  • 31. 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
  • 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 CONFERENCE 2012 | 6 dic – 7 dic – 8 dic