components In order to keep things simple, we may choose to keep both components executing in within a shared environment Copyright ⓒ All Right Reserved by Buzzvil
consectetur adipiscing elit. Donec consectetur, turpis et tempor tempus, dolor lorem facilisis nulla, sit amet tristique diam mauris sed enim. Egestas dolor. Donec ultrices odio eget dolor ullamcorper, ac ornare ligula sodales. Morbi feugiat orci at ligula ornare molestie. Praesent ultrices nisi sed lacus luctus, vel sodales eros viverra. Donec viverra convallis mi convallis auctor. In hac habitasse platea dictumst. Duis pulvinar est id diam euismod, in tempor purus faucibus. Vivamus odio quam, auctor vitae nisl ac, fringilla aliqu tempor, in iaculis nulla blandit. Curabitur placerat fermentum orci in pretium. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur faucibus faucibus velit, quis dignissim augue. Nullam fringilla nulla eu quam feugiat, in auctor nunc faucibus. Nullam venenatis, tellus ac suscipit tincidunt, ante justo luctus lacus, ut bibendum sapien massa quis mi. Morbi sit amet viverra lorem, eget vestibulum ipsum. Integer pellentesque odio in tincidunt lobortis. Sed sollicitudin dui eget leo vulputate gravida. Curabitur auctor molestie neque quis interdum. Copyright ⓒ All Right Reserved by Buzzvil Command Query Responsibility Segregation (CQRS)
be designed in a way which reads and writes scale independently Copyright ⓒ All Right Reserved by Buzzvil Command Query Responsibility Segregation (CQRS)
is required to fulfill queries • Reads can conceptually be disconnected from writes in time • Possible but not a requirement Copyright ⓒ All Right Reserved by Buzzvil Independent data models
require aggregation of events • Events can be propagated to reads using a push based approach • Eventually consistent (but doesn’t have to be) Copyright ⓒ All Right Reserved by Buzzvil Events instead of state?
not feasible (binary data?) • Component construction and destruction is deterministic at any point in time along event log in time • New implementations can be created without interacting with old Copyright ⓒ All Right Reserved by Buzzvil Event Sourcing
log possible • Events are not lossy (when using them as source for state) • Mutation requires additional logic to track information change Copyright ⓒ All Right Reserved by Buzzvil Events vs mutation
all events based on events and relevant info for reader • Return aggregate state • Time consuming? Copyright ⓒ All Right Reserved by Buzzvil Reading Events?
recorded by any write Acks to allow consistent writes within a domain • State can be recreated via event aggregation • Faster read performance than aggregating per request Copyright ⓒ All Right Reserved by Buzzvil Per component state
recorded by any write Acks to allow consistent writes within a domain • State can be recreated via event aggregation • Faster read performance than aggregating per request Copyright ⓒ All Right Reserved by Buzzvil Per component state
instance then create even • Should be able to be revertable in case of event log failure • Different approaches possible Copyright ⓒ All Right Reserved by Buzzvil Constrained write
• Reads within each internal system can be completely independent of all other internal systems • Writes still dependent on event log • Event log can use CQRS to allow independent scaling of read/write Copyright ⓒ All Right Reserved by Buzzvil ES + CQRS