0

There is a minor difference between Saga pattern https://microservices.io/patterns/data/saga.html and my use case below. Saga pattern is about distributed transaction when an event is happening vs my use case below is a reconciliation pattern after events have all happened.

We have a large ecosystem of microservices (300+) in a division (2000+ employees). All our services loosely follow a message driven architecture. For example in an ecommerce world we have a System A which sends a message Customer X placed an order for item Y for $4.50. Order Id is 123. There is then a System B which may be a payment service which receives this message and actually debits the Customer's payment method (paypal/debit card etc) for $4.50 which then sends a message that Payment was received from Customer X for item Y for $4.50. This will be received by two systems a warehouse system which will start shipping the order and perhaps a compliance system which will ensure this gets reported correctly.

Given an order id such as 123 above I am designing a reconciliation system where all the events that are expected to occur such as OrderPlaced, PaymentReceived, ItemShipped, ComplianceCheckDone have actually happened. It appears an Order follows a typical workflow and each microservice sends updates as and when parts of it are triggered.

There are multiple ways to solve this however I am looking for existing architecture best practices, blue prints, patterns (frameworks?) to solve this problem. Assume no constraint on languages, systems, compilers etc.

1
  • Have you looked at event sourcing? What is the goal of this new system?
    – Blaž Mrak
    Commented Jun 15, 2021 at 14:56

1 Answer 1

1

I guess what you are describing somewhat fits with distributed tracing or observability - the main idea being that you attach a randomly generated correlation ID to the original request that is attached to all resulting events, allowing you to reconcile the process through the system.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.