Successfully reported this slideshow.
Your SlideShare is downloading. ×

The Saga Pattern: 2 years later by Robert Pankowecki

The Saga Pattern: 2 years later by Robert Pankowecki

Download to read offline

When you split your application into multiple module how do you make them talk to each other? How do you make them react to changes happening in other parts of the system? How do you make them tell each other that something needs to be done? When should it happen? We will have a look what we can squeeze out of domain events being published in various parts of our application and how we can use them to orchestrate a bigger business process.

When you split your application into multiple module how do you make them talk to each other? How do you make them react to changes happening in other parts of the system? How do you make them tell each other that something needs to be done? When should it happen? We will have a look what we can squeeze out of domain events being published in various parts of our application and how we can use them to orchestrate a bigger business process.

Advertisement
Advertisement

More Related Content

Advertisement

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all

The Saga Pattern: 2 years later by Robert Pankowecki

  1. 1. The only reward for solving complexity is... … more complexity
  2. 2. Robert @Pankowecki @arkency
  3. 3. DDD ● Bounded Contexts ● Domain Events ● Agreggates ● Entities ● Repositories ● Value Objects ● Sagas ● Read models solving/attacking/managing complexity
  4. 4. Bounded Contexts
  5. 5. http://www.slideshare.net/jeppec/soa-and-event-driven-architecture-soa-20
  6. 6. http://www.slideshare.net/jeppec/soa-and-event-driven-architecture-soa-20
  7. 7. Event < Shop Organizer, Merchant Ticket, Product
  8. 8. User.columns.size => 50
  9. 9. http://www.slideshare.net/jeppec/soa-and-event-driven-architecture-soa-20
  10. 10. Message Driven Architecture ● Commands ● Events
  11. 11. Commands module Seating class BookEntranceCommand attribute :booking_id,String attribute :event_id, Integer attribute :seats, Array[Seat]
  12. 12. class OrderShipped SCHEMA = { order_number: String, customer_id: Integer, provider: String, delivery_id: Integer, } end Events
  13. 13. Send PDF via Postal 1. PostalAddedToOrder 2. PostalAddressFilledOut 3. PdfGenerated 4. PaymentPaid 5. => SendPdfViaPostal
  14. 14. Payment paid too late 1. OrderPlaced 2. OrderExpired 3. PaymentPaid 4. => ReleasePayment
  15. 15. Payment paid OK 1. OrderPlaced 2. PaymentPaid 3. OrderDelivered 4. => CapturePayment
  16. 16. Payment paid OK but delivery... 1. OrderPlaced 2. PaymentPaid 3. OrderDeliveryFailed 4. => ReleasePayment
  17. 17. Invoice Paid Too Late 1. OrderPlaced 2. InvoiceIssued 3. CreditNoteIssued 4. InvoicePaid 5. OrderDelivered 6. => IssueNewInovoice
  18. 18. Discount after 3 orders in 30 days 1. OrderShipped 2. OrderDiscountPointExpired 3. OrderShipped 4. OrderShipped 5. OrderShipped 6. => GrantDiscount
  19. 19. Trip Booking 1. Plane Booked 2. Hotel Booked 3. Car Booking Failed 4. => Unbook Hotel 5. => Unbook Plane

×