Decomposition: Support for many databases
Sub-epic to start to work on common, or core things that we will need to do to have great support within the application to support many databases. These items are worked on by ~"group::sharding" and are often not specific to CI tables. ## Goals: - We can use Omnibus to configure multiple databases for GitLab.com - We can use GitLab charts/CNG to configure multiple databases for GitLab.com - The application can run migrations (normal, post, and background) on many databases - The application can be configured to use multiple databases for a subset of tables ## Objectives with many databases We need to figure out a way to: - support taggings that is not based on `Ci::BaseModel` (as PoC shows) - way, way later, consider a way to switch to Rails 6.1 replicas behavior - figure out a way to validate this behavior on production where we might have `CI cluster` in replication mode, but still write to `master`. So, we need to model a way to feature flag that dynamically to use CI cluster (while performing reads from CI cluster, and writes to Main cluster) or Main cluster ## Iterations 1. We ship transformed `main:` syntax in `config/database.yml` with Omnibus / CNG 1. We ship new `gitlab_ci` schema 1. We ship migration moving CI tables to new `gitlab_ci` schema 1. We ship opt-in to configure `ci:` database in `config/database.yml` with Omnibus / CNG 1. We ship ability for GitLab database load-balancing to support both `main:` and `ci:` database <!-- triage-serverless v3 PLEASE DO NOT REMOVE THIS SECTION --> *This page may contain information related to upcoming products, features and functionality. It is important to note that the information presented is for informational purposes only, so please do not rely on the information for purchasing or planning purposes. Just like with all projects, the items mentioned on the page are subject to change or delay, and the development, release, and timing of any products, features, or functionality remain at the sole discretion of GitLab Inc.* <!-- triage-serverless v3 PLEASE DO NOT REMOVE THIS SECTION -->
epic