CQRS Marçal Serrate Software Architect | pasiona consulting

Slides:



Advertisements
Presentaciones similares
3/23/2017 6:13 AM © 2004 Microsoft Corporation. All rights reserved.
Advertisements

ANALISIS Y DISEÑO ORIENTADO A OBJETOS
2010Ing. de Sistemas II Persistencia en EJB3 Pasos para crear entity beans.
Conexión a Bases de Datos
para Exchange Archivo del correo interno y externo
Internet y tecnologías web
INGENIERÍA DE SOFTWARE Introducción Arquitectura de Software
Microsoft SQL Server 2005 Integration Services
Red Social: “Un millón de Amigos”.
Guido Rubin Escalabilidad.
Mercadotecnia Electrónica
© 2009 Cisco Systems, Inc. All rights reserved.Cisco Public 1 Septiembre 2009 Herramienta de Administracion de Servicio de Acceso: Bill to ID.
Introducción a LAS Bases de Datos
Carlos Rojas Kramer Universidad Cristóbal Colón
Stuart Pérez A12729.
Sistemas Operativos Distribuidos Plataforma Cliente/Servidor
SERVIDOR DNS Y WINS INTEGRANTES: Farroñan Beltran Brenher
EndNote X2.
Tipos de Métricas.
¿QUÉ SON LAS BASES DE DATOS?
Introducción 1 Puntos Clave –La orientación a objetos representa un cambio radical en los métodos tradicionales de creación de software –Los métodos tradicionales.
Desarrollo para Entorno Web
Arquitectura de la Aplicación
Desarrollo de Aplicación para VVC
ASP.NET MVC 3 Web Camps 2011 twitter: #eswebcamp.
César de la Torre – Programas Técnicos para Partners División de Desarrollo y Plataforma – Microsoft Spain.
Reporting Services: Report Builder Server Mode Enhacements
Características Técnicas
Tema II Unidad de memoria. 2 Unidad de memoria 2.1 Definiciones y conceptos básicos Localización Capacidad Unidad de transferencia
Introducción arquitectura base de datos Microsoft SQL Server 2000/2005
TIPOS DE SERVIDORES 4/2/2017 3:29 PM
Johanna Lizeth Rodríguez Lorena Fda. Chávarro Ramos
Bienvenidos.
1.1.2 Sistemas de información para la gestión y para la ayuda en la toma de decisiones. Los SI contribuyen activamente a la consecución de los objetivos.
Portales de Información «El objetivo es proporcionar a la gente la información que necesita, cuando la necesita, donde la necesita y en un formato sobre.
Compara las herramientas que brinda la web 2.0 para valorar y evaluar a los estudiantes de manera virtual y/o semi-presencial.
Análisis y Diseño orientado a objetos con UML.
Acceso a datos con Sharepoint
Servicios de las Redes Por: Karen Caraballo Álvarez Marisol Sánchez Márquez Educ. 676 Prof. Carmen Robles Sánchez (Ed, D (c) )
Gestión de recursos electrónicos en la Biblioteca de la Universidad Complutense de Madrid Inmaculada Fernández Ángeles Morillas Servicio de Tecnologías.
Desarrollo de aplicaciones web
COLEGIO TOLEDO PLATA CREACION DE UN BLOG. 1.- Elegimos el servidor de blogger que más se acerque a nuestras necesidades JIMDO LA COCTELERA BLOGGER.COM.
Marta Zorrilla – Miguel Ángel Gutiérrez – Universidad de Cantabria
BASE DE DATOS BY: Julián Villar Vázquez.
ISF5501 Ingeniería de Software
INGENIERIA DE SOFTWARE
Desarrollo de aplicaciones para ambientes distribuidos
PROTOCOLO H T T P.
Servidores Conceptos Generales.
CASOS DE USO Ing. Sonia Godoy H..
APLICACIÓN EN VISUAL BASIC
Proyecto Fin de Carrera - ITIS
Soluciones de informática y Electrónica Sistema de Monitoreo de Centrales de Incendio.
Programación orientada a objetos Capítulo 6 Diseño de clases.
Tu buscador de radio. Grouple es un buscador de emisoras de radio a través de internet, mediante el cual podrás encontrar cualquier emisora del mundo.
Unidad 2 – Gestión de Procesos
COMANDOS PRINCIPALES DE VISUAL BASIC 6.0
Realización de las tareas básicas de internet. ¿Qué es Internet? Podemos definir a Internet como una "red de redes", es decir, una red que no sólo interconecta.
Tecnologías Cliente / Servidor Capitulo II Richard Jiménez V. clienteserver.wordpress.com.
Servidores. ¿Qué es un servidor? Servidor de Aplicación Servidor de impresión Servidor de base de datos Servidor de correo Servidor de Internet Servidor.
MSSQL SERVER CURSO BÁSICO 1. DESCRIPCIÓN DEL CURSO. Sesión 4: Sentencia Insert,Transacciones,Insert general, Insert Select * From, Sentencia Update,Update.
Seguridad en Centros de Cómputo Capítulo 8- Seguridad de las Aplicaciones Hugo Daniel Meyer.
QUÉ ES UN SERVIDOR WEB?. Un servidor web o servidor HTTP es un programa informático que procesa una aplicación del lado del servidor, realizando conexiones.
SISTEMAS OPERTIVOS DE RED Los usuarios están conectados a la red y que pueden compartir recursos. Cada equipo ejecuta con sus propios recursos su propio.
Autora: Angelines Turón Turón Tutora: Mª Gloria Sánchez Torrubia SISTEMA DE AYUDA A LA ENSEÑANZA PARA RESOLUCIÓN DE MAPAS DE KARNAUGH.
Arquitectura de aplicaciones
BUSINESS T&G Think & Grow Uniclass Gestión Documental Solución Web para Mejorar la Captura y Gestión.
Conociendo el modelo Cliente-Servidor
Definición: Es un estilo de programación, su objetivo primordial es la separación de la capa de presentación, capa de negocio y la capa de datos. ARQUITECTURA.
Consistencia y Replicación
Transcripción de la presentación:

CQRS Marçal Serrate Software Architect | pasiona consulting twitter: @mserrate blog: http://www.serrate.es email: m.serrate@gmail.com

Agenda DDD y CQRS Problemáticas en aplicaciones n-layer Ejemplo CQRS al rescate Task based UI Commands Events … Event Sourcing Snapshots Demo

DDD y CQRS Domain-Driven Design CQRS no sustituye a DDD lo complementa Conceptos Ubiquitous Language Entity, Value Object Aggregate Mucho más…. CQRS no sustituye a DDD lo complementa

Problemática en aplicaciones típicas n-layer Modelo anémico (getters/setters) Muchas conversiones DTO  Entidad Único modelo para: Lecturas Escrituras Búsquedas Reporting

CQRS al rescate Para evitar lo anterior… Separar lecturas de escrituras

CQRS al rescate

Commands Capturar la intención del usuario SaveCustomer  CorrectCustomerName, ChangePassword… Verbo imperativo Síncronos / Asíncronos Validar entrada de datos longitud campo texto, campos requeridos, etc.

Task based UI Orientar cada pantalla a una única tarea vs Orientar cada pantalla a una única tarea Título de la pantalla explícito y conciso El contenido debe ajustarse a la tarea Ofrecer enlaces a tareas secundarias

Command Handlers Procesa los Commands ejecutando el correspondiente método de dominio No puede haber lógica de dominio Se ocupa de elementos Cross-Cutting Autorizaciones, Trazas, etc. Ejemplo:

Aggregate Root Aggregate: Agrupación lógica de Entities y Value Objects Accedemos a cualquier elemento a través del Aggregate Root Ejemplo:

Events Representan el cambio de estado del Aggregate al procesar un Command Verbo pasado: Acción completada Ejemplo:

Event Handlers Procesa los Events para insertarlos en el almacenamiento de lectura Actúa como Denormalizador (1:1) Puede realizar operaciones Cross-Cutting Ejemplo:

CQRS: Perspectiva 2-Phase Commit Asegurarnos la publicación en ambos almacenes Modelos desincronizados Soluciones: MSDTC Event Sourcing

¿Qué pasa si existen millones de eventos? Event Sourcing Almacén escritura == Log de todos los eventos No existe DELETE. Sólo añadimos eventos Para obtener el estado actual basta con aplicar todos los eventos Puede actuar como cola de eventos, evitando 2PC Escalabilidad. Partición horizontal sencilla: Aggregate ID ¿Qué pasa si existen millones de eventos?

Snapshots Cada n eventos almacenar el estado actual del Aggregate Para cargarlo, obtenemos el snapshot y aplicamos los eventos que han ocurrido desde que se almacenó

CQRS + Event Sourcing

Eventual Consistency «Retraso entre almacén escritura y lectura» Usuarios ven datos antiguos ≠ inconsistentes Normalmente es así por rendimiento y alta disponibilidad (p.e. Cache) Soluciones: Adaptar UI «Se está procesando su petición…» Presentar posibles tareas a realizar Educar al cliente Falsear los cambios en cliente… Feo, feo…

Demo Ncqrs: Framework de CQRS para .NET http://ncqrs.org Event Sourcing, snapshots RavenDB, MongoDB, MSSQL NServiceBus pero… Demasiado complejo Nuevas versiones no compatibles con antiguas

Enlaces Udi Dahan. http://www.udidahan.com/ Greg Young. http://codebetter.com/gregyoung/ Jonathan Oliver. http://blog.jonathanoliver.com/ Mark Nijhof. http://cre8ivethought.com/blog/index Task-Based UI. http://msdn.microsoft.com/en-us/library/ms997506.aspx

¿Preguntas? Marçal Serrate Software Architect | pasiona consulting twitter: @mserrate blog: http://www.serrate.es email: m.serrate@gmail.com