I would like to share with you how we managed to deploy a solution to store Domain Events in DynamoDB in 2 days (and mostly because of AWS permission issues...😅).
We needed to store how the user interacted with different Domain Models and decouple that storage from the monolithic so they can grow independently. We aimed to create something super simple, or at least not that complex, in 2 to 3 days.
We decided to give a try to process events as:
Monolith sends message to ➡️ SQS ➡️ Triggers Lambda to store it into ➡️ DynamoDB Table
Even though DynamoDB might not be an optimal solution to be used as Event Store, we have given it a try for the next reasons:
- It is fully managed by AWS
- It is cheap enough
- We don't require high write throughput nor read for the moment.
- Able to encrypt the content
Implementation
We decided to go with:
- Terraform as Infrastructure as Code
- Python for AWS Lambda
Feedback
What would you do differently? Did I miss something? Did you have a similar solution for a similar problem?
Top comments (1)
We have identified that the SQS might fail when there is a high spike of events in small timeframe (+4K events in less than a minute). We are planning to move SQS to Kinesis. I will update the repository accordingly.