I’m new to event sourced databases.
How I’m used to working with relational databases: you store database schemas in your code repository. You write database migrations when your schema need to change. On deployment the migrations are automatically applied to the database.
But I’m a bit lost how to get a similar workflow with EventStore. Take projections for example. I know that I can store code that is generating projections in my codebase and push into via an API.
So the minimalist deployment setup would automatically push all new projection code and reset the projections. But this would only work if those projections don’t emit new events, so it doesn’t seem like a good idea.
So what do you guys do to deploy code? Just by hand?
The same goes for permissions configuration, stream metadata configuration and so on. Do you store it together with your code base or do you manually deploy it?
Hope my desire is clear: to have the whole application logic stored in code and versioned together with the rest of codebase.