An Eventuate application consists of four types of modules, each with different roles and responsibilities.
The following diagram shows the architecture of an Eventuate application:
An Eventuate application consists of the following types of modules:
Note that this is the logical architecture of the application. The modules can either be deployed together as a monolithic application or separately as standalone microservices.
The command-side of an Eventuate application consists of one or more command-side modules. A command-side module creates and updates aggregates in response to external update requests (for example, HTTP POST, PUT, and DELETE requests) and events published by command-side aggregates. A command-side module consists of following components :
The query-side of an Eventuate application maintains one or more materialized (CQRS) views of command-side aggregates. Each view has two modules:
An outbound gateway module processes events by invoking external services.