Investigate Object Storage implementations
When we added Object Storage support, the support was added per group of features and team owning the feature itself.
The breadth of this problem became apparent when transferring the feature from EE to CE: https://gitlab.com/gitlab-org/gitlab-ce/issues/40781 . Namely, it was not clear who owns what part and the porting work had to be divided between different teams owning parts of implementation. This also lead to having separate configuration options for what the users should experience as a same thing: https://gitlab.com/gitlab-org/gitlab-ce/issues/49412
To also complicate things further, we have different behaviours between S3 cloud providers that required more work to be executed across workhorse and Rails https://gitlab.com/gitlab-org/gitlab-ce/issues/44142 .
Questions to be answered:
- How much difference is there between implementations of OS support for things like uploads / artifacts?
- What is the impact of these differences?
- How foolproof is the code to changes? ( OS is integral part of our Cloud Native story so any regression will adversely affect installations, including GitLab.com)
- What can be done to consolidate those differences and create a common implementation that can be build on top of?
- How can we consolidate various configuration options to simplify the initial configuration that instance admins need to do?
- How much work is to create test plans for these features and automate them with some QA tests?