A couple of weeks ago at JFokus 2016, Chris Richardson, the founder of Eventuate, gave a talk on event-driven microservices. Here is the abstract:
This presentation looks at the importance of events and the role that they play in applications. We describe how events are a key application integration mechanism and how they are used by applications to communicate with the outside world. You will learn how the microservices inside a system can use events to maintain data consistency. We discuss how easy it is to implement both of these mechanisms by developing your core business logic using an event-centric approach known as event sourcing.
The talk describes how to build event-centric business logic using event sourcing. The events emitted by DDD aggregates are used within an application to maintain data consistency across services. They are also used to integrate applications using the patterns of enterprise integration. Events are used to generate notifications (SMS, email, mobile push etc) that are sent to users.
Here are the slides:
Learn more about Eventuate
To find out more about how you can use the Eventuate platform to build event-driven microservices:
We have released the early access version of the Eventuate Platform. It solves the distributed data management problems inherent in a microservice architecture. The platform provides a simple yet powerful programming model for writing event-driven microservices. It is based on the principles of Event Sourcing and Command Query Responsibility Segregation (CQRS).
It would be great if you could take a look and provide feedback to shape the future direction of the platform.
Matt Miller of Sequoia recently published a map of the microservices ecosystem.
The ecosystem map is very focussed on infrastructure. It lists many of the usual suspects including Docker, Kafka, Cloud Foundry, Azure, and Chef. It includes some developer frameworks such as Hystrix but unfortunately, the focus on infrastructure means there are some surprising omissions.
Microservices need a chassis
James Watters from Pivotal, for instance, points out that Spring Boot and Spring Cloud are nowhere to be seen:
That is a shame because if you are building microservices you need a microservice chassis, such as Spring Cloud + Spring Boot. A microservice chassis is a framework that enables you to quickly create a new service. It handles cross-cutting concerns such as logging, service discovery, service registration, externalized configuration, etc.
Microservices and distributed data management problems
Also absent from the microservices ecosystem map are technologies that make it easier for application developers to write the business logic, the raison d’être for the microservices. This is unfortunate since microservice patterns such as Database per Service have a profound impact on how business logic is written. It is often impossible to use the familiar ACID transaction model and instead developers must use BASE transactions.
The goal of the Eventuate platform is to to help application developers address these issues.
It provides a simple yet powerful event-driven, programming model that, among other benefits, solves the distributed data management problems inherent in a microservice architecture. The platform consists of a scalable, distributed event store server and client libraries for various languages and frameworks including Java, Scala, and the Spring framework. Eventuate makes it easy for application developers to implement eventually consistent transactions that span multiple microservices.
Towards a more comprehensive map of the microservices ecosystem
Microservices are more than than just infrastructure. You need a microservices chassis so that you can quickly create new services. Many microservice-based applications will benefit from using a platform such as Eventuate to solve distributed data management problems. Hopefully, the microservices ecosystem map will be expanded to reflect this reality.
Learn more about Eventuate
To find out more about Eventuate: