I'm also interested in this. We just started trying to use EventFlow. One of the big drawbacks that we are going to have to fix is that there is no guarantee that messages will get published. See: https://github.com/eventflow/EventFlow/issues/609
--
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.
Visit this group at https://groups.google.com/group/dddcqrs.
For more options, visit https://groups.google.com/d/optout.
I'm also interested in this. We just started trying to use EventFlow. One of the big drawbacks that we are going to have to fix is that there is no guarantee that messages will get published. See: https://github.com/eventflow/EventFlow/issues/609
--
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.
Visit this group at https://groups.google.com/group/dddcqrs.
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+u...@googlegroups.com.
Visit this group at https://groups.google.com/group/dddcqrs.
For more options, visit https://groups.google.com/d/optout.
Its not so much that I want a custom one its that I don't want the complexities of one at all there is a material difference.I don't want to be able to write a custom extension to determine how to select my event handling methods in my domain object (I know they are called Apply, they are always called Apply). I don't want to use some convoluted auto-wrapping of my handlers with some bizarre way of describing their ordering via attributes with their dependencies all hooked through a container. I would rather have my +- 20-30 lines of code that does this. I don't want when there is some issue in the wrapping and wire ups to lose 2-3 days debugging through the 5000-10000 lines of code responsible for it :) I like it in code, its quick to write, never breaks in weird non-obvious ways (or emits wrong IL etc ... well ok I have caught the C# compiler doing that once or twice), and a Jr right out of school can understand it.Make sense?
On Wed, Apr 3, 2019 at 10:51 AM Sriram Ethiraj <sri...@gmail.com> wrote:
Thank you all for your inputs, I don't have any specific thing in mind, just wanted to see how people are solving their problems,my 2 cents, if we have a defined framework for starters like me,it helps more where i can see the overall picture via help documents (like eventflow)looks like pro's move towards their custom ones.
On Tue, Apr 2, 2019 at 4:24 PM Greg Young <gregor...@gmail.com> wrote:
What precisely do you want the framework to *do*?For the domain model side I could write you something in a few hours tops. Projections are a bit more difficult but it depends on your scope and what is needed (eg many read models or one? Physically located together or distributed? Selective replays or entire model replays? Parallel implementation or serial? What kind of monitoring etc? What kind of notifications?). Getting both up and running should be on the order of hours->days though even with 100% custom code (depends how far you want to go on projections). Can you provide more details of what you *need* overall?Cheers,Greg
On Mon, Mar 18, 2019 at 1:49 AM Sriram Ethiraj <sri...@gmail.com> wrote:
Im C# Dev, new to DDD/CQRS/ES, Do you people recommend any CQRS/ES framework like EventFlow ? Wonder every one has their own ?--ThanksSri
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 ddd...@googlegroups.com.
Visit this group at https://groups.google.com/group/dddcqrs.
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 ddd...@googlegroups.com.
Visit this group at https://groups.google.com/group/dddcqrs.
For more options, visit https://groups.google.com/d/optout.
--Thanks and Regards--
Sriram
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 ddd...@googlegroups.com.
Visit this group at https://groups.google.com/group/dddcqrs.
For more options, visit https://groups.google.com/d/optout.
To unsubscribe from this group and stop receiving emails from it, send an email to dddcqrs+u...@googlegroups.com.
Visit this group at https://groups.google.com/group/dddcqrs.
For more options, visit https://groups.google.com/d/optout.
As someone who is (much) more a consumer of frameworks than a designer of frameworks, I'm not sure I'm the best person to answer that question. I understand where you're coming from--I can think of at least one .Net ES framework that I was excited to try but was too opinionated for my taste; or, to be more precise, I didn't agree with the opinions/decisions the framework developers made.
But in my own experience, using NEventStore for my first ES implementation made a huge difference in getting the ball rolling. It allowed me to focus more on modelling the domain and less on writing plumbing code. At the time, I would not have had the confidence to write it myself, and a project that has benefitted greatly from ES would have had to have been architected using a more traditional approach.
To be fair to your point--I had to write all the projection code from scratch, and the lessons learned during that process were immeasurable.
--
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.
Just my 2 cents that deviates a bit from the original question...
The problem with looking for a "CQRS framework" is that CQRS is really just another name for quite a common way we've all been building many applications since the traditional years. In fact I can hardly think of any production systems I've worked on that can't be described as CQRS/ES.
It could well be a synonym for SOA. I mean, if you look at most SOA systems, you’ll see close parallels with all the CQRS/ES/DDD vocabulary. And because SOA is a pretty established discipline, you can easily find many mature tools/frameworks for your specific needs (e.g. SOA, SIEM, BI), but you hardly see the label “CQRS”, because to say "CQRS project" is rather meaningless in itself. Your application may end up looking CQRS in the end, but it’s a rather inconsequential outcome, not a goal on its own. It's sort of like saying "a framework to build a yellow car".
Let's look at typical SOA patterns and see how they relate to CQRS/ES/DDD concepts (in bold), and there are useful tools/frameworks that helps specific needs.
Let's pick a commerce side of an organisation, you'll typically have some services e.g. CRM, e-commerce, billing-systems, CPQ (configure, pricing, quoting), product-master, provisioning, dunning, accounting, identity, export-control, taxes, etc. Some of them are custom-built, some off-the-shelf (salesforce, netsuite, Xero, Avatax, etc). These things are essentially Bounded Contexts. Each of these services perform a very specific set of business functions (i.e. Commands, e.g. "place an order", "allocate revenue" etc). And they have their own specialised views of common business concepts (e.g. the noun "customers" and "orders" are modelled differently between CRM, billing-system, and accounting systems).
Integrating all these services with each other can become a mess really quickly - to perform a simplest task you'll need to issue commands to dozens of services. A common SOA pattern is to put an ESB in the middle (e.g. mulesoft, serviceMix) that acts as the orchestrator between services. ESBs gives you all the adapters you can ask for to connect with all your various services. These adapters are your Anti Corruption Layers, and you define transformers (Context Mapping) to transform these services into a universal business-domain-model (BDM), i.e. Ubiquitous Language. These BDM activities are pushed into a data stream (e.g. kinesis, kafka, scoop, flume). So now every service owner only needs to worry about pushing/listening to BDM, rather than how to talk to hundreds of different services.
All these events are eventually ingested into an MDM (Master-Data-Management, e.g. tibco, talend, informatica) that creates unified master-records by correlating data from all those services within the entire organisation (i.e. Projections) and reconcile any inconsistencies. The clean master-record output is stored in a data-warehouse in various shapes for different querying needs (Read Model), e.g. redshift, spark, elastic-search, graphql.
Now to complete the loop, all the front-end applications will make Queries to these data-warehouse, so in a single graphql query you can get a 360-degree view of a customer across everything e.g. billing-systems, CRM, provisioning, e-commerce, entitlements, etc. From these front-end applications you can then initiate business operations via the ESB that will issue Commands to individual services, which completes the circle.
Now there are other things too e.g. customer insights, ML, BI, SIEM that basically work on event-sourcing, i.e. it lets you construct information on-demand by processing historical raw events (structured/unstructured), and there are special purpose tools out there e.g. GA/GTM, snowplow, optimizely, splunk, mahout, spark.
PS: there are CQRS frameworks like Axon. My point is that there are also a lot of other products out there that help you in SOA and micro-services environments - they just don't typically wear any CQRS badge.
Thank you all for your inputs, I don't have any specific thing in mind, just wanted to see how people are solving their problems,my 2 cents, if we have a defined framework for starters like me,it helps more where i can see the overall picture via help documents (like eventflow)looks like pro's move towards their custom ones.
On Tue, Apr 2, 2019 at 4:24 PM Greg Young <gregor...@gmail.com> wrote:
What precisely do you want the framework to *do*?For the domain model side I could write you something in a few hours tops. Projections are a bit more difficult but it depends on your scope and what is needed (eg many read models or one? Physically located together or distributed? Selective replays or entire model replays? Parallel implementation or serial? What kind of monitoring etc? What kind of notifications?). Getting both up and running should be on the order of hours->days though even with 100% custom code (depends how far you want to go on projections). Can you provide more details of what you *need* overall?Cheers,Greg
On Mon, Mar 18, 2019 at 1:49 AM Sriram Ethiraj <sri...@gmail.com> wrote:
Im C# Dev, new to DDD/CQRS/ES, Do you people recommend any CQRS/ES framework like EventFlow ? Wonder every one has their own ?--ThanksSri
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 ddd...@googlegroups.com.
Visit this group at https://groups.google.com/group/dddcqrs.
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 ddd...@googlegroups.com.
Visit this group at https://groups.google.com/group/dddcqrs.
For more options, visit https://groups.google.com/d/optout.
To unsubscribe from this group and stop receiving emails from it, send an email to dddcqrs+u...@googlegroups.com.
Visit this group at https://groups.google.com/group/dddcqrs.
For more options, visit https://groups.google.com/d/optout.
So, to event source an application, you need an isolated event store per service, and then a broadcast mechanism to Kafka or splunk, or whatever, for downstream applications.
I also know Kafka will tell you that you can use streams to achieve event sourcing, but it's not really possible.
--
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.
Visit this group at https://groups.google.com/group/dddcqrs.
For more options, visit https://groups.google.com/d/optout.
But in terms of the application which is producing events, needing to read the same events to create the next state, it's not possible, given the consistency properties of Kafka.
The biggest one to mention is that kafka is not durable
The biggest one to mention is that kafka is not durable which is kind of important for events in an event sourced systems, its meant as a transport not as a store.
On Sun, Apr 7, 2019 at 12:34 AM Sandor Agafonoff <3lev...@gmail.com> wrote:
I investigated Kafka heavily to use for event sourcing. It's not a good fit. It's great for logs, and yes, you can later derive many useful analytics etc. But in terms of the application which is producing events, needing to read the same events to create the next state, it's not possible, given the consistency properties of Kafka. In terms of downstream applications using the events produced, it is fine.
So, to event source an application, you need an isolated event store per service, and then a broadcast mechanism to Kafka or splunk, or whatever, for downstream applications.
I also know Kafka will tell you that you can use streams to achieve event sourcing, but it's not really possible.
--
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 ddd...@googlegroups.com.
Visit this group at https://groups.google.com/group/dddcqrs.
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+u...@googlegroups.com.
Visit this group at https://groups.google.com/group/dddcqrs.
For more options, visit https://groups.google.com/d/optout.
To unsubscribe from this group and stop receiving emails from it, send an email to ddd...@googlegroups.com.
Visit this group at https://groups.google.com/group/dddcqrs.
For more options, visit https://groups.google.com/d/optout.
--Studying for the Turing test
To unsubscribe from this group and stop receiving emails from it, send an email to dddcqrs+u...@googlegroups.com.
Visit this group at https://groups.google.com/group/dddcqrs.
For more options, visit https://groups.google.com/d/optout.
All data is immediately written to a persistent log on the filesystem without necessarily flushing to disk. In effect this just means that it is transferred into the kernel's pagecache.
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/7ZbPGJ0Re5w/unsubscribe.
To unsubscribe from this group and all its topics, send an email to dddcqrs+u...@googlegroups.com.
If I pull the power plug, can I lose data? With kafka the answer is *yes*.
once I have put a message in a queue is it assured to not be *lost*.
--
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.
As a result of these factors using the filesystem and relying on pagecache is superior to maintaining an in-memory cache or other structure
flush.ms - In general we recommend you not set this and use replication for durability and allow the operating system's background flush capabilities as it is more efficient.
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/7ZbPGJ0Re5w/unsubscribe.
To unsubscribe from this group and all its topics, send an email to ddd...@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+u...@googlegroups.com.
Hi,we have a few Golang services with CQRS,ES and we have no framework in place. All custom built.But we had a guy in the team that already had experience with such development from his previous job.Best, T.On Tue, 2 Apr 2019, 12:59 Ryan Erskine, <ryan.j...@gmail.com> wrote:I'm also interested in this. We just started trying to use EventFlow. One of the big drawbacks that we are going to have to fix is that there is no guarantee that messages will get published. See: https://github.com/eventflow/EventFlow/issues/609
--
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 ddd...@googlegroups.com.
Visit this group at https://groups.google.com/group/dddcqrs.
For more options, visit https://groups.google.com/d/optout.
On Tue, 2 Apr 2019, 12:59 Ryan Erskine, <ryan.j...@gmail.com> wrote:I'm also interested in this. We just started trying to use EventFlow. One of the big drawbacks that we are going to have to fix is that there is no guarantee that messages will get published. See: https://github.com/eventflow/EventFlow/issues/609
--
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 ddd...@googlegroups.com.
To unsubscribe from this group and stop receiving emails from it, send an email to dddcqrs+u...@googlegroups.com.
Visit this group at https://groups.google.com/group/dddcqrs.
For more options, visit https://groups.google.com/d/optout.
To unsubscribe from this group and stop receiving emails from it, send an email to dddcqrs+u...@googlegroups.com.
Visit this group at https://groups.google.com/group/dddcqrs.
To view this discussion on the web visit https://groups.google.com/d/msgid/dddcqrs/6e793246-f1c3-41fc-95be-0e7262ef1cf5%40googlegroups.com.