Identify potential application changes needed to support sharding
A lot of GitLab's features relate to a project and ultimately a top-level namespace. As such, their data is nicely contained within a namespace and this seems a good match for a sharded database or if we had a multi-tenancy installation system - the data naturally aligns with namespace boundaries which in turn is a good sharding key.
On the other hand, there are a few features and data unrelated to namespaces or not contained in a single namespace. For example:
- user management
- assignments to users, e.g. for issues
- notifications, todos,
- site-wide search,
- snippets and perhaps others.
This (rough) issue is meant to serve as a discussion point: what application changes would be needed to support a well architected sharding solution.
Edited by Andreas Brandl