Beta: npm Virtual Registry
## Overview
This epic covers the implementation of the npm virtual registry feature in GitLab, building on our successful Maven virtual registry implementation. The npm virtual registry will leverage our existing virtual registry architecture to provide a complete solution with multiple upstream sources, UI management, and cache clearing capabilities. The beta phase will focus on validating performance and reliability with real-world npm usage patterns.
#### Customer Impact
- **High-Value Target**: This feature directly addresses requests from enterprise customers
- **Migration Enabler**: Critical functionality for customers looking to migrate from JFrog Artifactory to GitLab
- **Development Acceleration**: Streamlines JavaScript/Node.js development workflows by providing a single source of truth for dependencies
- **Validation Opportunity**: Beta provides structured performance and reliability testing with high-volume npm usage patterns
## Goals
- Beta implementation of an npm virtual registry with full feature parity to our Maven virtual registry
- Provide comprehensive UI and API interfaces for creating, configuring, and managing npm virtual registries
- Ensure seamless package resolution and proxying from multiple upstream sources
- Validate performance and reliability with real-world usage patterns
## Scope
### In Scope
- Create an npm virtual registry with multiple upstream sources
- Configure and manage shareable upstream configurations
- Full UI integration for registry management
- List and search virtual registries
- Deleting a virtual registry
- Package resolution and proxying from configured upstreams
- Cache clearing capabilities
- Comprehensive error handling and logging
- Performance monitoring and optimization
### Out of Scope
- Package publishing to virtual registries (planned for post-beta)
- Advanced caching policies beyond those already implemented for Maven
## User Stories
1. As a DevOps engineer, I want to create an npm virtual registry via UI and API so that I can start aggregating packages from multiple upstream sources.
2. As a developer, I want to configure multiple upstream sources for my virtual registry so that I can specify the order and priority of package resolution.
3. As a project maintainer, I want to share upstream configurations across multiple registries so that I can ensure consistency and reduce configuration overhead.
4. As a system administrator, I want to clear the cache for specific packages or entire registries so that I can ensure my teams have access to the latest versions.
5. As a developer, I want to resolve and download npm packages through the virtual registry so that I can use it as a single source for my project dependencies.
6. As an administrator, I want to monitor the performance and usage of my npm virtual registries so that I can optimize them for my organization's needs.
## Acceptance Criteria
- UI and API interfaces are fully implemented and functional
- Virtual registries correctly proxy packages from multiple configured upstreams
- Shareable upstream configurations work correctly across registries
- Cache clearing functions operate as expected
- Error scenarios are properly handled and logged
- Documentation clearly explains all features and configuration options
- Performance meets established benchmarks for high-volume npm usage
- Test coverage meets GitLab standards
## Metrics for Success
- Successful creation and configuration of registries via UI and API
- Correct package resolution and download through virtual registries
- Response times within acceptable thresholds under load
- Error rates below defined thresholds
- Cache hit ratios meeting or exceeding targets
- Positive feedback from beta customers regarding usability and reliability
## Beta Customer Engagement Plan
- **Recruitment**: Target 5-10 key customers with high npm usage for beta participation
- **Onboarding**: Provide detailed documentation and dedicated support for initial setup
- **Feedback Collection**:
* Bi-weekly check-ins with beta participants
* Structured feedback form for feature usability and performance
* Bug reporting channel for immediate technical issues
- **Success Tracking**:
* Monitor usage metrics across beta participants
* Track package resolution success rates and performance
* Document customer use cases for future marketing materials
- **Graduation Criteria**:
* Zero P1 bugs reported for two consecutive weeks
* Performance metrics meeting or exceeding targets
* 80%+ of beta participants actively using the feature
epic