1- What is Dependency Management?

  • Modern software is complex
  • Component based development is common
  • Not all software is written by a single team
  • Dependencies on components created by other teams or persons

1.1- Elements of a Dependency Management Strategy:

1

 

1.2- Find components and source code that can have independent:

  • Deployment
  • Release
  • Versioning


1.3- Source and Package Componentization.

1.4- Decompose Your System:

1

 

1.5- Scanning your codebase for dependencies:

  • Duplicate code
  • High cohesion and low coupling
  • Individual lifecycle
  • Stable parts
  • Independent code and components

2- What is a Package?

2.1- Types of Packages:

1

 

2.2- Package Feed Managers:

  • Manage feeds
  • Search and list packages from feed
  • Consume packages
  • Maintain local installation cache
  • Publish packages
  • Choose tooling


2.3- Package Sources: Public and Private

2.4- Common public package sources:

 

2.5- Self-Hosted and SaaS based package sources:

Package type Self-hosted private feed SaaS private feed
NuGet NuGet server Azure Artifacts, MyGet
NPM Sinopia, cnpmjs.org, Verdaccio NPMjs.org, MyGet, Azure Artifacts
Maven Nexus, Artifactory, Archiva Azure Artifacts, Bintray, JitPack
Docker Portus, Quay, Harbor Docker Hub, Azure Container Registry, Amazon Elastic Container Registry
Python PyPI Server Azure Artifacts, Gemfury


2.6- Consuming Packages:

  • Upstream Sources
  • Package Graph

 

2.7- Azure Artifacts:
Create private and public package feeds for package types:

  • NuGet
  • NPM
  • Maven
  • Universal
  • Python

2.8- Publishing packages:

1