Lab: Repository Planning

Learning Objectives

By the end of this thirty minute lab, you will be able to:

  • Map out the roles that Nexus Repository Manager 3 (NXRM3) will fill in your organization.
  • Determine the planning requirements needed for a successful installation and implementation.

In this Lab:

What You've Learned so Far

 

If you've gone through the three lessons in this module, you have taken in a lot of information. We'll quickly go over what you've learned so far:

  • In lesson one you learned that a repository manager is a dedicated server application used to manage all the repositories your development teams interact with. You also learned that repository management is an important part of any organization's software development life cycle because it manages software components required for development, deployment, and provisioning.
  • In lesson two you discovered that formats are archive files that consists of programs and accompanying metadata needed by package managers like npm and YUM, or build tools like Maven. You also learned that a component can be any item like a package, library, binary, or container that is produced or used by your software applications. Finally you learned that components in the repository manager are identified by a specific set of values that varies based on the format.
  • In lesson three you learned that Nexus Repository Manager 3 has three defined repository types: proxy repositories let you connect to remote repositories and cache components, hosted repositories are for housing internal components, and group repositories are used to combine multiple repositories into a single item with one URL for configuration.

All of this information comes together when planning your NXRM3 implementation. Understanding the formats used in your organization and the components housed in those formats directly influences the repository types you'll create in the repository manager. Before completing the checklist or worksheet, take a look at the example use case to get an idea of the benefits realized when installing a repository manager.

Example Use Case - Why do I Need a Repository Manager?

 

The following use case provides an example that highlights the need for a repository manager in your organization. Use this to get an idea of how NXRM3 can be utilized on your team.

Background

You are part of a small team working to apply a DevOps approach to your organization. The development team is primarily JAVA-focused with heavy Maven and Central Repository usage.

Challenge

Currently, developers are downloading the same components over and over again, slowing down production and decreasing build performance.

Solution Develop a proof of concept for a repository manager that helps alleviate slow downloads related to open source component usage. Begin thinking of repository configuration specific to your organization.
Results
  • Centralized management for components means the development team can download all their dependencies from Nexus Repository Manager.
  • Improved software build performance due to faster component download off the local repository manager.
  • Reduced bandwidth usage due to component caching.
  • Higher predictability and scalability due to limited dependency on remote repositories.
  • Increased understanding of component usage due to centralized storage of all used components.
  • Simplified developer configuration due to central access configuration to remote repositories and components on the repository manager.
  • Unified method to provide components to consumers reducing complexity overheads.
  • Improved collaboration due to the simplified exchange of binary components.

Repository Planning Checklist

 

Before installation, it's a good idea to lay out the various ways a repository manager could be used and configured in your organization. Determining the answers to these questions will help plan a successful implementation of Nexus Repository Manager 3.


  • Determine the number of employees using NXRM 3.
    (this will affect permission models)

  • Determine how user accounts are managed in your organization.
    (for example LDAP, Crowd, etc.)

  • Decide the number of NXRM 3 installations needed by your organization.
    (for example, globally dispersed teams will need more than one installation - even if the teams are small)

  • Decide where repositories will be located.
    (location is determined by placement of teams and resources)

  • Determine which source control management tools are used in your organization.
    (for example, GIT, Subversion, etc.)

  • Determine which build tools are used in your organization.
    (for example, Jenkins, Bamboo, etc.)

  • Determine the languages used in your organization.
    (for example Java, Python, JavaScript, etc.)

  • Determine which package formats are used in your organization.
    (for example Maven Central, NuGet, npm, etc.)

  • Determine language and package formats anticipated for future use.
    (will you need access to additional languages or formats for future development?)
  • Determine which public repositories are accessed by your team.
    (for example Maven Central, NuGet, npm, etc.)

  • Determine if your team plans to host components.
    (for example internal components accessed on non-public repositories)

  • Determine if multiple hosted repositories are needed?
    (this is useful when you have multiple teams that don't share all components)

  • Determine the number of applications managed in your organization.
    (the amount of applications used or produced by your development team)

  • Determine the gateway used for external OSS and commercial components.
    (the approach your team uses for open source and proprietary components)

  • Determine the amount and location of storage needed for internal components.
    (for more information, see NXRM3 System Requirements)

  • Determine the amount and location of storage needed for build output.
    (for more information, see NXRM3 System Requirements)


Download the Repository Planning Worksheet

In addition to the checklist, we've provided a repository planning worksheet available for PDF download: