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.