Use object storage acceleration for NPM package file uploads

Summary

The NPM repository does not use object storage acceleration to upload it's packages. It is using CarrierWave. NPM was implemented before object storage acceleration, so this is a ~"technical debt" ~performance improvement for NPM.

Improvements

Object storage acceleration was implemented to improve the file upload process and performance, especially with larger files. All package systems should be implemented using object storage acceleration for uploads.

Risks

Pre-existing packages should still be accessible or migrated to the new storage system, this may take some research to understand if and how this should happen.

Involved components

ee/app/services/packages/create_npm_package_service.rb and the surrounding components will be affected.

An additional route will need to be added to gitlab-workhorse to intercept the upload requests.

Additional test coverage

Workhorse specific tests should be added using the WorkhorseHelpers module.

Edited Nov 13, 2019 by Steve Abrams
Assignee Loading
Time tracking Loading