Visualizing Service Dependencies in SO-Aware
A common requirement that we received from some customers while we were in the early design stages of SO-Aware was the ability of tracking static dependencies between services. For instance, Service A calls Service B and Service B calls Service X. This feature is not only useful for documentation but also for helping administrators to determine which services are going to affected with a change in one of the existing service. (In that example, a change in the service X would affect Service A and B).
A service dependency is represented in the repository as a “ServiceDependency” resource, which contains two simple properties “ServiceVersion” and “DependantServiceVersion”. Therefore, creating a new service dependency with the OData API is quite straightforward, and it’s illustrated in the code above
1: var serviceDependency = new ServiceDependency
3: ServiceVersion = serviceA,
4: DependantServiceVersion = serviceB,
That code is creating a new Dependency resource that represents a dependency between service B and service A (Service B is using Service A).
As the OData feed might not be the right thing for visualizing the dependencies between services, we have also added a nice dependency tree as part of the web portal to visualize those. So, when you visualize the dependencies for the service A for instance, you will see something like this.