Hi
In my opinion a big part of soa is that each service encapsulates its internal representation of whatever part of the domain it implements. In an immutable model, such as event sourcing the benefits of doing this seems a little weakened. Why not let other services subscribe to the internal streams? While still only allowing the owner of the streams the right to write. This would eliminate the need to have internal streams and “public streams” created with some event dispatching functionality… Some of the problems with this approach that comes to mind: we might leak internal class names used for serializing the streams, harder to migrate a stream to a new version of a stream…