Deployment Pattern Library
Nexus Repository is mission-critical infrastructure with the need to balance the availability of the service with the cost of the hardware required to operate. Many Nexus Repository users have deployment teams across the globe, making effective and efficient distribution essential. In evaluating industry struggles and our customers' needs, we've identified three primary concerns that can be addressed with appropriate deployment patterns: resiliency, scalability, and distribution.
Ensure Resiliency
Resiliency refers to the ability to recover from disruptions to critical processes and supporting technology systems. Regardless of your distribution and scalability needs, you must have some level of resiliency for a successful deployment.
Resiliency starts with backup and restore procedures. Use this pattern for every Nexus Repository instance that is a system of record in your deployment.
See the Resiliency documentation for a comprehensive list of failure scenarios and recommendations.
Establish Scalability Needs
Enterprise deployments experience large spikes in requests or require scalability to handle intense workloads. Scalability refers to a deployment's ability to adjust to these flexible, changing demands. These are some ways Nexus Repository can be scaled.
Adding capacity in terms of compute, memory, and faster storage.
Separating distinct workloads such as development, distribution, or ecosystems.
Distributing requests across an HA cluster or independent servers proxying from a central source.
Define Distribution Requirements
A solid Nexus Repository deployment requires establishing both your current and future distribution needs. You can define these by answering a few important questions:
How many Nexus Repository systems of record do you plan to have?
You'll need to decide how many authoritative vs. transient instances you need; this helps determine a base deployment pattern from which to design your full deployment.
A star pattern is a centralized administration with transient servers as local proxies.
A federated deployment will involve distinct regional hubs sharing replicated content.
How much traffic does each system of record need to handle?
When there are very high read traffic on a single system of record consider distributing this traffic to more transient proxy nodes to insolate your development environments.
Do you need on-demand artifact sharing or proactive artifact availability?
Bi-directional proxying allows users to pull artifacts on demand from a distant repository via a proxy repository
Content replication proactively pulls content from a central host repository so content is quickly available on the remote server.
Deployment Patterns
The patterns in this library represent proven ways of deploying Nexus Repository; you likely need to combine multiple patterns to meet your needs.
Resilient/Scalable Patterns
You can combine the patterns in this section with any distribution patterns to add scalability and/or resiliency to your deployment.
Pattern | Needs Addressed | Description |
---|---|---|
Resiliency: Data | Backup/Same-site restore is an essential foundational pattern that involves backing up your Nexus Repository system of record so that you can restore from a point in time if necessary. Use this pattern to protect against data corruption. | |
Resiliency: Data and Region | Adding a disaster recovery (DR) site involves having a cold standby available so that you can spin up a Nexus Repository instance and switch to this site in the event of failure at your primary Nexus Repository system of record. PostgreSQL Recommended | |
Resiliency: Node | Our resiliency patterns make recovery less manual by using an automatic recovery mechanism (e.g., Kubernetes) to accomplish automatic failover if a system of record goes down. PostgreSQL Required | |
Resiliency: Node and Availability Zone | Our resiliency patterns make recovery less manual by using an automatic recovery mechanism (e.g., Kubernetes) to accomplish automatic failover if a system of record goes down. The cloud version of our resiliency pattern also protects against availability zone (AZ) outages. PostgreSQL Required | |
Resiliency Scalability | Advanced high availability (HA) deployment options use multiple active Nexus Repository instances to maximize uptime and minimize data loss in the event of node failure. PostgreSQL Required | |
Resiliency Scalability | Advanced HA deployment options use multiple active Nexus Repository instances to maximize uptime and minimize data loss in the event of node failure. PostgreSQL Required |
Base Distribution Patterns
Pattern | Needs Addressed | Description |
---|---|---|
Star Pattern (aka hub-and-spoke pattern) | Distribution: Single system of record | The star pattern is a base pattern that uses the scaling with proxies pattern to add more transient satellites to a single system of record. |
Distribution: Multiple systems of record | Federated repositories involve multiple systems of record that also use the bi-directional proxy pattern and/or content replication pattern to distribute artifacts between them. |
Extensions to Base Distribution Patterns
Extension Pattern | Builds Off Of | Needs Addressed | Description |
---|---|---|---|
Scalability | Scaling with proxy nodes allows you to take read load off of a primary Nexus Repository system of record (node) by using proxy nodes with a load balancer to split read traffic. | ||
On-Demand Distribution | Bi-directional proxying provides on-demand distribution by having writes published to a hosted repository in a given region. Then, when a team in another region needs those components, they request them via a proxy repository in their region. The proxy then pulls those requested components from the hosted repository in the first region. | ||
Proactive Distribution | Content Replication allows teams to publish artifacts to a hosted repository in a Nexus Repository system of record. Then, a proxy repository in another Nexus Repository instance pre-emptively fetches these artifacts via HTTP to provide faster artifact availability across distributed teams. PostgreSQL Required |
Example Combination Patterns
The examples below combine some of the patterns described above to meet multiple needs.
Combination Pattern | Needs Addressed | Description |
---|---|---|
Combination Active/Active High Availability + Disaster Recovery Site | Resiliency Scalability | This pattern provides two layers of resiliency. It uses active/active HA to protect against node or AZ outages and a DR site to protect against a regional outage. PostgreSQL Required |
Combination Active/Active High Availability + Disaster Recovery Site + Federated Repositories | Resiliency Scalability Distribution | This pattern is the same as the Active/Active HA + DR Site combo described above but adds a layer of redundancy by using federated repositories to distribute artifacts between two regions. PostgreSQL Required |