My advice, stay away from frameworks. They don't provide nearly the
value you that you think they will.
What reference code would make a good starting point in the .Net space?This whole thread is really interesting--in the past I've used frameworks (NES and CD), mainly because I didn't want to spend *any* time writing plumbing code. It sounds like you and others are saying it's not that difficult, and the code is really *not* plumbing code, but is (or can be) more specific to your domain.I think a thread or blog post on things to con
--
You received this message because you are subscribed to a topic in the Google Groups "DDD/CQRS" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/dddcqrs/mMMDwTwyct0/unsubscribe.
To unsubscribe from this group and all its topics, send an email to dddcqrs+u...@googlegroups.com.
The framework prescribed guid’s and we happily went with that. This stopped us from using a number of useful patterns around predictable id’s.
On 31 Jul 2016, at 04:44, Danil Suits <danil...@gmail.com> wrote:
The framework prescribed guid’s and we happily went with that. This stopped us from using a number of useful patterns around predictable id’s.
What's wrong with predictable uuids?
--
I'm not sure we are going to resolve this, and actually I think we are
far more in agreement that it appears. The major sticking point seems
to be 'how much CQRS/Event Sourcing' specific code is there once you
remove all the generic problems around messaging, DB access, REST
etc'?. My answer is 'hardly any'. One last attempt :-):
Hi all,We are looking into a mature CQRS framework. Any successful implementation using Axon in production? Any other frameworks that we should look into?Thanks.
On Scala, I've found fun-cqrs to be great. It's got Akka bindings for production and in-memory bindings for testing. It's very agnostic in that it only provides the abstractions for wiring up command/event handlers and projections. It assumes nothing else.
|
--
>> --
>> You received this message because you are subscribed to the Google Groups
>> "DDD/CQRS" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to dddcqrs+u...@googlegroups.com.
>> For more options, visit https://groups.google.com/d/optout.
>
>
>
> --
> Studying for the Turing test
>
"Still, it would take forever, and wouldn't help if you deploy frequently."
Have you measured? There are lots of strategies towards making
projections go faster when they are in history (batching is the main
one). I have seen projections doing millions of inserts into a sql db
run in < 1 minute.
Very nice summary,From my experience I found all of them manageable except one--- - managing read-model schema changes (e.g. new/alter read models, rebuild projection from entire event history while keeping uptime)I cannot believe there is no better solution,How can you keep the principle of releasing few dozen times a day with having to do this again and again.What if there are thousands of events per day and the history starts 10 years ago..This one thing really worries my and I am using Event Sourcing only in places I absolutely need it, and the amount of events are manageable (as small and as light as possible
I feel like there are quite a lot of non-trivial real-world challenges around cqrs that require significant boilerplate code that aren't anything domain specific at all. Just to name a few:
- event sourcing
- snapshots, caching
- unit-of-work, rollbacks
- optimistic/pessimistic locking
- validations
- versioning (of events, of domain logic, of projection logic)
- process-manager, state-machine
- integrations (message queue, API gateway, notifications, web-socket, event streaming, polling)
- event storage, archiving/rollover, backup, indexing, migration
- projections/denormaliser
- deduplication, data cleansing
- event ordering policy
- error handling, retry, dead-lettering, alert, circuit breaker
- scaling, load-balancing, redundancy
- managing read-model schema changes (e.g. new/alter read models, rebuild projection from entire event history while keeping uptime)
- administrative tools, e.g. Manual way to fix erroneous domain data, fix read models, view/query domain data
- operation monitoring, e.g. Monitor the flow of events; monitor eventual consistency, detect excessive delays, data inconsistency
- security: I find that access-control to entities (e.g. user permission, multi-tenancy) more challenging to enforce in applications backed with event-sourced repositories
Most of these are common requirements in typical cqrs projects meant for production. And of course, many of them are solved problems that aren't even cqrs specific, which is more the reason not to write everything again from scratch on every cqrs project.
> On 27 Jul 2016, at 7:43 PM, Greg Young <gregor...@gmail.com> wrote:
>
> If you do it right there isnt really much boilerplate. Use reference
> code not frameworks.
>
>> On Tue, Jul 26, 2016 at 10:04 PM, Jorg Heymans <jorg.h...@gmail.com> wrote:
>>
>>
>>> On Tuesday, July 26, 2016 at 12:24:59 PM UTC+2, Greg Young wrote:
>>>
>>> My advice, stay away from frameworks. They don't provide nearly the
>>> value you that you think they will.
>>
>>
>> Depends on your expectations. For the experienced cqrs'ers indeed no
>> framework is going to cut it. For people still trying to grasp the pattern
>> in actual code such framework can be very helpful. As far as Axon is
>> concerned, it provides a lot of boilerplate stuff that you would end up
>> writing yourself anyway, so why not leverage it if it matches your use case.
>>
>> Jorg
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "DDD/CQRS" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to dddcqrs+unsubscribe@googlegroups.com.
> --
> Studying for the Turing test
>
> --
> You received this message because you are subscribed to the Google Groups "DDD/CQRS" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to dddcqrs+unsubscribe@googlegroups.com.
--
You received this message because you are subscribed to the Google Groups "DDD/CQRS" group.
To unsubscribe from this group and stop receiving emails from it, send an email to dddcqrs+unsubscribe@googlegroups.com.
For example, I have no "read" database -- I'm using strictly in memory because my dataset will allow it. I started out trying to make the read model persistent and ran into complications and a lack of flexibility I didn't want to deal with.
I need a monitoring service -- badly. I have a production issue where for some reason the read side stops listening, so periodically I have to reset the server. Unhappiness :(
I already had to build a couple really cobbled together tools for event migration and "replay all".
I would much rather use a Library that abstracted away the details of the "how" from me.
Additionally, the Internet as a whole is sorely lacking in examples of how to do the majority of this. The literature is heavily skewed towards talking about the write-side and, with a couple exceptions, the read side is hand-waving magic of "just build a projection".
> email to dddcqrs+unsubscribe@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>
> --
> You received this message because you are subscribed to the Google Groups
> "DDD/CQRS" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to dddcqrs+unsubscribe@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
--
Studying for the Turing test
--
You received this message because you are subscribed to the Google Groups "DDD/CQRS" group.
To unsubscribe from this group and stop receiving emails from it, send an email to dddcqrs+unsubscribe@googlegroups.com.
>> > email to dddcqrs+unsubscribe@googlegroups.com.
>> > For more options, visit https://groups.google.com/d/optout.
>> >
>> > --
>> > You received this message because you are subscribed to the Google
>> > Groups
>> > "DDD/CQRS" group.
>> > To unsubscribe from this group and stop receiving emails from it, send
>> > an
>> > email to dddcqrs+unsubscribe@googlegroups.com.
>> > For more options, visit https://groups.google.com/d/optout.
>>
>>
>>
>> --
>> Studying for the Turing test
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "DDD/CQRS" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to dddcqrs+unsubscribe@googlegroups.com.
>> For more options, visit https://groups.google.com/d/optout.
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "DDD/CQRS" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to dddcqrs+unsubscribe@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
--
Studying for the Turing test
--
You received this message because you are subscribed to the Google Groups "DDD/CQRS" group.
To unsubscribe from this group and stop receiving emails from it, send an email to dddcqrs+unsubscribe@googlegroups.com.
>> >> > email to dddcqrs+unsubscribe@googlegroups.com.
>> >> > For more options, visit https://groups.google.com/d/optout.
>> >> >
>> >> > --
>> >> > You received this message because you are subscribed to the Google
>> >> > Groups
>> >> > "DDD/CQRS" group.
>> >> > To unsubscribe from this group and stop receiving emails from it,
>> >> > send
>> >> > an
>> >> > email to dddcqrs+unsubscribe@googlegroups.com.
>> >> > For more options, visit https://groups.google.com/d/optout.
>> >>
>> >>
>> >>
>> >> --
>> >> Studying for the Turing test
>> >>
>> >> --
>> >> You received this message because you are subscribed to the Google
>> >> Groups
>> >> "DDD/CQRS" group.
>> >> To unsubscribe from this group and stop receiving emails from it, send
>> >> an
>> >> email to dddcqrs+unsubscribe@googlegroups.com.
>> >> For more options, visit https://groups.google.com/d/optout.
>> >
>> >
>> > --
>> > You received this message because you are subscribed to the Google
>> > Groups
>> > "DDD/CQRS" group.
>> > To unsubscribe from this group and stop receiving emails from it, send
>> > an
>> > email to dddcqrs+unsubscribe@googlegroups.com.
>> > For more options, visit https://groups.google.com/d/optout.
>>
>>
>>
>> --
>> Studying for the Turing test
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "DDD/CQRS" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to dddcqrs+unsubscribe@googlegroups.com.
>> For more options, visit https://groups.google.com/d/optout.
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "DDD/CQRS" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to dddcqrs+unsubscribe@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
--
Studying for the Turing test
--
You received this message because you are subscribed to the Google Groups "DDD/CQRS" group.
To unsubscribe from this group and stop receiving emails from it, send an email to dddcqrs+unsubscribe@googlegroups.com.
I'm with Hendry (and others) on this one. As someone whose been reading about ES for about a year, then decided to do it, there was a considerable amount of infrastructure to put in place that I'm STILL working on the get where I want to be.
For example, I have no "read" database -- I'm using strictly in memory because my dataset will allow it. I started out trying to make the read model persistent and ran into complications and a lack of flexibility I didn't want to deal with.
I need a monitoring service -- badly. I have a production issue where for some reason the read side stops listening, so periodically I have to reset the server. Unhappiness :(
I already had to build a couple really cobbled together tools for event migration and "replay all".
I would much rather use a Library that abstracted away the details of the "how" from me.
Additionally, the Internet as a whole is sorely lacking in examples of how to do the majority of this. The literature is heavily skewed towards talking about the write-side and, with a couple exceptions, the read side is hand-waving magic of "just build a projection".
You received this message because you are subscribed to a topic in the Google Groups "DDD/CQRS" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/dddcqrs/mMMDwTwyct0/unsubscribe.
To unsubscribe from this group and all its topics, send an email to dddcqrs+unsubscribe@googlegroups.com.