.net - net - microservices domain model
Cuándo usar un Eventstore (2)
Eso es mucho pedir en una pregunta de stackoverflow. Una cosa que falta en tu pregunta es ¿cuáles son sus desventajas? De todos modos, en lugar de responder aquí, me gustaría proporcionar algunos enlaces a videos para que los vean. Hay mucho contexto que debe establecerse antes de que las respuestas a esta pregunta tengan sentido.
Greg Young: Aquí hay un video de ~ 2 horas que brinda una excelente visión general de todo lo que está pidiendo en su pregunta. También hay una clase en línea de ~ 6 horas here .
Udi Dahan: Aquí hay un video de 1 hora que ofrece una perspectiva sobre cuándo usar estas tecnologías.
Lista de correo: hay un grupo here donde puede hacer todas sus preguntas y tener una buena discusión sobre el tema.
Espero que esto sea de ayuda. Tu pregunta está tan cargada que no creo que te sirva de nada a ti oa alguien más tratar de responderla en una diatriba corta y engañar a la gente.
Actualización: no creo que necesites leer 5 libros o incluso ver los videos a continuación. Creo que vale la pena su tiempo para hacerlo, pero no es obligatorio. El problema con su pregunta es que los escenarios "simples" generalmente no necesitan fuentes de eventos. La mayoría de las aplicaciones serán en su mayoría CRUD y basadas en datos. Quizás esta sea una respuesta a tu pregunta. Si no hay mucho "comportamiento" en su sistema, entonces no lo necesita. Si hay mucho comportamiento, entonces es posible que lo necesites.
No estoy muy seguro de haber entendido qué es un Almacén de eventos, pensé que era una especie de "Transactionlog" para Domainobjects. ¿Cuáles son las ventajas / desventajas de la misma y cuáles son los buenos escenarios para usarla y cuándo no debería usarse?
EDITAR:
Como es posible que pregunte demasiado, me alegraría que hubiera un escenario "simple" cuando usar un almacén de eventos y cuando no . En otras palabras: ¿es posible describir los 2 escenarios en solo algunas oraciones o necesito leer 5 libros para entenderlo?
Sí, la fuente de eventos es como un registro de transacciones para los objetos de su dominio y el registro de transacciones es la fuente autorizada de todos sus datos. Es posible que tenga copias de los datos en otros formularios diseñados para consultas fáciles, pero son simplemente copias que se pueden eliminar y reconstruir en cualquier momento. El registro de transacciones es la única fuente de verdad.
Estoy de acuerdo con Craig en que es difícil responder a tu pregunta de manera sucinta porque depende del contexto, pero aquí hay una breve lista de razones por las que puedes considerar usar un almacén de eventos:
- Te importa hacer un análisis histórico complejo de tus datos. Por ejemplo, alguien podría acudir a usted en el futuro y preguntar: "¿Cuántos de nuestros clientes colocan un artículo en su carrito de compras y luego lo sacan, pero después de que les enviamos un cupón, regresamos y lo compramos?" Puede haber un suministro interminable de tales preguntas de BI y no puede anticiparlas todas de antemano. Si captura todos los eventos en el sistema, puede reconstruir la respuesta a cualquier pregunta futura.
- Del mismo modo, le preocupa la auditoría y la posibilidad de probar sin duda exactamente quién cambió qué datos, a qué hora y por qué. Su almacén de eventos es su registro de auditoría.
- Te importa tener un sistema altamente escalable. Dado que el modelo de escritura de un almacén de eventos es solo para anexos, puede ser adecuado para aplicaciones de alto volumen. Debido a que no es inherentemente relacional, generalmente puede particionarse fácilmente.
Por otro lado, hay algunas buenas razones para no hacerlo:
- Usted no tiene ninguna de las necesidades mencionadas anteriormente.
- No desea lidiar con la molestia de tener que crear herramientas de depuración para poder ver y modificar fácilmente los datos en el almacén de eventos.
- Está construyendo un proyecto de corta duración en el que no espera estar presente durante mucho tiempo, por lo que no desea invertir un montón de esfuerzo de arquitectura en él.
- No está preparado para aprender CQRS, DDD y EDA al mismo tiempo que la fuente de eventos. Esas ideas no son estrictamente necesarias para la obtención de eventos, pero a menudo se entrelazan y el verdadero valor se encuentra cuando cambias completamente tu paradigma y los usas todos juntos. El aprovisionamiento de eventos forma parte de un paquete de técnicas que juntas representan una forma muy diferente de pensar acerca de la arquitectura de software. Puede ser intimidante.