DEV Community

loading...
Cover image for DynamoDB as EventStore

DynamoDB as EventStore

Aleix Morgadas
Passionate about how to apply software engineering into different domains. Mostly pragmatic. he/him
・1 min read

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:

gif

Source Code


Feedback

What would you do differently? Did I miss something? Did you have a similar solution for a similar problem?

Discussion (1)

Collapse
aleixmorgadas profile image
Aleix Morgadas Author

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.