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