Dependency
Management
at Scale
October 3, 2020
Roberto Pérez Alcolea
Senior Software Engineer @ Netflix
Productivity Engineering
rperezalcolea@netflix.com
@rpalcolea
DEPENDENCY MANAGEMENT
AT SCALE
•Many repositories (~3k)
•Binary integration (JARs)
•Microservices with fat
clients
•Hundreds of engineers
DEPENDENCY MANAGEMENT
AT SCALE
Context
DEPENDENCY MANAGEMENT
AT SCALE
Builds per week: local + CI
Common problems in
dependency management
Adding or upgrading a
dependency causes:
•NoSuchMethodError
•NoSuchFieldError
•NoClassDefFoundError
•error: cannot find symbol
DEPENDENCY MANAGEMENT
AT SCALE
Unaligned
dependencies
Transitive dependency bumps a
single module but not the whole
family
DEPENDENCY MANAGEMENT
AT SCALE
Picking up
dependencies with
bugs or security
vulnerabilities
DEPENDENCY MANAGEMENT
AT SCALE
DEPENDENCY MANAGEMENT
AT SCALE
Publishers lack
visibility
• Who will I break?
• Who is consuming my library?
• Who is using this API that I want to
change?
DEPENDENCY MANAGEMENT
AT SCALE
Semantic versioning
is not enough
• Which version should I use?
• Pinning versions is technical debt
DEPENDENCY MANAGEMENT
AT SCALE
Java version is not
compatible
What can publishers do to
alleviate pain?
DEPENDENCY MANAGEMENT
AT SCALE
Publish a BOM for
family of modules
•A BOM enables consumers of a
library to select consistent versions
for artifacts included in that library.
•Examples:
‣ jackson-bom
‣ spring-boot-dependencies
•Gradle Java Platform Plugin
•When making a breaking change:
‣If the new library surface is delivered under a new Java package, you
could use a new artifact ID.
‣If the breaking change is made in-place and the Java package is kept
the same, use the same artifact ID.
•Avoid colliding classes (same package/class under multiple artifactId)
DEPENDENCY MANAGEMENT
AT SCALE
Rename artifacts and packages
together
•Do not upgrade JDK version in
your library if you have
consumers in older versions
•Alternatives
‣Multi Release Jars
‣Separate JARs: Variant
awareness with Gradle
More: Multi-release JARs - Good
or bad idea?
DEPENDENCY MANAGEMENT
AT SCALE
Support the minimum Java
version of your consumers
•Shading is a process where a
dependency is relocated to a
different Java package and copied
into the same jar as the code that
relies on that dependency.
DEPENDENCY MANAGEMENT
AT SCALE
Last resource…
shading
Improving consumer
experience with Nebula
This plugin provides general
purpose rule types on top of
Gradle resolution strategies and
module metadata, allowing
rules to be published,
versioned, shared between
projects, and optionally
dependency locked.
•Duplicate classes caused by
changes to group or artifact ids,
without renaming packages
•Duplicate classes caused by
bundle dependencies, which do not
conflict resolve against the 'regular'
dependencies for that library
•Lack of version alignment between
libraries, where version alignment
is needed for compatibility
•Ensuring a minimum version of a
library
Resolution Rules Plugin
DEPENDENCY MANAGEMENT
AT SCALE
Resolution Rules Plugin
https://github.com/rpalcolea/dependency-management-at-scale-jconf-mexico/tree/resolution-rules-usage
https://github.com/nebula-plugins/gradle-resolution-rules-plugin
https://github.com/nebula-plugins/gradle-resolution-rules
DEPENDENCY MANAGEMENT
AT SCALE
Dependency locking
https://github.com/rpalcolea/dependency-management-at-scale-jconf-mexico/tree/dependency-locks
DEPENDENCY MANAGEMENT
AT SCALE
Lint Plugin
https://github.com/rpalcolea/dependency-management-at-scale-jconf-mexico/tree/lint-unused-dependencies
https://github.com/nebula-plugins/gradle-lint-plugin
https://github.com/rpalcolea/dependency-management-at-scale-jconf-mexico/tree/lint-undeclared-dependencies
DEPENDENCY MANAGEMENT
AT SCALE
How do I know who uses
my library?
•Collection of services and UIs
that enable artifact observability
and the ability to effect change
in the Netflix ecosystem.
•High level goal is to decrease
time and effort needed to
propagate change through the
Netflix ecosystem
•Useful for Library deprecation
and Security Vulnerabilities
Astrid
DEPENDENCY MANAGEMENT
AT SCALE
Astrid - Artifact Management
DEPENDENCY MANAGEMENT
AT SCALE
Astrid - Artifact Management
DEPENDENCY MANAGEMENT
AT SCALE
Astrid - Campaigns
DEPENDENCY MANAGEMENT
AT SCALE
What about security
vulnerabilities?
CVE + Astrid +
Nebula
DEPENDENCY MANAGEMENT
AT SCALE
Practical Approach to Automate the Discovery & Eradication of
Open-Source Software Vulnerabilities
Aladdin Almubayed | 2019
What else can we do?
•Distributed Refactoring
•Managed Source: automatic
PRs for dependency locks,
nebula wrapper and lint rules
updates.
What else can we do?
Evolving Continuous Integration at Netflix
(Elise McCallum) | 2019
DEPENDENCY MANAGEMENT
AT SCALE
Something we tried…
•When a new version of a library
is published, build all the
consumers
•Lack of testing in projects didn’t
provide enough confidence for
this model
Publisher Feedback
DEPENDENCY MANAGEMENT
AT SCALE
Gradle Summit - Netflix | Dependencies,
Distributed Code and Engineering Velocity -
Mike McGarr | 2017
Last thoughts…
•Dependency management is
hard
•Dependency hell is inevitable,
let’s try to reduce the pain
•Build often, release often. Avoid
conflict resolution by limiting
version skew
•Producers and consumers play
an important role
DEPENDENCY MANAGEMENT
AT SCALE
Thank

You.
Q&A
rperezalcolea@netflix.com
@rpalcolea
https://github.com/rpalcolea

More Related Content

PDF
Leveraging Gradle @ Netflix (Guadalajara JUG Feb 25, 2021)
PDF
Leveraging Gradle @ Netflix (Madrid GUG Feb 2, 2021)
PDF
BOMs Away - Why everyone needs a BOM (AppSec Cali 2019)
PPTX
Dependency-Check Ecosystem - OWASP Summit 2017
PDF
Reactive Programming in Spring 5
PDF
Leveraging Feature Toggles for your Microservices (VoxxeddaysMicroservices Pa...
PPTX
Developing for the Atlassian Ecosystem
PPTX
Dependency track v3.3 - What's New
Leveraging Gradle @ Netflix (Guadalajara JUG Feb 25, 2021)
Leveraging Gradle @ Netflix (Madrid GUG Feb 2, 2021)
BOMs Away - Why everyone needs a BOM (AppSec Cali 2019)
Dependency-Check Ecosystem - OWASP Summit 2017
Reactive Programming in Spring 5
Leveraging Feature Toggles for your Microservices (VoxxeddaysMicroservices Pa...
Developing for the Atlassian Ecosystem
Dependency track v3.3 - What's New

What's hot (6)

PPTX
Taking Database Development to the 21st Century
PPTX
DBmaestro's State of the Database Continuous Delivery Survey- Findings Revealed
PPTX
In (database) automation we trust
PPTX
Why retail companies can't afford database downtime
PPTX
Continuous Delivery & the Database - the Final Frontier
PPTX
Continuous Delivery & the Database- The Final Frontier
Taking Database Development to the 21st Century
DBmaestro's State of the Database Continuous Delivery Survey- Findings Revealed
In (database) automation we trust
Why retail companies can't afford database downtime
Continuous Delivery & the Database - the Final Frontier
Continuous Delivery & the Database- The Final Frontier
Ad

Similar to Dependency Management at Scale (20)

PDF
Dependency Management at Scale @ JConf Centroamérica 2020
PDF
Escaping Dependency Hell: A deep dive into Gradle's dependency management fea...
PDF
Managing dependencies with gradle
PDF
Keeping your build tool updated in a multi repository world
PDF
Repository Management with JFrog Artifactory
PDF
Fasten Industry Meeting with GitHub about Dependancy Management
PPTX
How maven makes your development group look like a bunch of professionals.
KEY
4 maven junit
PDF
Dependency Management in a Complex World (JConf Chicago 2022)
PDF
Protecting your organization against attacks via the build system
PDF
Enforce reproducibility: dependency management and build automation
PDF
PDF
PPTX
Apache maven and its impact on java 9 (Java One 2017)
PDF
{py}gradle
PDF
Dependencies, dependencies, dependencies
PPTX
Introduction to the Nexus tool for DevOps
PDF
Apache Maven - eXo TN presentation
PDF
Dependency management: the cause of—and solution to—all supply chain problems
PDF
Maven 3 Overview
Dependency Management at Scale @ JConf Centroamérica 2020
Escaping Dependency Hell: A deep dive into Gradle's dependency management fea...
Managing dependencies with gradle
Keeping your build tool updated in a multi repository world
Repository Management with JFrog Artifactory
Fasten Industry Meeting with GitHub about Dependancy Management
How maven makes your development group look like a bunch of professionals.
4 maven junit
Dependency Management in a Complex World (JConf Chicago 2022)
Protecting your organization against attacks via the build system
Enforce reproducibility: dependency management and build automation
Apache maven and its impact on java 9 (Java One 2017)
{py}gradle
Dependencies, dependencies, dependencies
Introduction to the Nexus tool for DevOps
Apache Maven - eXo TN presentation
Dependency management: the cause of—and solution to—all supply chain problems
Maven 3 Overview
Ad

Recently uploaded (20)

PDF
Website Design Services for Small Businesses.pdf
PPTX
Advanced SystemCare Ultimate Crack + Portable (2025)
PPTX
Computer Software and OS of computer science of grade 11.pptx
PDF
How AI/LLM recommend to you ? GDG meetup 16 Aug by Fariman Guliev
PDF
Autodesk AutoCAD Crack Free Download 2025
PDF
Multiverse AI Review 2025: Access All TOP AI Model-Versions!
PDF
DNT Brochure 2025 – ISV Solutions @ D365
PPTX
Introduction to Windows Operating System
PDF
AI/ML Infra Meetup | LLM Agents and Implementation Challenges
PDF
The Dynamic Duo Transforming Financial Accounting Systems Through Modern Expe...
PDF
Wondershare Recoverit Full Crack New Version (Latest 2025)
PPTX
Patient Appointment Booking in Odoo with online payment
PPTX
Oracle Fusion HCM Cloud Demo for Beginners
PDF
EaseUS PDF Editor Pro 6.2.0.2 Crack with License Key 2025
PDF
Designing Intelligence for the Shop Floor.pdf
PDF
Salesforce Agentforce AI Implementation.pdf
PPTX
GSA Content Generator Crack (2025 Latest)
PDF
How to Make Money in the Metaverse_ Top Strategies for Beginners.pdf
PDF
Top 10 Software Development Trends to Watch in 2025 🚀.pdf
PDF
How Tridens DevSecOps Ensures Compliance, Security, and Agility
Website Design Services for Small Businesses.pdf
Advanced SystemCare Ultimate Crack + Portable (2025)
Computer Software and OS of computer science of grade 11.pptx
How AI/LLM recommend to you ? GDG meetup 16 Aug by Fariman Guliev
Autodesk AutoCAD Crack Free Download 2025
Multiverse AI Review 2025: Access All TOP AI Model-Versions!
DNT Brochure 2025 – ISV Solutions @ D365
Introduction to Windows Operating System
AI/ML Infra Meetup | LLM Agents and Implementation Challenges
The Dynamic Duo Transforming Financial Accounting Systems Through Modern Expe...
Wondershare Recoverit Full Crack New Version (Latest 2025)
Patient Appointment Booking in Odoo with online payment
Oracle Fusion HCM Cloud Demo for Beginners
EaseUS PDF Editor Pro 6.2.0.2 Crack with License Key 2025
Designing Intelligence for the Shop Floor.pdf
Salesforce Agentforce AI Implementation.pdf
GSA Content Generator Crack (2025 Latest)
How to Make Money in the Metaverse_ Top Strategies for Beginners.pdf
Top 10 Software Development Trends to Watch in 2025 🚀.pdf
How Tridens DevSecOps Ensures Compliance, Security, and Agility

Dependency Management at Scale