Lesson 1: Functions of a Repository Manager
By the end of this thirty minute lesson, you will learn how to:
- Explain the functions of a repository manager.
- Describe the importance of a repository manager in modern software development.
- Determine current and future software supply chain goals and the role that Nexus Repository Manager 3 (NXRM3) will fill in your organization.
In this Lesson:
What is a Repository Manager?
To get started, let's think of a repository manager like you would think of a warehouse for parts. A warehouse serves as a centralized location for storage of parts and manages receiving, sending, and everything in between. Even with Lean business models, there is a need to manage and store parts using a system that is optimized for that purpose.
The warehouse for software parts is called a repository manager. Repository managers play an essential role in any enterprise, or open-source, software development effort allowing you to manage all parts involved in the development process and avoid inefficient practices. Implementing a repository manager allows you to:
- Enable greater collaboration between developers.
- Bring increased build performance due to a wider distribution of software and locally available parts.
- Reduce network bandwidth and dependency on remote repositories.
- Insulate your company from outages in the internet, outages of public repositories (Maven Central, npm, etc.), or even removal of an open source component.
Repository vs. Repository Manager
Next, let’s define the difference between a repository and a repository manager.
A repository is a storage location where components such as packages, libraries, binaries, or containers are retrieved so they can be installed or used (you'll learn more about components in lesson two). In order to ease consumption and usage of open source components, they are aggregated into collections on public repositories, and are typically available on the internet as a service. Examples of such repositories are:
A repository manager is a dedicated server application used to manage all the repositories your development teams use throughout the course of development. At its core, a repository manager does the following:
- Proxies remote repositories and caches contents.
- Hosts internal repositories.
- Groups repositories into a single repository.
Using these core functions, a repository manager becomes the central and authoritative storage platform for all open source and proprietary items produced by your development team. With a repository manager, you can completely control access to, and deployment of, every component in your organization from a single location. It allows you to control what gets into your products from remote sources as well as examine, and keep track of, what's produced by your build systems. A repository manager also allows you to secure a connection to remote repositories, ensuring that your usage is not publicly exposed.
Why do I need a Repository Manager?
Most of today's software is assembled using open source, proprietary, and third party code. Because of this, many organizations rely on repository management to efficiently source, store, share, and deploy software parts. Rather than direct download from public repositories, repeated downloads, or manual distribution, using a repository manager makes it the central access and management point for any component usage in your software development life cycle. This central role makes it easy for everyone in your organization to understand where things are stored.
Using a repository manager allows you to manage parts required for software development, application deployment, and automated hardware provisioning. It also fulfills a central role for application life cycle management. A repository manager greatly simplifies the maintenance of your own internal repositories and access to remote repositories. In addition, integrating a repository manager into your organization lets you accomplish the following:
- Manage binary software code through the software development life cycle.
- Search and browse software components.
- Control code releases with rules and add automated notifications.
- Integrate with external security systems, such as LDAP or Atlassian Crowd.
- View component metadata.
- Host internal items not available in remote repositories.
- Control access by authenticating and authorizing specific sets or groups of users.
Relying on a repository manager lets you gain new visibility into the quality of items flowing through your software supply chains, helping to avoid downstream technical debt and unplanned work.
A repository manager is to components what a warehouse is to parts. It is a dedicated server application used to manage all the repositories your development teams work with. Implementing a repository manager gives you control over access and deployment of every component used in your organization from a single location. The main functions of a repository manager are to proxy remote repositories, host internal repositories, and collect groups of repositories into a single endpoint. A repository manager is an important part of any organization's software development life cycle (SDLC) because it manages software components required for development, deployment, and provisioning.
Activity: Test your Knowledge
- What is a repository manager?
- A place, building, or receptacle where things are stored.
- A storage location where packages are retrieved.
- A dedicated server application used to manage all the repositories your development teams interact with.
- At its core, what are the main functions of a repository manager?
- It proxies remote repositories.
- It hosts internal repositories.
- It groups repositories into a single endpoint.
- All the above.
- How can a repository manager fit into the software development life cycle?
- It manages software components required for development, deployment, and provisioning.
- It reviews code for security vulnerabilities.
- It makes maintenance of internal repositories and access to remote repositories difficult and time consuming.
- A repository manager allows you to completely control access to, and deployment of, every component in your organization from a single location.
- (c.) A dedicated server application used to manage all the repositories your development teams interact with.
- (d.) All the above
- (a.) Manages software components required for development, deployment, and provisioning.
- (a.) True
Activity: Questions for Discussion
Start thinking of answers to the following questions to gain a better understanding of how NXRM 3 will fit into your organization's SDLC. Thinking about these questions now will help you complete the Repository Planning Lab.
- How many employees are in your organization?
- How many employees will be using NXRM 3?
- What continuous integration tools are used?
- What source control management are tools used?
- What build tools are in place?
- How are user accounts/access managed (e.g. crowd, LDAP, etc.)?
Now that you are familiar with the roles and benefits of repository management, it's a good idea to start thinking about what formats you'll be using and the components that will be flowing in and out of the repository manager.