3 min read · tagged scad
dependee A depends on dependency B
dependency B is depended on dependee A
Dependencies in software
Importance
Dependency manifestation
Dependency type
Dependency consideration
Matrix structure for binary or qualified binary depends/not-depends relationship:
1 2 3 n
1 . .
2 . . .
3 . . .
m .
Associative graph structures: Directed acyclic, weighted or unweighted graph:
ServiceA -> ServiceB -> ServiceD
ServiceC ->
Slower but more space-efficient than matrix and sub-structure capable.
A depends on B if
Analyse statically (description) or dynamically (execution).
Dynamic analysis requires
Passive network monitoring and analysis -> Network service dependency miner
Logarithm based ranking scheme -> Ratio weight(A->B)/weight(A) or logarithm log(weight(A))*weight(A->B)
Frequency inference -> confidence in dependency candidates
Immediate resolution
Interactive resolution
Offer a single service interface and distribute requests to multiple services within the composition (parallel, serial or more complex routing): requires knowledge of dependencies.
Advantages of services
Service Orchestration
Examples:
Resource Orchestration
Examples:
Choreography
Example:
Bundling
Example:
Multiplexing
Mashup Service Bus/Mash
Bundles: WAR, SAR, BPR, ZIP, Helm charts
Executable code: .class
, .py
Service descriptions: WSDL, …
SLA templates: WSLA, WS-Agreement
Deployment descriptors: HOT, PDD, web.xml, k8s yaml/json, Help templates
Dependencies by reference (e.g. Docker Compose): need resolution before execution
Dependencies by embedding (e.g. Helm charts): no resolution needed but transitivity
Simon Anliker Someone has to write all this stuff.