To be honest, I think the nomenclature is all over the place around these patterns — I rarely see it applied consistently. But, yeah — Event or Command Streaming would probably involve local state, Event Sourcing being the more general pattern of log based design. That said, it’s worth noting that a Kafka Stream processor (for example) only maintains local state as a cache of what is already in the log. So it’s still abiding by the rules of Event Sourcing.
As for desired vs. validated state, in this pattern these concepts become stages of the stream processing pipeline. An invalid state transition just wouldn’t be applied to the next stage of the stream pipeline and would be rejected. This is hugely beneficial for reporting and tracking because you now have full transparency of the behavior of the system.
I wouldn’t say the pattern works everywhere — I wouldn’t use it for low-latency trading algorithmic systems. However, it is showing huge potential in turning distributed system integration on its head. An interesting side effect is that these behavioral logs prove to be very useful for Machine Learning too.
