Great stuff, Chris and Dru. If ideas are being considered, where a Saga/state machine is “hosted” and how/where its state is persisted would be an interesting topic.
FWIW, I have consumed a lot of your excellent content and you should get some live questions going with this type of format, that would probably be very interesting. Especially with this pairing.
Great talk! Thanks! Speaking of weird use of MassTransit, we had a system with Domain Driven Design entity implementations through MassTransit sagas. Don't know if that's a good design or not. Also, I've always wondered how the MassTransit sagas relate to the concept of an actor in actor systems.
I know of several systems that use sagas to implement DDD aggregates, so it isn't uncommon (within the scope of DDD practitioners anyway). I built an early .NET Actor library (Stact) back in the day, but soon came to realize that durable state was more important. I consider saga state machines a durable form of an actor, since it's changes behavior based on state. And it's plenty fast for most systems (not people writing games where if the multi-player CTF match crashes, nobody cares) depending upon the saga repository used.
Thank u for this great and fun video, one of the most essential question was made by Dru at 19:16 and I suggest name "Orchestration vs Choreography Q&A" or Courier vs SagaStateMachine for this video. Could I post video on my UA-cam channel with implementation of Saga Orchestration and Request/Response if I decide to record it? If u find time please give me some suggestion on my question for Publish method which creates new connection every time and doesn't close. I solved the problem with closing with IDisposable, scope block and custom bus factory. Thank you in advance.
Chris, got a question regarding your example of the slow demographic search. So what would be the best approach in scaling out MassTransit for a huge number of sequential tasks that could be run with a certain degree of parallelism? If you have a lot of messages, thousands that all are distributed evenly between several owner,s owners have a small number like 10 or 20. Each message per origin can be processed only one at a time and processing takes 10 seconds. Let's say you have an aquapark, where there are 5 waterslides each of them has a height limitation, and thousands of children are evenly distributed by height, and they go only to the max allowed height allowed waterslide (so if you are really tall you can't go into the smallest waterslide). And only one person at a time can slide each waterslide and it lasts 10 seconds. So even if increase the number of consumers (staff at each slide) it won't really help to scale this out, because there will be still only 5 slides and each ride will take not less than 10 seconds, and then there will be a huge pile of people waiting. So can we scale it somehow? Can we dynamically increase the number of slides (queues), or maybe at startup but with some specifications who can enter those?
What is this, an interview at some company where they ask questions like this and then sit you at a desk doing simple programming tasks and attending endless meetings?
@@PhatBoyG 😃nope, just tried to wrap some real case problems in a more generic description. So the simple question is how do you scale when you have a lot of slow operations that should be performed sequentially, or that should be taken out of MassTransit and used with something on the transport, like Azure ServiceBus Sessions
@@nacmop Really no way to answer you question without context, and UA-cam isn't the place for it. If you want architectural advice on how to build such a thing, look at the support options on the MassTransit web site.
Awesome conversation! Thanks, Chris and Dru!
Great stuff, Chris and Dru. If ideas are being considered, where a Saga/state machine is “hosted” and how/where its state is persisted would be an interesting topic.
Bus stop chat. Dig it.
Bus Stop. That's priceless.
Should name "BusPool" :) just kidding :) the talk was great and would be great to go deeper into such topics !
FWIW, I have consumed a lot of your excellent content and you should get some live questions going with this type of format, that would probably be very interesting. Especially with this pairing.
Appreciate the feedback, and that's definitely something we will consider!
Great talk! Thanks! Speaking of weird use of MassTransit, we had a system with Domain Driven Design entity implementations through MassTransit sagas. Don't know if that's a good design or not. Also, I've always wondered how the MassTransit sagas relate to the concept of an actor in actor systems.
I know of several systems that use sagas to implement DDD aggregates, so it isn't uncommon (within the scope of DDD practitioners anyway).
I built an early .NET Actor library (Stact) back in the day, but soon came to realize that durable state was more important. I consider saga state machines a durable form of an actor, since it's changes behavior based on state. And it's plenty fast for most systems (not people writing games where if the multi-player CTF match crashes, nobody cares) depending upon the saga repository used.
Thank u for this great and fun video, one of the most essential question was made by Dru at 19:16 and I suggest name "Orchestration vs Choreography Q&A" or Courier vs SagaStateMachine for this video. Could I post video on my UA-cam channel with implementation of Saga Orchestration and Request/Response if I decide to record it? If u find time please give me some suggestion on my question for Publish method which creates new connection every time and doesn't close. I solved the problem with closing with IDisposable, scope block and custom bus factory. Thank you in advance.
Chris, got a question regarding your example of the slow demographic search.
So what would be the best approach in scaling out MassTransit for a huge number of sequential tasks that could be run with a certain degree of parallelism?
If you have a lot of messages, thousands that all are distributed evenly between several owner,s owners have a small number like 10 or 20.
Each message per origin can be processed only one at a time and processing takes 10 seconds.
Let's say you have an aquapark, where there are 5 waterslides each of them has a height limitation, and thousands of children are evenly distributed by height, and they go only to the max allowed height allowed waterslide (so if you are really tall you can't go into the smallest waterslide). And only one person at a time can slide each waterslide and it lasts 10 seconds.
So even if increase the number of consumers (staff at each slide) it won't really help to scale this out, because there will be still only 5 slides and each ride will take not less than 10 seconds, and then there will be a huge pile of people waiting.
So can we scale it somehow? Can we dynamically increase the number of slides (queues), or maybe at startup but with some specifications who can enter those?
What is this, an interview at some company where they ask questions like this and then sit you at a desk doing simple programming tasks and attending endless meetings?
@@PhatBoyG 😃nope, just tried to wrap some real case problems in a more generic description. So the simple question is how do you scale when you have a lot of slow operations that should be performed sequentially, or that should be taken out of MassTransit and used with something on the transport, like Azure ServiceBus Sessions
@@nacmop Really no way to answer you question without context, and UA-cam isn't the place for it. If you want architectural advice on how to build such a thing, look at the support options on the MassTransit web site.