CQRS and Event Sourcing in Java with Spring Framework
2016-12-28 17:42
856 查看
Recently I have had the opportunity to delve deep in to the world of Event Sourcing and CQRS for a modernization project where we are refactoring a 1M LOC a decade old classic java application that does more than a billion dollars of revenue across multiple lines of business. If you have to embark on a similar journey these are the resources I found useful:
1. DDD Distilled : This is the best summary of the classic Eric Evan's DDD book and Vernon's iDDD book. There is also a more practical Tools and Techniques section which summarizes Event Storming technique very well. We used a 3 day event storming inception to discover the complex business and technical domain and figure out the bounded contexts and problem areas.
2. Event Storming from Alberto Brandolini: A very easy read on the why and how of event storming. Alberto's writing style is very entertaining. This is probably the most interesting book written in this space. Alberto and Paul Raynor's videos(1, 2) on event storming provide a good getting-started guide to the world of event storming.
3. This Gist from Szymon provides an excellent collection of videos to understand the basics of modeling, Domain-Driven Design, CQRS and Event Sourcing.
4. Online Class: Greg Young's entire Domain Driven Design, CQRS, and Event Sourcing class all online.
5. Read Event Sourcing and CQRS chapter from Cloud Native Go: Building Web Applications and Microservices for the Cloud with Go and React on Safari Online.
6. Can't say enough good things about Michael Ploed's talk on building microservices with event sourcing and CQRSat SpringOne 2016. His practical advice is sorely needed in understanding the production concerns when refactoring a monolith to event-sourcing.
7. Peruse significant discussions on the DDD CQRS Group google mailing list.
8. Blogs & Articles
Developing Transactional Microservices Using Aggregates, Event Sourcing and CQRS - Part 1
http://blog.zilverline.com/2012/07/30/simple-event-sourcing-redis-event-store-part-3/
http://www.confluent.io/blog/event-sourcing-cqrs-stream-processing-apache-kafka-whats-connection/
https://skillsmatter.com/skillscasts/4081-greg-young-4081
http://www.kennybastani.com/2016/04/event-sourcing-microservices-spring-cloud.html
A CQRS and ES Deep Dive
Sagas - basically like a Finite State Machine operating on the events. A saga / nanny process is used to keep the state of the event stream consistent - Sagas are also used to handle SEQUENCing and transactional consistency concerns.
Visual Introduction to Event Sourcing and CQRS
CQRS Manager for Distributed Reactive Services?
9. Code Repositories:
https://github.com/VaughnVernon/IDDD_Samples
http://eventuate.io/gettingstarted.html
http://idugalic.github.io/micro-company/
https://github.com/joshlong/cf-cqrs-microservice-sampler
https://github.com/kbastani/spring-cloud-event-sourcing-example
https://github.com/olivergierke/spring-restbucks Leverages Spring Application events to create domain events in a Spring Data like fashion.
Support for exposing domain events from aggregate roots as Spring application events
10. Videos & Webinars:
Greg Young — A Decade of DDD, CQRS, Event Sourcing. This video contains golden nuggets towards the end where Greg does a retrospective of DDD-CQRS-ES failures in projects.
https://spring.io/blog/2016/10/25/webinar-bootiful-cqrs-with-axon-nov-16
ES/CQRS with Spring Cloud Stream
Pragmatic Approach to Microservices
Commander: Better Distributed Applications through CQRS, Event Sourcing, and Immutable Logs
Bootiful CQRS with Axon
11. resources
https://github.com/darknessitachi/es4j https://ookami86.github.io/event-sourcing-in-practice/ https://www.ibm.com/developerworks/cloud/library/cl-build-app-using-microservices-and-cqrs-trs/
1. DDD Distilled : This is the best summary of the classic Eric Evan's DDD book and Vernon's iDDD book. There is also a more practical Tools and Techniques section which summarizes Event Storming technique very well. We used a 3 day event storming inception to discover the complex business and technical domain and figure out the bounded contexts and problem areas.
2. Event Storming from Alberto Brandolini: A very easy read on the why and how of event storming. Alberto's writing style is very entertaining. This is probably the most interesting book written in this space. Alberto and Paul Raynor's videos(1, 2) on event storming provide a good getting-started guide to the world of event storming.
3. This Gist from Szymon provides an excellent collection of videos to understand the basics of modeling, Domain-Driven Design, CQRS and Event Sourcing.
4. Online Class: Greg Young's entire Domain Driven Design, CQRS, and Event Sourcing class all online.
5. Read Event Sourcing and CQRS chapter from Cloud Native Go: Building Web Applications and Microservices for the Cloud with Go and React on Safari Online.
6. Can't say enough good things about Michael Ploed's talk on building microservices with event sourcing and CQRSat SpringOne 2016. His practical advice is sorely needed in understanding the production concerns when refactoring a monolith to event-sourcing.
7. Peruse significant discussions on the DDD CQRS Group google mailing list.
8. Blogs & Articles
Developing Transactional Microservices Using Aggregates, Event Sourcing and CQRS - Part 1
http://blog.zilverline.com/2012/07/30/simple-event-sourcing-redis-event-store-part-3/
http://www.confluent.io/blog/event-sourcing-cqrs-stream-processing-apache-kafka-whats-connection/
https://skillsmatter.com/skillscasts/4081-greg-young-4081
http://www.kennybastani.com/2016/04/event-sourcing-microservices-spring-cloud.html
A CQRS and ES Deep Dive
Sagas - basically like a Finite State Machine operating on the events. A saga / nanny process is used to keep the state of the event stream consistent - Sagas are also used to handle SEQUENCing and transactional consistency concerns.
Visual Introduction to Event Sourcing and CQRS
CQRS Manager for Distributed Reactive Services?
9. Code Repositories:
https://github.com/VaughnVernon/IDDD_Samples
http://eventuate.io/gettingstarted.html
http://idugalic.github.io/micro-company/
https://github.com/joshlong/cf-cqrs-microservice-sampler
https://github.com/kbastani/spring-cloud-event-sourcing-example
https://github.com/olivergierke/spring-restbucks Leverages Spring Application events to create domain events in a Spring Data like fashion.
Support for exposing domain events from aggregate roots as Spring application events
10. Videos & Webinars:
Greg Young — A Decade of DDD, CQRS, Event Sourcing. This video contains golden nuggets towards the end where Greg does a retrospective of DDD-CQRS-ES failures in projects.
https://spring.io/blog/2016/10/25/webinar-bootiful-cqrs-with-axon-nov-16
ES/CQRS with Spring Cloud Stream
Pragmatic Approach to Microservices
Commander: Better Distributed Applications through CQRS, Event Sourcing, and Immutable Logs
Bootiful CQRS with Axon
11. resources
https://github.com/darknessitachi/es4j https://ookami86.github.io/event-sourcing-in-practice/ https://www.ibm.com/developerworks/cloud/library/cl-build-app-using-microservices-and-cqrs-trs/
相关文章推荐
- Event Sourcing in Microservices Using Spring Cloud and Reactor
- Binding Entities and Their Children to Java JSP Form Elements in Spring Framework MVC
- How-To : Using EJB 3.0 and Java Persistence API with Spring in OC4J
- Struts in Action: Building Web Applications with the Leading Java Framework
- WHY CQRS and EVENT SOURCING
- Working with hashCode and equals methods in java
- 学习spring的入门好书:Professional Java Development with the Spring Framework
- Polymorphism in Perl comparing with JAVA and C++
- 设计: ListView 接口,and the missing read-only interfaces in java collection framework
- ZIP and UNZIP with Passwords in Java
- The longest class name in Java and .NET Framework
- Flex 2.0 @ Work in combination with Spring and Hibernate
- 异常:org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletCo
- org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'selectcommoninfo' defined in ServletCont
- The difference between scheduleAtFixedRate and scheduleWithFixedDelay in JAVA
- Professional Java Development with the Spring Framework
- Agile Java Development with Spring, Hibernate and Eclipse
- Java实现用最大堆和最小堆查找中位数 Find median with min heap and max heap in Java
- 设计: ListView 接口,and the missing read-only interfaces in java collection framework
- Use a Spring InitBinder to Resolve Type Mismatch and Bind Exceptions in POST from Spring Framework M