Profile Picture

Arfan Uddin

Founder at Connecto | Pursuing PhD in Software Engineering | Full Stack Developer

Understanding Microservice Dependencies: A Complete Taxonomy from 2,659 Sources

In microservice architectures, dependencies are the invisible threads that hold everything together—and when they break, your entire system can unravel. Yet despite their critical importance, there's been no unified framework for understanding, categorizing, and managing these dependencies.

Our multivocal literature review—published in the Journal of Systems and Software (JSS)—synthesized 2,659 sources (1,733 academic papers + 926 grey literature articles) to create the first comprehensive taxonomy of microservice dependencies. We identified 28 distinct dependency types across 6 categories, plus 11 symptom patterns that indicate underlying dependency issues.


The Big Picture

Before diving into details, here's how the 90 synthesized studies map across dependency types, tools, and quality impacts:

Sankey diagram showing the flow from dependency types to detection tools to quality impacts across 90 synthesized studies
How dependencies flow from types to tools to quality impacts

The flow reveals a critical insight: Control Dependencies dominate research attention, while Semantic and Quality Attribute Dependencies remain underexplored—despite their significant impact on system maintainability.

2,659
Sources Reviewed
90
Studies Synthesized
28
Dependency Types
20+
Tools Identified

The Unified Dependency Taxonomy

We developed a comprehensive taxonomy that organizes all identified dependencies into 6 primary categories and 4 symptom categories. This framework provides a common vocabulary for both researchers and practitioners.

The 6 Primary Dependency Categories (D1-D6)

CategoryDependency TypesAssociated Artifacts
D1. Data DependencyData Schema, ParametricORM, DTO, API parameters
D2. Control DependencySynchronous, Asynchronous, Call-Return, TransactionEndpoints, Message Events, Method Calls
D3. Resource DependencySource Code, Core, Starter, Database, Environment, Cluster, NetworkLibraries, Containers, Config Files
D4. Semantic DependencySemantic (functional similarities)Method Definitions
D5. Quality AttributesQuality Attributes, SecuritySLA Documents, Policies
D6. Requirement DependencyFunctional/DomainBusiness Process Documents

Key Finding

Control Dependencies (D2) receive the most research attention, but our analysis shows that Resource Dependencies (D3) cause the most cascading failures in production systems. The gap between research focus and practical impact suggests opportunities for tool development.


Understanding Each Dependency Category

D1. Data Dependency

Data dependencies arise when microservices share or interact with common data entities.

Data Schema Dependency occurs when multiple services interact with overlapping database schemas or data transfer objects (DTOs). Changes to schema design can cascade across all dependent services.

Parametric Dependency describes how input parameters influence service behavior and inter-service communication. Configuration changes can silently break downstream services.

Common Pitfall

Shared database schemas between microservices create hidden coupling. When Service A modifies a table structure, Services B, C, and D may fail silently or corrupt data.

D2. Control Dependency

Control dependencies govern how services interact and coordinate their execution.

TypeDescriptionImpact
SynchronousService waits for response before proceedingTight coupling, latency propagation
AsynchronousServices communicate via message brokersTemporal decoupling, eventual consistency
Call-ReturnMethod invocations between servicesFunctional coupling
TransactionDatabase transactions spanning servicesConsistency requirements, distributed locks

D3. Resource Dependency

Resource dependencies (also called Technology Dependencies) occur when services share infrastructure or code resources.

  • Source Code Dependency: Shared libraries between services
  • Database Dependency: Multiple services accessing the same database instance
  • Environment Dependency: Configuration settings, credentials, environment variables
  • Cluster Dependency: Services relying on specific containerized environments (Docker, Kubernetes pods)
  • Network Dependency: Reliance on network protocols (HTTP, gRPC, message queues)

D4. Semantic Dependency

Semantic dependencies emerge from functional similarities between services. Services performing similar tasks may need coordinated updates to maintain consistency across the system.

D5. Quality Attributes Dependency

These dependencies relate to non-functional requirements:

  • Security: Authentication, authorization, encryption dependencies
  • SLA Requirements: Performance, availability, and reliability constraints

D6. Requirement Dependency

Functional dependencies based on business process flows, often mapped using Domain-Driven Design (DDD) principles.


Dependency Symptoms (S1-S4)

Beyond the primary categories, we identified symptom patterns—manifestations of underlying dependencies that indicate potential issues.

Symptom CategoryTypesDescription
S1. Stage of OperationDevelopment, Deployment, RuntimeWhen the dependency manifests in the lifecycle
S2. Level of CriticalityHard, SoftImpact severity when dependency fails
S3. TemporalTemporalTime-sensitive relationships and state changes
S4. VariousNull, Inter-Microservice, Cyclic, Transitive, InferredCross-cutting dependency patterns

Critical Symptom: Cyclic Dependencies

Cyclic dependencies (S4) occur when services form dependency loops, creating deployment nightmares and scalability barriers. Our review found this pattern in 23% of analyzed systems, often requiring architectural refactoring to resolve.


Tools for Industry Practitioners

Our review identified 20+ tools for dependency detection and management. Here are the most useful ones organized by use case:

Dependency Analysis & Visualization

ToolPurposeAnalysis TypeLanguagesLink
GSMARTGenerates Service Dependency Graphs (SDGs)StaticJavaCode
MicroDepGraphAnalyzes Docker configs to reveal dependenciesStaticJavaCode
SYMBIOTEMonitors coupling evolution and architectural degradationDynamicJavaCode
Code CompassDeep parsing and visualization of large codebasesStaticC/C++, Java, JSCode
MAATEvaluates microservice architecture qualityBothJava, C#, PythonCode

Root Cause Analysis & Fault Diagnosis

ToolPurposeKey InnovationLink
TraceNetRoot cause localization via trace analysisOperation-level SDG constructionCode
T-RankPerformance diagnosis using spectrum-based analysisLightweight, high accuracy
TripleInterpretable anomaly detectionSTGCN-based Deep SVDD

Resource Management & Autoscaling

ToolPurposeApproachLink
ChainsFormerOptimizes resource allocation via dependency chainsReinforcement learning
DeepScalerSLA-aware autoscalingDeep learning with attention-based GCN

Industry-Grade Observability Platforms

PlatformDependency FeaturesLanguagesLink
New RelicDependencies UI for upstream/downstream visualizationJava, .NET, Node.js, Python, Go, RubySite
OrteliusDeployment dependency tracking, version controlJava, JavaScript, PythonSite
OpenTelemetryStandardized observability frameworkMulti-languageSite

Impact on Software Quality

Our review examined how dependencies affect key quality attributes:

Quality AttributeImpacting DependenciesManagement Strategy
MaintainabilityData Schema, Source Code, CyclicLoose coupling, interface contracts, dependency inversion
PerformanceSynchronous, Network, TransactionAsync patterns, caching, circuit breakers
AvailabilityHard Dependencies, Runtime, DatabaseFault tolerance, graceful degradation, bulkheads
ScalabilityControl Flow, Cluster, ResourceHorizontal scaling, service mesh, load balancing
SecuritySecurity, Environment, NetworkZero trust, secrets management, mTLS

Key Insight

56% of studies found that poorly managed dependencies directly impact system maintainability. The most effective mitigation strategy is proactive dependency detection during the development phase, before issues propagate to production.


Practical Recommendations

For Architects and Team Leads

  1. Map dependencies early — Use tools like GSMART or MicroDepGraph during design reviews
  2. Classify by criticality — Distinguish hard vs. soft dependencies to prioritize resilience efforts
  3. Monitor coupling evolution — Tools like SYMBIOTE can detect architectural degradation before it becomes critical
  4. Adopt interface-first development — Define contracts before implementation to prevent hidden dependencies

For Developers

  1. Avoid shared databases — Expose data through dedicated services with REST APIs
  2. Prefer asynchronous communication — Reduces temporal coupling and improves resilience
  3. Use feature flags for gradual rollouts — Enables backward-compatible API evolution
  4. Implement circuit breakers — Prevents cascading failures from dependency issues

For DevOps Teams

  1. Integrate dependency scanning into CI/CD — Catch issues before deployment
  2. Use observability platforms — New Relic, Ortelius, or OpenTelemetry for runtime dependency tracking
  3. Containerize with clear dependency boundaries — Explicit Dockerfile and Kubernetes manifests
  4. Automate dependency updates — But with careful testing to prevent breaking changes

Benchmarks for Testing

The research community has developed several benchmarks for testing dependency-related tools:

BenchmarkMicroservicesPrimary UseLink
Train-Ticket41Latency analysis, fault injectionCode
Online-Boutique11E-commerce microservices demoCode
Hipster-Shop10Network failure testingCode
Sock-Shop14Cloud-native testingCode
AcmeAir5Monolith-to-microservice migrationCode

Open Challenges

Despite significant progress, several challenges remain:

  1. Automated taxonomy application — No tools yet automatically classify dependencies into our taxonomy
  2. Cross-language dependency detection — Most tools focus on single languages (Java dominates)
  3. Runtime vs. design-time gap — Static analysis misses dynamic dependencies; dynamic analysis is resource-intensive
  4. Semantic dependency detection — Understanding functional similarities requires advanced NLP/ML approaches
  5. Quality attribute integration — Connecting dependencies to SLA violations remains manual

Citation

@article{abdelfattah2025multivocal,
  title={Multivocal study on microservice dependencies},
  author={Abdelfattah, Amr S. and Cerny, Tomas and Chy, Md Showkat Hossain
          and Uddin, Md Arfan and Perry, Samantha and Brown, Cameron
          and Goodrich, Lauren and Hurtado, Miguel and Hassan, Muhid
          and Cai, Yuanfang and Kazman, Rick},
  journal={The Journal of Systems and Software},
  volume={222},
  pages={112334},
  year={2025},
  publisher={Elsevier},
  doi={10.1016/j.jss.2025.112334}
}

About This Research

This work was conducted at the University of Arizona in collaboration with the University of Hawaii and Drexel University. Our team combines expertise in software architecture, microservices, and empirical software engineering.

The paper has been published in the Journal of Systems and Software (JSS), a top-tier software engineering journal. The complete replication package including all synthesized studies and extracted data is available on Zenodo.


Appendix: Complete Tool Reference

For practitioners looking for a comprehensive reference, here's the full catalog of dependency management tools organized by category.

Dependency Analysis Tools

ToolDependencies DetectedAnalysisInputSource
ChainsFormerControl Flow, Call-ReturnDynamicTraces
GDC-DVFControl Flow, Call-ReturnBothSource Code, Traces
CMEAData Schema, Control FlowStaticSource Code
MicroQAControl Flow, Sync/AsyncDynamicSource Code, Configs
FSB-RWRankControl Flow, Call-ReturnBothTraces, Runtime Data

Dependency Visualization Tools

ToolVisualization TypeKey FeatureSource
EDM/DDMEndpoint & Data MatricesStatic analysis of Spring Boot apps
uVizMulti-scale views (logical, physical, traces)Flip Zooming for context preservation
ChainDetNetwork traffic patternsReal-time dynamic dependency detection
MCI ToolCoupling metricsRelative dependency measurements

Supporting Frameworks

ResourceTypeDescriptionLink
OpenTelemetryStandardObservability framework for traces, metrics, logsDocs
IstioService MeshTraffic management, security, observabilityDocs
JaegerTracingDistributed tracing platformDocs
ZipkinTracingDistributed tracing systemDocs