This is a theory question, and I wanted to get some opinions. My
application is very write heavy, and I've found that CQRS can meet my
needs rather well. There are, however, times where I want to not have
to incur the cost of instantiating my aggregate, and simply store an
event directly.
Replay issues aside, what problems do you see with this? Let's take
it a step further and remove UnitOfWork from the equation as well, and
just send directly to the event store. Because some clients will be
sending historical commands (I want to capture history if they have an
outage, the client software isn't running etc. and have it weaved into
it's proper temporal context instead of when the command is sent).
I know that I also do not want to have any kind of transaction running
since it's just a single operation, and I want it to fail visibly if
it does. I also want the write to return as quickly as possible, so
no reads beforehand will significantly speed up the round trip time.
(I know the "correct" answer is to cache the aggregate, even so, there
is still a lock on the aggregate itself, plus lookup overhead, etc.)
Is this a use case anyone has run into?