Upgrade to Pro — share decks privately, control downloads, hide ads and more …

TechDays 2017 - Scalable Enterprise Applications with CQRS and Service Fabric

TechDays 2017 - Scalable Enterprise Applications with CQRS and Service Fabric

In this session we will show how we use CQRS and event sourcing to deploy our ERP solution on Service Fabric. We will talk about the pitfalls and the lessons learned. But we will also talk about how we keep this maintainable and testable by applying the ports and adapters approach from hexagonal architecture.

Michiel Overeem

October 13, 2017
Tweet

More Decks by Michiel Overeem

Other Decks in Technology

Transcript

  1. Filmpje mark (eerste plaat van het filmpje hier) 4752 cores,

    70 TB RAM, 380 TB SSD storage 18.000 concurrent RDP users 450.000 unique users a month 5.600.000 API calls a day AFAS Online (89% customers)
  2. Client Command system Query system Eventing system “PlaceOrderCommand”: { “OrderId”:

    “0b81b458-7671-4e9b-844b-9934255f5406”, “CustomerName”: “Linus Torvalds”, “OrderLines”: [ … ] }
  3. Client Command system Query system Eventing system The command system

    validates the command, using its own datamodel.
  4. Client Command system Query system Eventing system “OrderPlacedEvent”: { “OrderId”:

    “0b81b458-7671-4e9b-844b-9934255f5406”, “CustomerName”: “Linus Torvalds”, “OrderLines”: [ … ] }
  5. Client Command system Query system Eventing system Use the events

    published to built up the state in the Command system.
  6. Client Command system Query system Eventing system Use the events

    published to built up the state in the Command system.
  7. Client Command system Query system Eventing system “PlaceOrderCommand”: { “OrderId”:

    “0b81b458-7671-4e9b-844b-9934255f5406”, “CustomerName”: “Linus Torvalds”, “OrderLines”: [ … ] }
  8. Client Command system Query system Eventing system “OrderPlacedEvent”: { “OrderId”:

    “0b81b458-7671-4e9b-844b-9934255f5406”, “CustomerName”: “Linus Torvalds”, “OrderLines”: [ … ] }
  9. Client Query system Eventing system Load balancer “PlaceOrderCommand”: { “OrderId”:

    “0b81b458-7671-4e9b-844b-9934255f5406”, “CustomerName”: “Linus Torvalds”, “OrderLines”: [ … ] }
  10. Client Command system Query system Eventing system “OrderPlacedEvent”: { “OrderId”:

    “0b81b458-7671-4e9b-844b-9934255f5406”, “CustomerName”: “Linus Torvalds”, “OrderLines”: [ … ] }