This is the parent project that contains modules of a microservice deployment for the Account domain context. The two modules contained in this project are separated into separate deployment artifacts, one for synchronous HTTP-based interactions and one for asynchronous AMQP-based messaging.
Each microservice in this reference architecture breaks down into three different independently deployable components.
The diagram above details the system architecture of the bounded context for Accounts, which includes deployable units for each Backing Service, Microservice, and AWS Lambda Function.
The account-web
module is a web application that produces a REST API that can be used by consumers to interact with and manage domain objects in the Account
context. Domain Events can be triggered directly over HTTP, and will also be produced in the response to actions that alter the state of the Account
object. This web service also provides built-in hypermedia support for looking up the event logs on an aggregate domain object.
The account-worker
module is a event stream processing application that listens for Account
domain events as AMQP messages. The domain events that are generated by the account-web
application are processed in this module. The worker is responsible for durable transaction processing for work flows that are required to coordinate asynchronously with applications residing in other domain contexts. The worker is also responsible for automatically remediating state changes in any distributed transactions that encounter a partial failure. The most important goal of the worker module is to keep the state of the system consistent through automated means — to guarantee eventual consistency.