Eventuate™ is a platform that solves the distributed data management problems inherent in the microservice architecture.
Eventuate™ consists of two frameworks:
For quick overview of Eventuate, please see this recent blog post.
Implement commands that update data in multiple microservices by using Sagas, which are sequences of local transactions coordinated using messages
Implement queries that retrieve data from multiple services by using CQRS views, which are easily queryable replicas maintained using events
Reliably send and receive messages and events as part of a database transaction by using either the Transactional Outbox or Event Sourcing patterns
The Eventuate Tram platform enable you to easily develop microservices that use traditional JDBC/JPA-based/.NET persistence.
Eventuate Tram supports the following technologies:
There are numerous example applications:
Eventuate Tram Customers and Orders - Spring Boot - demonstrates how to maintain data consistency in an Spring Boot, JPA-based microservice architecture using choreography-based sagas.
Eventuate Tram Sagas Customers and Orders - Spring Boot - demonstrates how to maintain data consistency in an Spring Boot, JPA-based microservice architecture using orchestration-based sagas.
Eventuate Tram Customers and Orders - Micronautnew - demonstrates how to maintain data consistency in an Micronaut, JPA-based microservice architecture using choreography-based sagas.
Eventuate Tram Sagas Customers and Orders - Micronautnew - demonstrates how to maintain data consistency in an Micronaut, JPA-based microservice architecture using orchestration-based sagas.
Eventuate Tram Customers and Orders - Quarkusnew - demonstrates how to maintain data consistency in an Quarkus, JPA-based microservice architecture using choreography-based sagas.
Eventuate Tram Customers and Orders - .NETnew - demonstrates how to maintain data consistency in an .NET-based microservice architecture using choreography-based sagas.
Eventuate Tram Sagas Customers and Orders - Quarkusnew - demonstrates how to maintain data consistency in an Quarkus, JPA-based microservice architecture using orchestration-based sagas.
FTGO application - the example application for Chris Richardson’s Microservices patterns book
Eventuate Tram Customers and Orders for Redis - microservices-based application that illustrates choreography-based sagas and CQRS. Redis is used as the message broker and for the CQRS view.
Eventuate Tram Todo - a simple Todo list application that uses Spring Boot, JPA, domain events and CQRS.
The Eventuate Local platform let’s you easily write microservices that use Event Sourcing, Sagas and Command Query Responsibility Segregation (CQRS). It’s an open-source Event store that supports the following technologies:
There are several example applications on github.com that illustrate how to use the Eventuate Platform:
Todo List application - the hello world application for the Eventuate™ Platform. It illustrates how you can use the platform to write an application that uses Event Sourcing and Command Query Responsibility Segregation (CQRS). The Todo List application lets users maintain a todo list.
Customers and orders - Spring Boot - an application that I’ve used in my talks (e.g. Gluecon 2016) to illustrate how to achieve eventual consistency using event sourcing.
Eventuate Customers and Orders - Micronautnew - demonstrates how to maintain data consistency in an Micronaut, JPA-based microservice architecture using Micronaut, Event Sourcing, choreography-based sagas and CQRS.
Eventuate Customers and Orders - Quarkusnew - demonstrates how to maintain data consistency in an Quarkus, JPA-based microservice architecture using Micronaut, Event Sourcing, choreography-based sagas and CQRS.
Restaurant management - Food to Go is a fictitious, on-demand logistics company from Chris Richardson’s book POJOs in Action. It delivers takeout orders from restaurants to customers. A key part of the application is the restaurant management service, which maintains a database of restaurants that can be queried for availability to deliver an order to a customer at a particular time. This version of the restaurant management service has an architecture based on microservices, event sourcing and Command Query Responsibility Segregation (CQRS). It is written in Java and uses Spring Boot, and Redis.
Money Transfer - shows how to transfer money between two bank accounts using choreography-based sagas There are Java and Scala versions of the code. The application has a microservices architecture and is written using Spring Boot.
Kanban Board - an example of a real-time, multi-user collaborative application. The Kanban Board application enables users to collaboratively create and edit Kanban boards and tasks. Changes made by one user to a board or a task are immediately visible to other users viewing the same board or task. It has a microservices architecture and is written using Java and Spring Boot and uses MongoDB for CQRS views. The application uses STOMP-over-WebSockets to push events from the event store to an AngularJS front-end.