In the ADSD course Udi Dahan presented an idea that service from SOA is a logical construct and not a physical one. That means, that service-parts can be deployed in arbitrary number of deployment units. This is a very powerful idea and it lets us be far more creative when designing services and drawing service boundaries.
The problem with this approach is that of 3rd party dependencies. See this picture:
How would you go around this issue of having 3rd party dependencies in different versions in different services, that you’d like to deploy in the same deployment unit?
Udi spoke of a script that is validating the packages in the release pipelines and I can imagine something similar working here as a protection too, but that doesn’t solve the problem of being coupled to one singe version if a library.
If we would want to enforce having dependencies without version clashes, that would quintessentially mean, that we’d have to update the whole (or at least a part of) distributed system at once. Is there an elegant solution for this?