--- type: reference, concepts stage: Enablement group: Distribution info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments --- # Reference architectures **(FREE SELF)** You can set up GitLab on a single server or scale it up to serve many users. This page details the recommended Reference Architectures that were built and verified by the GitLab Quality and Support teams. Below is a chart representing each architecture tier and the number of users they can handle. As your number of users grow with time, it's recommended that you scale GitLab accordingly. ![Reference Architectures](img/reference-architectures.png) Testing on these reference architectures was performed with the [GitLab Performance Tool](https://gitlab.com/gitlab-org/quality/performance) at specific coded workloads, and the throughputs used for testing were calculated based on sample customer data. Select the [reference architecture](#available-reference-architectures) that matches your scale. Each endpoint type is tested with the following number of requests per second (RPS) per 1,000 users: - API: 20 RPS - Web: 2 RPS - Git (Pull): 2 RPS - Git (Push): 0.4 RPS (rounded to nearest integer) For GitLab instances with less than 2,000 users, it's recommended that you use the [default setup](#automated-backups) by [installing GitLab](../../install/index.md) on a single machine to minimize maintenance and resource costs. If your organization has more than 2,000 users, the recommendation is to scale the GitLab components to multiple machine nodes. The machine nodes are grouped by components. The addition of these nodes increases the performance and scalability of to your GitLab instance. When scaling GitLab, there are several factors to consider: - Multiple application nodes to handle frontend traffic. - A load balancer is added in front to distribute traffic across the application nodes. - The application nodes connects to a shared file server and PostgreSQL and Redis services on the backend. NOTE: Depending on your workflow, the following recommended reference architectures may need to be adapted accordingly. Your workload is influenced by factors including how active your users are, how much automation you use, mirroring, and repository/change size. Additionally the displayed memory values are provided by [GCP machine types](https://cloud.google.com/compute/docs/machine-types). For different cloud vendors, attempt to select options that best match the provided architecture. ## Available reference architectures The following reference architectures are available. ### GitLab package (Omnibus) - [Up to 1,000 users](1k_users.md) - [Up to 2,000 users](2k_users.md) - [Up to 3,000 users](3k_users.md) - [Up to 5,000 users](5k_users.md) - [Up to 10,000 users](10k_users.md) - [Up to 25,000 users](25k_users.md) - [Up to 50,000 users](50k_users.md) ### Cloud native hybrid The following Cloud Native Hybrid reference architectures, where select recommended components can be run in Kubernetes, are available: - [Up to 2,000 users](2k_users.md#cloud-native-hybrid-reference-architecture-with-helm-charts-alternative) - [Up to 3,000 users](3k_users.md#cloud-native-hybrid-reference-architecture-with-helm-charts-alternative) - [Up to 5,000 users](5k_users.md#cloud-native-hybrid-reference-architecture-with-helm-charts-alternative) - [Up to 10,000 users](10k_users.md#cloud-native-hybrid-reference-architecture-with-helm-charts-alternative) - [Up to 25,000 users](25k_users.md#cloud-native-hybrid-reference-architecture-with-helm-charts-alternative) - [Up to 50,000 users](50k_users.md#cloud-native-hybrid-reference-architecture-with-helm-charts-alternative) A GitLab [Premium or Ultimate](https://about.gitlab.com/pricing/#self-managed) license is required to get assistance from Support with troubleshooting the [2,000 users](2k_users.md) and higher reference architectures. [Read more about our definition of scaled architectures](https://about.gitlab.com/support/#definition-of-scaled-architecture). ### Validation and test results The [Quality Engineering - Enablement team](https://about.gitlab.com/handbook/engineering/quality/quality-engineering/) does regular smoke and performance tests for the reference architectures to ensure they remain compliant. - Testing occurs against all reference architectures and cloud providers in an automated and ad-hoc fashion. This is done by two tools: - The [GitLab Environment Toolkit](https://gitlab.com/gitlab-org/gitlab-environment-toolkit) for building the environments. - The [GitLab Performance Tool](https://gitlab.com/gitlab-org/quality/performance) for performance testing. - Network latency on the test environments between components on all Cloud Providers were measured at <5ms. Note that this is shared as an observation and not as an implicit recommendation. - We aim to have a "test smart" approach where architectures tested have a good range that can also apply to others. Testing focuses on 10k Omnibus on GCP as the testing has shown this is a good bellwether for the other architectures and cloud providers as well as Cloud Native Hybrids. - Testing is done publicly and all results are shared. - For more information about performance testing at GitLab, read [how our QA team leverages GitLab’s performance testing tool (and you can too)](https://about.gitlab.com/blog/2020/02/18/how-were-building-up-performance-testing-of-gitlab/). The following table details the testing done against the reference architectures along with the frequency and results. Additional testing is continuously evaluated, and the table is updated accordingly.
Reference Architecture |
GCP (* also proxy for Bare-Metal) | AWS | Azure | |||
---|---|---|---|---|---|---|
Omnibus | Cloud Native Hybrid | Omnibus | Cloud Native Hybrid | Omnibus | Cloud Native Hybrid | |
1k | Daily (to be moved to Weekly) | |||||
2k | Daily (to be moved to Weekly) | |||||
3k | Weekly | |||||
5k | Weekly | |||||
10k | Daily | Ad-Hoc | Ad-Hoc (inc Cloud Services) | Ad-Hoc | Ad-Hoc | |
25k | Weekly | Ad-Hoc | ||||
50k | Weekly | Ad-Hoc (inc Cloud Services) |
Reference Architecture |
GCP | AWS | Azure | |||
---|---|---|---|---|---|---|
Omnibus | Cloud Native Hybrid | Omnibus | Cloud Native Hybrid | Omnibus | Cloud Native Hybrid | |
1k | Calculated cost | |||||
2k | Calculated cost | |||||
3k | Calculated cost | |||||
5k | Calculated cost | |||||
10k | Calculated cost | |||||
25k | Calculated cost | |||||
50k | Calculated cost |