From a6f3c9bbcdf62272108cb8731e279caf44000231 Mon Sep 17 00:00:00 2001 From: Grant Young Date: Tue, 14 Dec 2021 11:28:58 +0000 Subject: [PATCH 1/8] Add testing and cost notes to Ref Arch docs --- .../reference_architectures/10k_users.md | 30 ++++++++++++++++--- .../reference_architectures/index.md | 28 +++++++++++++++++ 2 files changed, 54 insertions(+), 4 deletions(-) diff --git a/doc/administration/reference_architectures/10k_users.md b/doc/administration/reference_architectures/10k_users.md index 120874131f1602..272c7ef6a5e226 100644 --- a/doc/administration/reference_architectures/10k_users.md +++ b/doc/administration/reference_architectures/10k_users.md @@ -12,6 +12,7 @@ full list of reference architectures, see > - **Supported users (approximate):** 10,000 > - **High Availability:** Yes ([Praefect](#configure-praefect-postgresql) needs a third-party PostgreSQL solution for HA) +> - **Estimated Costs:** [GCP](https://cloud.google.com/products/calculator#id=e77713f6-dc0b-4bb3-bcef-cea904ac8efd) > - **Cloud Native Hybrid Alternative:** [Yes](#cloud-native-hybrid-reference-architecture-with-helm-charts-alternative) > - **Performance tested daily with the [GitLab Performance Tool](https://gitlab.com/gitlab-org/quality/performance)**: > - **Test requests per second (RPS) rates:** API: 200 RPS, Web: 20 RPS, Git (Pull): 20 RPS, Git (Push): 4 RPS @@ -133,6 +134,12 @@ monitor .[#7FFFD4,norank]u--> elb @enduml ``` +## Requirements + +Before proceeding you should take note of the following requirements / guidance for the Reference Architecture: + +### Supported CPUs + The Google Cloud Platform (GCP) architectures were built and tested using the [Intel Xeon E5 v3 (Haswell)](https://cloud.google.com/compute/docs/cpu-platforms) CPU platform. On different hardware you may find that adjustments, either lower @@ -140,11 +147,26 @@ or higher, are required for your CPU or node counts. For more information, see our [Sysbench](https://github.com/akopytov/sysbench)-based [CPU benchmarks](https://gitlab.com/gitlab-org/quality/performance/-/wikis/Reference-Architectures/GCP-CPU-Benchmarks). -Due to better performance and availability, for data objects (such as LFS, -uploads, or artifacts), using an [object storage service](#configure-the-object-storage) -is recommended. +### Supported Infrastructure + +As a general guidance GitLab should run on most Infrastructure such as reputable Cloud Providers (AWS, GCP, Azure) and their services or self managed (ESXi) that meet both the specs detailed above as well as any requirements in this section although this does not constitute a guarantee for every potential permutation. + +However please be aware of the following specific call outs: + +- [Azure Database for PostgreSQL](https://docs.microsoft.com/en-us/azure/postgresql/#:~:text=Azure%20Database%20for%20PostgreSQL%20is,high%20availability%2C%20and%20dynamic%20scalability.) is [not recommended](https://gitlab.com/gitlab-org/quality/reference-architectures/-/issues/61) due to known performance issues / missing features. +- [Azure Blob Storage](https://docs.microsoft.com/en-us/azure/storage/blobs/) is recommended to be configured with [Premium accounts](https://docs.microsoft.com/en-us/azure/storage/blobs/storage-blob-block-blob-premium) to ensure consistent performance. + +### Network Latency + +The Architecture has been designed for and [tested](index.md#testing-process) in an optimal network setup. + +Network latency should be kept to a strict minimum between components to allow for synchronous replication. + +As a general guidance the architectures have been tested on main Cloud Providers all with a latency of <**5ms** between their components. As such, a consistent latency higher than this is not recommended. Note that this only applies for network latency between the components in an Architecture (e.g. Rails to Redis), this guidance doesn't apply for other setups such as Geo. + +### Praefect PostgreSQL -It's also worth noting that at this time [Praefect requires its own database server](../gitaly/praefect.md#postgresql) and +It's worth noting that at this time [Praefect requires its own database server](../gitaly/praefect.md#postgresql) and that to achieve full High Availability a third-party PostgreSQL database solution will be required. We hope to offer a built in solutions for these restrictions in the future but in the meantime a non HA PostgreSQL server can be set up via Omnibus GitLab, which the above specs reflect. Refer to the following issues for more information: [`omnibus-gitlab#5919`](https://gitlab.com/gitlab-org/omnibus-gitlab/-/issues/5919) & [`gitaly#3398`](https://gitlab.com/gitlab-org/gitaly/-/issues/3398) diff --git a/doc/administration/reference_architectures/index.md b/doc/administration/reference_architectures/index.md index 4d95a61176ba70..b9a9c0a4ac9432 100644 --- a/doc/administration/reference_architectures/index.md +++ b/doc/administration/reference_architectures/index.md @@ -191,3 +191,31 @@ The reference architectures for user counts [3,000](3k_users.md) and up support In the specific case you have the requirement to achieve HA but have a lower user count, select modifications to the [3,000 user](3k_users.md) architecture are supported. For more details, [refer to this section in the architecture's documentation](3k_users.md#supported-modifications-for-lower-user-counts-ha). + +## Testing Process & Results + +The [Quality Engineering - Enablement team](https://about.gitlab.com/handbook/engineering/quality/quality-engineering/) regularly smoke / performance test the Reference Architectures to ensure they remain compliant. + +In this section we detail some of the process as well as the results. + +Firstly please note the following about the testing process: + +- Testing occurs against all main Reference Architectures and Cloud Providers in an automated and ad hoc fashion. +- This is achieved through two tools built by the team - The [GitLab Environment Toolkit](https://gitlab.com/gitlab-org/quality/gitlab-environment-toolkit) for building the environments and the [GitLab Performance Tool](https://gitlab.com/gitlab-org/quality/performance) for performance testing. +- We aim to have a "test smart" approach where architectures tested haven 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 / Cloud Providers as well as Cloud Native Hybrids. +- Testing is done publicly and all results are shared + +Next, the following table details the testing done currently against the Reference Architectures along with the frequency and results: + +| Reference Architecture Size | GCP | AWS | Azure | +|-----------------------------|-----------------------------------------------------------------------------------------------------|-----|-------| +| 1k | [Omnibus - Daily](https://gitlab.com/gitlab-org/quality/performance/-/wikis/Benchmarks/Latest/1k) | - | - | +| 2k | [Omnibus - Daily](https://gitlab.com/gitlab-org/quality/performance/-/wikis/Benchmarks/Latest/2k) | - | - | +| 3k | [Omnibus - Weekly](https://gitlab.com/gitlab-org/quality/performance/-/wikis/Benchmarks/Latest/3k) | - | - | +| 5k | [Omnibus - Weekly](https://gitlab.com/gitlab-org/quality/performance/-/wikis/Benchmarks/Latest/5k) | - | - | +| 10k | [Omnibus - Daily](https://gitlab.com/gitlab-org/quality/performance/-/wikis/Benchmarks/Latest/10k)
[Omnibus (inc Cloud Services) - Ad-Hoc](https://gitlab.com/gitlab-org/quality/performance/-/wikis/Past-Results/10k)
[Cloud Native Hybrid - Ad-Hoc](https://gitlab.com/gitlab-org/quality/performance/-/wikis/Past-Results/10k-Cloud-Native-Hybrid) | [Omnibus (inc Cloud Services) - Ad-Hoc](https://gitlab.com/gitlab-org/quality/performance/-/wikis/Past-Results/10k) | [Omnibus - Ad-Hoc](https://gitlab.com/gitlab-org/quality/performance/-/wikis/Past-Results/10k) | +| 25k | [Omnibus - Weekly](https://gitlab.com/gitlab-org/quality/performance/-/wikis/Benchmarks/Latest/25k) | - | [Omnibus - Ad-Hoc](https://gitlab.com/gitlab-org/quality/performance/-/wikis/Past-Results/25k) | +| 50k | [Omnibus - Weekly](https://gitlab.com/gitlab-org/quality/performance/-/wikis/Benchmarks/Latest/50k) | [Omnibus (inc Cloud Services) - Ad-Hoc](https://gitlab.com/gitlab-org/quality/performance/-/wikis/Past-Results/50k) | - | + +NOTE: +Testing is continuously evaluated and iterated on. As this occurs ths above table will be updated. -- GitLab From d2d4c506b035680455b9b219c344ef520661b49d Mon Sep 17 00:00:00 2001 From: Grant Young Date: Tue, 14 Dec 2021 11:46:31 +0000 Subject: [PATCH 2/8] Add requirements for all sizes --- .../reference_architectures/10k_users.md | 8 ++-- .../reference_architectures/1k_users.md | 27 +++++++++++- .../reference_architectures/25k_users.md | 33 ++++++++++++--- .../reference_architectures/2k_users.md | 28 ++++++++++--- .../reference_architectures/3k_users.md | 41 +++++++++++++------ .../reference_architectures/50k_users.md | 33 ++++++++++++--- .../reference_architectures/5k_users.md | 34 +++++++++++---- .../reference_architectures/index.md | 4 +- 8 files changed, 164 insertions(+), 44 deletions(-) diff --git a/doc/administration/reference_architectures/10k_users.md b/doc/administration/reference_architectures/10k_users.md index e2b99d371c479d..37af805082c26b 100644 --- a/doc/administration/reference_architectures/10k_users.md +++ b/doc/administration/reference_architectures/10k_users.md @@ -136,11 +136,11 @@ monitor .[#7FFFD4,norank]u--> elb ## Requirements -Before proceeding you should take note of the following requirements / guidance for the Reference Architecture: +Before starting you should take note of the following requirements / guidance for the Reference Architecture: ### Supported CPUs -The Google Cloud Platform (GCP) architectures were built and tested using the +The Reference Architecture was built and tested on Google Cloud Platform (GCP) using the [Intel Xeon E5 v3 (Haswell)](https://cloud.google.com/compute/docs/cpu-platforms) CPU platform. On different hardware you may find that adjustments, either lower or higher, are required for your CPU or node counts. For more information, see @@ -158,7 +158,7 @@ However please be aware of the following specific call outs: ### Network Latency -The Architecture has been designed for and [tested](index.md#testing-process) in an optimal network setup. +The Architecture has been designed for and [tested](index.md#testing-process-results) in an optimal network setup. Network latency should be kept to a strict minimum between components to allow for synchronous replication. @@ -169,7 +169,7 @@ As a general guidance the architectures have been tested on main Cloud Providers It's worth noting that at this time [Praefect requires its own database server](../gitaly/praefect.md#postgresql) and that to achieve full High Availability a third-party PostgreSQL database solution will be required. We hope to offer a built in solutions for these restrictions in the future but in the meantime a non HA PostgreSQL server -can be set up via Omnibus GitLab, which the above specs reflect. Refer to the following issues for more information: [`omnibus-gitlab#5919`](https://gitlab.com/gitlab-org/omnibus-gitlab/-/issues/5919) & [`gitaly#3398`](https://gitlab.com/gitlab-org/gitaly/-/issues/3398) +can be set up via Omnibus GitLab, which the above specs reflect. Refer to the following issues for more information: [`omnibus-gitlab#5919`](https://gitlab.com/gitlab-org/omnibus-gitlab/-/issues/5919) & [`gitaly#3398`](https://gitlab.com/gitlab-org/gitaly/-/issues/3398). ## Setup components diff --git a/doc/administration/reference_architectures/1k_users.md b/doc/administration/reference_architectures/1k_users.md index 5488d8d33a6115..5491c32dcd87f0 100644 --- a/doc/administration/reference_architectures/1k_users.md +++ b/doc/administration/reference_architectures/1k_users.md @@ -29,13 +29,38 @@ many organizations. | Up to 500 | 4 vCPU, 3.6 GB memory | `n1-highcpu-4` | `c5.xlarge` | `F4s v2` | | Up to 1,000 | 8 vCPU, 7.2 GB memory | `n1-highcpu-8` | `c5.2xlarge` | `F8s v2` | -The Google Cloud Platform (GCP) architectures were built and tested using the +## Requirements + +Before starting you should take note of the following requirements / guidance for the Reference Architecture: + +### Supported CPUs + +The Reference Architecture was built and tested on Google Cloud Platform (GCP) using the [Intel Xeon E5 v3 (Haswell)](https://cloud.google.com/compute/docs/cpu-platforms) CPU platform. On different hardware you may find that adjustments, either lower or higher, are required for your CPU or node counts. For more information, see our [Sysbench](https://github.com/akopytov/sysbench)-based [CPU benchmarks](https://gitlab.com/gitlab-org/quality/performance/-/wikis/Reference-Architectures/GCP-CPU-Benchmarks). +### Supported Infrastructure + +As a general guidance GitLab should run on most Infrastructure such as reputable Cloud Providers (AWS, GCP, Azure) and their services or self managed (ESXi) that meet both the specs detailed above as well as any requirements in this section although this does not constitute a guarantee for every potential permutation. + +However please be aware of the following specific call outs: + +- [Azure Database for PostgreSQL](https://docs.microsoft.com/en-us/azure/postgresql/#:~:text=Azure%20Database%20for%20PostgreSQL%20is,high%20availability%2C%20and%20dynamic%20scalability.) is [not recommended](https://gitlab.com/gitlab-org/quality/reference-architectures/-/issues/61) due to known performance issues / missing features. +- [Azure Blob Storage](https://docs.microsoft.com/en-us/azure/storage/blobs/) is recommended to be configured with [Premium accounts](https://docs.microsoft.com/en-us/azure/storage/blobs/storage-blob-block-blob-premium) to ensure consistent performance. + +### Network Latency + +The Architecture has been designed for and [tested](index.md#testing-process-results) in an optimal network setup. + +Network latency should be kept to a strict minimum between components to allow for synchronous replication. + +As a general guidance the architectures have been tested on main Cloud Providers all with a latency of <**5ms** between their components. As such, a consistent latency higher than this is not recommended. Note that this only applies for network latency between the components in an Architecture (e.g. Rails to Redis), this guidance doesn't apply for other setups such as Geo. + +### Swap + In addition to the stated configurations, we recommend having at least 2 GB of swap on your server, even if you currently have enough available memory. Having swap helps to reduce the chance of errors occurring if your available memory diff --git a/doc/administration/reference_architectures/25k_users.md b/doc/administration/reference_architectures/25k_users.md index a3a96e23094222..4c547c00223b6b 100644 --- a/doc/administration/reference_architectures/25k_users.md +++ b/doc/administration/reference_architectures/25k_users.md @@ -133,21 +133,42 @@ monitor .[#7FFFD4,norank]u--> elb @enduml ``` -The Google Cloud Platform (GCP) architectures were built and tested using the +## Requirements + +Before starting you should take note of the following requirements / guidance for the Reference Architecture: + +### Supported CPUs + +The Reference Architecture was built and tested on Google Cloud Platform (GCP) using the [Intel Xeon E5 v3 (Haswell)](https://cloud.google.com/compute/docs/cpu-platforms) CPU platform. On different hardware you may find that adjustments, either lower or higher, are required for your CPU or node counts. For more information, see our [Sysbench](https://github.com/akopytov/sysbench)-based [CPU benchmarks](https://gitlab.com/gitlab-org/quality/performance/-/wikis/Reference-Architectures/GCP-CPU-Benchmarks). -Due to better performance and availability, for data objects (such as LFS, -uploads, or artifacts), using an [object storage service](#configure-the-object-storage) -is recommended. +### Supported Infrastructure + +As a general guidance GitLab should run on most Infrastructure such as reputable Cloud Providers (AWS, GCP, Azure) and their services or self managed (ESXi) that meet both the specs detailed above as well as any requirements in this section although this does not constitute a guarantee for every potential permutation. + +However please be aware of the following specific call outs: + +- [Azure Database for PostgreSQL](https://docs.microsoft.com/en-us/azure/postgresql/#:~:text=Azure%20Database%20for%20PostgreSQL%20is,high%20availability%2C%20and%20dynamic%20scalability.) is [not recommended](https://gitlab.com/gitlab-org/quality/reference-architectures/-/issues/61) due to known performance issues / missing features. +- [Azure Blob Storage](https://docs.microsoft.com/en-us/azure/storage/blobs/) is recommended to be configured with [Premium accounts](https://docs.microsoft.com/en-us/azure/storage/blobs/storage-blob-block-blob-premium) to ensure consistent performance. + +### Network Latency + +The Architecture has been designed for and [tested](index.md#testing-process-results) in an optimal network setup. + +Network latency should be kept to a strict minimum between components to allow for synchronous replication. + +As a general guidance the architectures have been tested on main Cloud Providers all with a latency of <**5ms** between their components. As such, a consistent latency higher than this is not recommended. Note that this only applies for network latency between the components in an Architecture (e.g. Rails to Redis), this guidance doesn't apply for other setups such as Geo. + +### Praefect PostgreSQL -It's also worth noting that at this time [Praefect requires its own database server](../gitaly/praefect.md#postgresql) and +It's worth noting that at this time [Praefect requires its own database server](../gitaly/praefect.md#postgresql) and that to achieve full High Availability a third-party PostgreSQL database solution will be required. We hope to offer a built in solutions for these restrictions in the future but in the meantime a non HA PostgreSQL server -can be set up via Omnibus GitLab, which the above specs reflect. Refer to the following issues for more information: [`omnibus-gitlab#5919`](https://gitlab.com/gitlab-org/omnibus-gitlab/-/issues/5919) & [`gitaly#3398`](https://gitlab.com/gitlab-org/gitaly/-/issues/3398) +can be set up via Omnibus GitLab, which the above specs reflect. Refer to the following issues for more information: [`omnibus-gitlab#5919`](https://gitlab.com/gitlab-org/omnibus-gitlab/-/issues/5919) & [`gitaly#3398`](https://gitlab.com/gitlab-org/gitaly/-/issues/3398). ## Setup components diff --git a/doc/administration/reference_architectures/2k_users.md b/doc/administration/reference_architectures/2k_users.md index b67a6d50f712e6..94fb112be4ebc2 100644 --- a/doc/administration/reference_architectures/2k_users.md +++ b/doc/administration/reference_architectures/2k_users.md @@ -69,17 +69,35 @@ monitor .[#7FFFD4,norank]u--> elb @enduml ``` -The Google Cloud Platform (GCP) architectures were built and tested using the +## Requirements + +Before starting you should take note of the following requirements / guidance for the Reference Architecture: + +### Supported CPUs + +The Reference Architecture was built and tested on Google Cloud Platform (GCP) using the [Intel Xeon E5 v3 (Haswell)](https://cloud.google.com/compute/docs/cpu-platforms) CPU platform. On different hardware you may find that adjustments, either lower or higher, are required for your CPU or node counts. For more information, see our [Sysbench](https://github.com/akopytov/sysbench)-based [CPU benchmarks](https://gitlab.com/gitlab-org/quality/performance/-/wikis/Reference-Architectures/GCP-CPU-Benchmarks). -Due to better performance and availability, for data objects (such as LFS, -uploads, or artifacts), using an [object storage service](#configure-the-object-storage) -is recommended instead of using NFS. Using an object storage service also -doesn't require you to provision and maintain a node. +### Supported Infrastructure + +As a general guidance GitLab should run on most Infrastructure such as reputable Cloud Providers (AWS, GCP, Azure) and their services or self managed (ESXi) that meet both the specs detailed above as well as any requirements in this section although this does not constitute a guarantee for every potential permutation. + +However please be aware of the following specific call outs: + +- [Azure Database for PostgreSQL](https://docs.microsoft.com/en-us/azure/postgresql/#:~:text=Azure%20Database%20for%20PostgreSQL%20is,high%20availability%2C%20and%20dynamic%20scalability.) is [not recommended](https://gitlab.com/gitlab-org/quality/reference-architectures/-/issues/61) due to known performance issues / missing features. +- [Azure Blob Storage](https://docs.microsoft.com/en-us/azure/storage/blobs/) is recommended to be configured with [Premium accounts](https://docs.microsoft.com/en-us/azure/storage/blobs/storage-blob-block-blob-premium) to ensure consistent performance. + +### Network Latency + +The Architecture has been designed for and [tested](index.md#testing-process-results) in an optimal network setup. + +Network latency should be kept to a strict minimum between components to allow for synchronous replication. + +As a general guidance the architectures have been tested on main Cloud Providers all with a latency of <**5ms** between their components. As such, a consistent latency higher than this is not recommended. Note that this only applies for network latency between the components in an Architecture (e.g. Rails to Redis), this guidance doesn't apply for other setups such as Geo. ## Setup components diff --git a/doc/administration/reference_architectures/3k_users.md b/doc/administration/reference_architectures/3k_users.md index 6e081a7495906d..fca04c3f5d8fcd 100644 --- a/doc/administration/reference_architectures/3k_users.md +++ b/doc/administration/reference_architectures/3k_users.md @@ -139,27 +139,42 @@ monitor .[#7FFFD4,norank]u--> elb @enduml ``` -The Google Cloud Platform (GCP) architectures were built and tested using the +## Requirements + +Before starting you should take note of the following requirements / guidance for the Reference Architecture: + +### Supported CPUs + +The Reference Architecture was built and tested on Google Cloud Platform (GCP) using the [Intel Xeon E5 v3 (Haswell)](https://cloud.google.com/compute/docs/cpu-platforms) CPU platform. On different hardware you may find that adjustments, either lower or higher, are required for your CPU or node counts. For more information, see our [Sysbench](https://github.com/akopytov/sysbench)-based [CPU benchmarks](https://gitlab.com/gitlab-org/quality/performance/-/wikis/Reference-Architectures/GCP-CPU-Benchmarks). -Due to better performance and availability, for data objects (such as LFS, -uploads, or artifacts), using an [object storage service](#configure-the-object-storage) -is recommended instead of using NFS. Using an object storage service also -doesn't require you to provision and maintain a node. +### Supported Infrastructure + +As a general guidance GitLab should run on most Infrastructure such as reputable Cloud Providers (AWS, GCP, Azure) and their services or self managed (ESXi) that meet both the specs detailed above as well as any requirements in this section although this does not constitute a guarantee for every potential permutation. + +However please be aware of the following specific call outs: + +- [Azure Database for PostgreSQL](https://docs.microsoft.com/en-us/azure/postgresql/#:~:text=Azure%20Database%20for%20PostgreSQL%20is,high%20availability%2C%20and%20dynamic%20scalability.) is [not recommended](https://gitlab.com/gitlab-org/quality/reference-architectures/-/issues/61) due to known performance issues / missing features. +- [Azure Blob Storage](https://docs.microsoft.com/en-us/azure/storage/blobs/) is recommended to be configured with [Premium accounts](https://docs.microsoft.com/en-us/azure/storage/blobs/storage-blob-block-blob-premium) to ensure consistent performance. + +### Network Latency + +The Architecture has been designed for and [tested](index.md#testing-process-results) in an optimal network setup. + +Network latency should be kept to a strict minimum between components to allow for synchronous replication. + +As a general guidance the architectures have been tested on main Cloud Providers all with a latency of <**5ms** between their components. As such, a consistent latency higher than this is not recommended. Note that this only applies for network latency between the components in an Architecture (e.g. Rails to Redis), this guidance doesn't apply for other setups such as Geo. -[Praefect requires its own database server](../gitaly/praefect.md#postgresql), -and a third-party PostgreSQL database solution is required to achieve full -high availability. Although we hope to offer a built-in solution for these -restrictions in the future, you can set up a non-HA PostgreSQL server by using -Omnibus GitLab (which the previous specifications reflect). Refer to the -following issues for more information: +### Praefect PostgreSQL -- [`omnibus-gitlab#5919`](https://gitlab.com/gitlab-org/omnibus-gitlab/-/issues/5919) -- [`gitaly#3398`](https://gitlab.com/gitlab-org/gitaly/-/issues/3398) +It's worth noting that at this time [Praefect requires its own database server](../gitaly/praefect.md#postgresql) and +that to achieve full High Availability a third-party PostgreSQL database solution will be required. +We hope to offer a built in solutions for these restrictions in the future but in the meantime a non HA PostgreSQL server +can be set up via Omnibus GitLab, which the above specs reflect. Refer to the following issues for more information: [`omnibus-gitlab#5919`](https://gitlab.com/gitlab-org/omnibus-gitlab/-/issues/5919) & [`gitaly#3398`](https://gitlab.com/gitlab-org/gitaly/-/issues/3398). ## Setup components diff --git a/doc/administration/reference_architectures/50k_users.md b/doc/administration/reference_architectures/50k_users.md index efd5271e8d201f..b0a74e12ea37e4 100644 --- a/doc/administration/reference_architectures/50k_users.md +++ b/doc/administration/reference_architectures/50k_users.md @@ -133,21 +133,42 @@ monitor .[#7FFFD4,norank]u--> elb @enduml ``` -The Google Cloud Platform (GCP) architectures were built and tested using the +## Requirements + +Before starting you should take note of the following requirements / guidance for the Reference Architecture: + +### Supported CPUs + +The Reference Architecture was built and tested on Google Cloud Platform (GCP) using the [Intel Xeon E5 v3 (Haswell)](https://cloud.google.com/compute/docs/cpu-platforms) CPU platform. On different hardware you may find that adjustments, either lower or higher, are required for your CPU or node counts. For more information, see our [Sysbench](https://github.com/akopytov/sysbench)-based [CPU benchmarks](https://gitlab.com/gitlab-org/quality/performance/-/wikis/Reference-Architectures/GCP-CPU-Benchmarks). -Due to better performance and availability, for data objects (such as LFS, -uploads, or artifacts), using an [object storage service](#configure-the-object-storage) -is recommended. +### Supported Infrastructure + +As a general guidance GitLab should run on most Infrastructure such as reputable Cloud Providers (AWS, GCP, Azure) and their services or self managed (ESXi) that meet both the specs detailed above as well as any requirements in this section although this does not constitute a guarantee for every potential permutation. + +However please be aware of the following specific call outs: + +- [Azure Database for PostgreSQL](https://docs.microsoft.com/en-us/azure/postgresql/#:~:text=Azure%20Database%20for%20PostgreSQL%20is,high%20availability%2C%20and%20dynamic%20scalability.) is [not recommended](https://gitlab.com/gitlab-org/quality/reference-architectures/-/issues/61) due to known performance issues / missing features. +- [Azure Blob Storage](https://docs.microsoft.com/en-us/azure/storage/blobs/) is recommended to be configured with [Premium accounts](https://docs.microsoft.com/en-us/azure/storage/blobs/storage-blob-block-blob-premium) to ensure consistent performance. + +### Network Latency + +The Architecture has been designed for and [tested](index.md#testing-process-results) in an optimal network setup. + +Network latency should be kept to a strict minimum between components to allow for synchronous replication. + +As a general guidance the architectures have been tested on main Cloud Providers all with a latency of <**5ms** between their components. As such, a consistent latency higher than this is not recommended. Note that this only applies for network latency between the components in an Architecture (e.g. Rails to Redis), this guidance doesn't apply for other setups such as Geo. + +### Praefect PostgreSQL -It's also worth noting that at this time [Praefect requires its own database server](../gitaly/praefect.md#postgresql) and +It's worth noting that at this time [Praefect requires its own database server](../gitaly/praefect.md#postgresql) and that to achieve full High Availability a third-party PostgreSQL database solution will be required. We hope to offer a built in solutions for these restrictions in the future but in the meantime a non HA PostgreSQL server -can be set up via Omnibus GitLab, which the above specs reflect. Refer to the following issues for more information: [`omnibus-gitlab#5919`](https://gitlab.com/gitlab-org/omnibus-gitlab/-/issues/5919) & [`gitaly#3398`](https://gitlab.com/gitlab-org/gitaly/-/issues/3398) +can be set up via Omnibus GitLab, which the above specs reflect. Refer to the following issues for more information: [`omnibus-gitlab#5919`](https://gitlab.com/gitlab-org/omnibus-gitlab/-/issues/5919) & [`gitaly#3398`](https://gitlab.com/gitlab-org/gitaly/-/issues/3398). ## Setup components diff --git a/doc/administration/reference_architectures/5k_users.md b/doc/administration/reference_architectures/5k_users.md index 43070cccc940a2..07c1c4093cd3d5 100644 --- a/doc/administration/reference_architectures/5k_users.md +++ b/doc/administration/reference_architectures/5k_users.md @@ -136,22 +136,42 @@ monitor .[#7FFFD4,norank]u--> elb @enduml ``` -The Google Cloud Platform (GCP) architectures were built and tested using the +## Requirements + +Before starting you should take note of the following requirements / guidance for the Reference Architecture: + +### Supported CPUs + +The Reference Architecture was built and tested on Google Cloud Platform (GCP) using the [Intel Xeon E5 v3 (Haswell)](https://cloud.google.com/compute/docs/cpu-platforms) CPU platform. On different hardware you may find that adjustments, either lower or higher, are required for your CPU or node counts. For more information, see our [Sysbench](https://github.com/akopytov/sysbench)-based [CPU benchmarks](https://gitlab.com/gitlab-org/quality/performance/-/wikis/Reference-Architectures/GCP-CPU-Benchmarks). -Due to better performance and availability, for data objects (such as LFS, -uploads, or artifacts), using an [object storage service](#configure-the-object-storage) -is recommended instead of using NFS. Using an object storage service also -doesn't require you to provision and maintain a node. +### Supported Infrastructure + +As a general guidance GitLab should run on most Infrastructure such as reputable Cloud Providers (AWS, GCP, Azure) and their services or self managed (ESXi) that meet both the specs detailed above as well as any requirements in this section although this does not constitute a guarantee for every potential permutation. + +However please be aware of the following specific call outs: + +- [Azure Database for PostgreSQL](https://docs.microsoft.com/en-us/azure/postgresql/#:~:text=Azure%20Database%20for%20PostgreSQL%20is,high%20availability%2C%20and%20dynamic%20scalability.) is [not recommended](https://gitlab.com/gitlab-org/quality/reference-architectures/-/issues/61) due to known performance issues / missing features. +- [Azure Blob Storage](https://docs.microsoft.com/en-us/azure/storage/blobs/) is recommended to be configured with [Premium accounts](https://docs.microsoft.com/en-us/azure/storage/blobs/storage-blob-block-blob-premium) to ensure consistent performance. + +### Network Latency + +The Architecture has been designed for and [tested](index.md#testing-process-results) in an optimal network setup. + +Network latency should be kept to a strict minimum between components to allow for synchronous replication. + +As a general guidance the architectures have been tested on main Cloud Providers all with a latency of <**5ms** between their components. As such, a consistent latency higher than this is not recommended. Note that this only applies for network latency between the components in an Architecture (e.g. Rails to Redis), this guidance doesn't apply for other setups such as Geo. + +### Praefect PostgreSQL -It's also worth noting that at this time [Praefect requires its own database server](../gitaly/praefect.md#postgresql) and +It's worth noting that at this time [Praefect requires its own database server](../gitaly/praefect.md#postgresql) and that to achieve full High Availability a third-party PostgreSQL database solution will be required. We hope to offer a built in solutions for these restrictions in the future but in the meantime a non HA PostgreSQL server -can be set up via Omnibus GitLab, which the above specs reflect. Refer to the following issues for more information: [`omnibus-gitlab#5919`](https://gitlab.com/gitlab-org/omnibus-gitlab/-/issues/5919) & [`gitaly#3398`](https://gitlab.com/gitlab-org/gitaly/-/issues/3398) +can be set up via Omnibus GitLab, which the above specs reflect. Refer to the following issues for more information: [`omnibus-gitlab#5919`](https://gitlab.com/gitlab-org/omnibus-gitlab/-/issues/5919) & [`gitaly#3398`](https://gitlab.com/gitlab-org/gitaly/-/issues/3398). ## Setup components diff --git a/doc/administration/reference_architectures/index.md b/doc/administration/reference_architectures/index.md index b9a9c0a4ac9432..77676b0ce85c4e 100644 --- a/doc/administration/reference_architectures/index.md +++ b/doc/administration/reference_architectures/index.md @@ -198,12 +198,12 @@ The [Quality Engineering - Enablement team](https://about.gitlab.com/handbook/en In this section we detail some of the process as well as the results. -Firstly please note the following about the testing process: +Firstly, please note the following about the testing process: - Testing occurs against all main Reference Architectures and Cloud Providers in an automated and ad hoc fashion. - This is achieved through two tools built by the team - The [GitLab Environment Toolkit](https://gitlab.com/gitlab-org/quality/gitlab-environment-toolkit) for building the environments and the [GitLab Performance Tool](https://gitlab.com/gitlab-org/quality/performance) for performance testing. - We aim to have a "test smart" approach where architectures tested haven 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 / Cloud Providers as well as Cloud Native Hybrids. -- Testing is done publicly and all results are shared +- Testing is done publicly and all results are shared. Next, the following table details the testing done currently against the Reference Architectures along with the frequency and results: -- GitLab From 090f918371b833a4edb02e4842baaa962b601b0c Mon Sep 17 00:00:00 2001 From: Grant Young Date: Tue, 14 Dec 2021 14:42:06 +0000 Subject: [PATCH 3/8] Fix grammar errors and add more costs --- doc/administration/reference_architectures/10k_users.md | 2 +- doc/administration/reference_architectures/1k_users.md | 2 +- doc/administration/reference_architectures/25k_users.md | 3 ++- doc/administration/reference_architectures/2k_users.md | 2 +- doc/administration/reference_architectures/3k_users.md | 2 +- doc/administration/reference_architectures/50k_users.md | 3 ++- doc/administration/reference_architectures/5k_users.md | 3 ++- doc/administration/reference_architectures/index.md | 2 +- 8 files changed, 11 insertions(+), 8 deletions(-) diff --git a/doc/administration/reference_architectures/10k_users.md b/doc/administration/reference_architectures/10k_users.md index 37af805082c26b..acbae1899ba587 100644 --- a/doc/administration/reference_architectures/10k_users.md +++ b/doc/administration/reference_architectures/10k_users.md @@ -140,7 +140,7 @@ Before starting you should take note of the following requirements / guidance fo ### Supported CPUs -The Reference Architecture was built and tested on Google Cloud Platform (GCP) using the +The Reference Architecture was built and tested on Google Cloud Platform (GCP) using the [Intel Xeon E5 v3 (Haswell)](https://cloud.google.com/compute/docs/cpu-platforms) CPU platform. On different hardware you may find that adjustments, either lower or higher, are required for your CPU or node counts. For more information, see diff --git a/doc/administration/reference_architectures/1k_users.md b/doc/administration/reference_architectures/1k_users.md index 5491c32dcd87f0..a7d4c117b6da9a 100644 --- a/doc/administration/reference_architectures/1k_users.md +++ b/doc/administration/reference_architectures/1k_users.md @@ -35,7 +35,7 @@ Before starting you should take note of the following requirements / guidance fo ### Supported CPUs -The Reference Architecture was built and tested on Google Cloud Platform (GCP) using the +The Reference Architecture was built and tested on Google Cloud Platform (GCP) using the [Intel Xeon E5 v3 (Haswell)](https://cloud.google.com/compute/docs/cpu-platforms) CPU platform. On different hardware you may find that adjustments, either lower or higher, are required for your CPU or node counts. For more information, see diff --git a/doc/administration/reference_architectures/25k_users.md b/doc/administration/reference_architectures/25k_users.md index 4c547c00223b6b..f72b408b3dc9ac 100644 --- a/doc/administration/reference_architectures/25k_users.md +++ b/doc/administration/reference_architectures/25k_users.md @@ -12,6 +12,7 @@ full list of reference architectures, see > - **Supported users (approximate):** 25,000 > - **High Availability:** Yes ([Praefect](#configure-praefect-postgresql) needs a third-party PostgreSQL solution for HA) +> - **Estimated Costs:** [GCP](https://cloud.google.com/products/calculator#id=925386e1-c01c-4c0a-8d7d-ebde1824b7b0) > - **Cloud Native Hybrid Alternative:** [Yes](#cloud-native-hybrid-reference-architecture-with-helm-charts-alternative) > - **Performance tested weekly with the [GitLab Performance Tool (GPT)](https://gitlab.com/gitlab-org/quality/performance)**: > - **Test requests per second (RPS) rates:** API: 500 RPS, Web: 50 RPS, Git (Pull): 50 RPS, Git (Push): 10 RPS @@ -139,7 +140,7 @@ Before starting you should take note of the following requirements / guidance fo ### Supported CPUs -The Reference Architecture was built and tested on Google Cloud Platform (GCP) using the +The Reference Architecture was built and tested on Google Cloud Platform (GCP) using the [Intel Xeon E5 v3 (Haswell)](https://cloud.google.com/compute/docs/cpu-platforms) CPU platform. On different hardware you may find that adjustments, either lower or higher, are required for your CPU or node counts. For more information, see diff --git a/doc/administration/reference_architectures/2k_users.md b/doc/administration/reference_architectures/2k_users.md index 94fb112be4ebc2..2e83c86c838d5f 100644 --- a/doc/administration/reference_architectures/2k_users.md +++ b/doc/administration/reference_architectures/2k_users.md @@ -75,7 +75,7 @@ Before starting you should take note of the following requirements / guidance fo ### Supported CPUs -The Reference Architecture was built and tested on Google Cloud Platform (GCP) using the +The Reference Architecture was built and tested on Google Cloud Platform (GCP) using the [Intel Xeon E5 v3 (Haswell)](https://cloud.google.com/compute/docs/cpu-platforms) CPU platform. On different hardware you may find that adjustments, either lower or higher, are required for your CPU or node counts. For more information, see diff --git a/doc/administration/reference_architectures/3k_users.md b/doc/administration/reference_architectures/3k_users.md index fca04c3f5d8fcd..0e6adae4ae9876 100644 --- a/doc/administration/reference_architectures/3k_users.md +++ b/doc/administration/reference_architectures/3k_users.md @@ -145,7 +145,7 @@ Before starting you should take note of the following requirements / guidance fo ### Supported CPUs -The Reference Architecture was built and tested on Google Cloud Platform (GCP) using the +The Reference Architecture was built and tested on Google Cloud Platform (GCP) using the [Intel Xeon E5 v3 (Haswell)](https://cloud.google.com/compute/docs/cpu-platforms) CPU platform. On different hardware you may find that adjustments, either lower or higher, are required for your CPU or node counts. For more information, see diff --git a/doc/administration/reference_architectures/50k_users.md b/doc/administration/reference_architectures/50k_users.md index b0a74e12ea37e4..074ba50958afc7 100644 --- a/doc/administration/reference_architectures/50k_users.md +++ b/doc/administration/reference_architectures/50k_users.md @@ -12,6 +12,7 @@ full list of reference architectures, see > - **Supported users (approximate):** 50,000 > - **High Availability:** Yes ([Praefect](#configure-praefect-postgresql) needs a third-party PostgreSQL solution for HA) +> - **Estimated Costs:** [GCP](https://cloud.google.com/products/calculator/#id=8006396b-88ee-40cd-a1c8-77cdefa4d3c8) > - **Cloud Native Hybrid Alternative:** [Yes](#cloud-native-hybrid-reference-architecture-with-helm-charts-alternative) > - **Performance tested weekly with the [GitLab Performance Tool (GPT)](https://gitlab.com/gitlab-org/quality/performance)**: > - **Test requests per second (RPS) rates:** API: 1000 RPS, Web: 100 RPS, Git (Pull): 100 RPS, Git (Push): 20 RPS @@ -139,7 +140,7 @@ Before starting you should take note of the following requirements / guidance fo ### Supported CPUs -The Reference Architecture was built and tested on Google Cloud Platform (GCP) using the +The Reference Architecture was built and tested on Google Cloud Platform (GCP) using the [Intel Xeon E5 v3 (Haswell)](https://cloud.google.com/compute/docs/cpu-platforms) CPU platform. On different hardware you may find that adjustments, either lower or higher, are required for your CPU or node counts. For more information, see diff --git a/doc/administration/reference_architectures/5k_users.md b/doc/administration/reference_architectures/5k_users.md index 07c1c4093cd3d5..01b182ff2eab1a 100644 --- a/doc/administration/reference_architectures/5k_users.md +++ b/doc/administration/reference_architectures/5k_users.md @@ -19,6 +19,7 @@ costly-to-operate environment by using the > - **Supported users (approximate):** 5,000 > - **High Availability:** Yes ([Praefect](#configure-praefect-postgresql) needs a third-party PostgreSQL solution for HA) +> - **Estimated Costs:** [GCP](https://cloud.google.com/products/calculator/#id=8742e8ea-c08f-4e0a-b058-02f3a1c38a2f) > - **Cloud Native Hybrid Alternative:** [Yes](#cloud-native-hybrid-reference-architecture-with-helm-charts-alternative) > - **Performance tested weekly with the [GitLab Performance Tool (GPT)](https://gitlab.com/gitlab-org/quality/performance)**: > - **Test requests per second (RPS) rates:** API: 100 RPS, Web: 10 RPS, Git (Pull): 10 RPS, Git (Push): 2 RPS @@ -142,7 +143,7 @@ Before starting you should take note of the following requirements / guidance fo ### Supported CPUs -The Reference Architecture was built and tested on Google Cloud Platform (GCP) using the +The Reference Architecture was built and tested on Google Cloud Platform (GCP) using the [Intel Xeon E5 v3 (Haswell)](https://cloud.google.com/compute/docs/cpu-platforms) CPU platform. On different hardware you may find that adjustments, either lower or higher, are required for your CPU or node counts. For more information, see diff --git a/doc/administration/reference_architectures/index.md b/doc/administration/reference_architectures/index.md index 77676b0ce85c4e..fa71fbbcae8d0c 100644 --- a/doc/administration/reference_architectures/index.md +++ b/doc/administration/reference_architectures/index.md @@ -202,7 +202,7 @@ Firstly, please note the following about the testing process: - Testing occurs against all main Reference Architectures and Cloud Providers in an automated and ad hoc fashion. - This is achieved through two tools built by the team - The [GitLab Environment Toolkit](https://gitlab.com/gitlab-org/quality/gitlab-environment-toolkit) for building the environments and the [GitLab Performance Tool](https://gitlab.com/gitlab-org/quality/performance) for performance testing. -- We aim to have a "test smart" approach where architectures tested haven 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 / Cloud Providers as well as Cloud Native Hybrids. +- We aim to have a "test smart" approach where architectures tested haven 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 / Cloud Providers as well as Cloud Native Hybrids. - Testing is done publicly and all results are shared. Next, the following table details the testing done currently against the Reference Architectures along with the frequency and results: -- GitLab From e016157301ba885555b2091cec47f66898246ccc Mon Sep 17 00:00:00 2001 From: Grant Young Date: Tue, 14 Dec 2021 16:31:18 +0000 Subject: [PATCH 4/8] Further updates --- doc/administration/reference_architectures/10k_users.md | 2 +- doc/administration/reference_architectures/1k_users.md | 2 +- doc/administration/reference_architectures/25k_users.md | 2 +- doc/administration/reference_architectures/2k_users.md | 5 +++-- doc/administration/reference_architectures/3k_users.md | 5 +++-- doc/administration/reference_architectures/50k_users.md | 2 +- doc/administration/reference_architectures/5k_users.md | 4 ++-- doc/administration/reference_architectures/index.md | 2 +- 8 files changed, 13 insertions(+), 11 deletions(-) diff --git a/doc/administration/reference_architectures/10k_users.md b/doc/administration/reference_architectures/10k_users.md index acbae1899ba587..ea66cda9b713a3 100644 --- a/doc/administration/reference_architectures/10k_users.md +++ b/doc/administration/reference_architectures/10k_users.md @@ -158,7 +158,7 @@ However please be aware of the following specific call outs: ### Network Latency -The Architecture has been designed for and [tested](index.md#testing-process-results) in an optimal network setup. +The Architecture has been designed for and [tested](index.md#testing-process-and-results) in an optimal network setup. Network latency should be kept to a strict minimum between components to allow for synchronous replication. diff --git a/doc/administration/reference_architectures/1k_users.md b/doc/administration/reference_architectures/1k_users.md index a7d4c117b6da9a..ca33e198ff11a2 100644 --- a/doc/administration/reference_architectures/1k_users.md +++ b/doc/administration/reference_architectures/1k_users.md @@ -53,7 +53,7 @@ However please be aware of the following specific call outs: ### Network Latency -The Architecture has been designed for and [tested](index.md#testing-process-results) in an optimal network setup. +The Architecture has been designed for and [tested](index.md#testing-process-and-results) in an optimal network setup. Network latency should be kept to a strict minimum between components to allow for synchronous replication. diff --git a/doc/administration/reference_architectures/25k_users.md b/doc/administration/reference_architectures/25k_users.md index f72b408b3dc9ac..920915d8a131ef 100644 --- a/doc/administration/reference_architectures/25k_users.md +++ b/doc/administration/reference_architectures/25k_users.md @@ -158,7 +158,7 @@ However please be aware of the following specific call outs: ### Network Latency -The Architecture has been designed for and [tested](index.md#testing-process-results) in an optimal network setup. +The Architecture has been designed for and [tested](index.md#testing-process-and-results) in an optimal network setup. Network latency should be kept to a strict minimum between components to allow for synchronous replication. diff --git a/doc/administration/reference_architectures/2k_users.md b/doc/administration/reference_architectures/2k_users.md index 2e83c86c838d5f..408b4af2fc2db9 100644 --- a/doc/administration/reference_architectures/2k_users.md +++ b/doc/administration/reference_architectures/2k_users.md @@ -13,6 +13,7 @@ For a full list of reference architectures, see > - **Supported users (approximate):** 2,000 > - **High Availability:** No. For a highly-available environment, you can > follow a modified [3K reference architecture](3k_users.md#supported-modifications-for-lower-user-counts-ha). +> - **Estimated Costs:** [GCP](https://cloud.google.com/products/calculator#id=84d11491-d72a-493c-a16e-650931faa658) > - **Cloud Native Hybrid:** [Yes](#cloud-native-hybrid-reference-architecture-with-helm-charts-alternative) > - **Performance tested daily with the [GitLab Performance Tool (GPT)](https://gitlab.com/gitlab-org/quality/performance)**: > - **Test requests per second (RPS) rates:** API: 40 RPS, Web: 4 RPS, Git (Pull): 4 RPS, Git (Push): 1 RPS @@ -27,7 +28,7 @@ For a full list of reference architectures, see | GitLab Rails | 2 | 8 vCPU, 7.2 GB memory | `n1-highcpu-8` | `c5.2xlarge` | `F8s v2` | | Monitoring node | 1 | 2 vCPU, 1.8 GB memory | `n1-highcpu-2` | `c5.large` | `F2s v2` | | Object storage4 | n/a | n/a | n/a | n/a | n/a | -| NFS server (optional, not recommended) | 1 | 4 vCPU, 3.6 GB memory | `n1-highcpu-4` | `c5.xlarge` | `F4s v2` | +| NFS server (non-Gitaly) | 1 | 4 vCPU, 3.6 GB memory | `n1-highcpu-4` | `c5.xlarge` | `F4s v2` | 1. Can be optionally run on reputable third-party external PaaS PostgreSQL solutions. [Google Cloud SQL](https://cloud.google.com/sql/docs/postgres/high-availability#normal) and [Amazon RDS](https://aws.amazon.com/rds/) are known to work, however Azure Database for PostgreSQL is **not recommended** due to [performance issues](https://gitlab.com/gitlab-org/quality/reference-architectures/-/issues/61). Consul is primarily used for PostgreSQL high availability so can be ignored when using a PostgreSQL PaaS setup. However it is also used optionally by Prometheus for Omnibus auto host discovery. @@ -93,7 +94,7 @@ However please be aware of the following specific call outs: ### Network Latency -The Architecture has been designed for and [tested](index.md#testing-process-results) in an optimal network setup. +The Architecture has been designed for and [tested](index.md#testing-process-and-results) in an optimal network setup. Network latency should be kept to a strict minimum between components to allow for synchronous replication. diff --git a/doc/administration/reference_architectures/3k_users.md b/doc/administration/reference_architectures/3k_users.md index 0e6adae4ae9876..fe74ec163cd353 100644 --- a/doc/administration/reference_architectures/3k_users.md +++ b/doc/administration/reference_architectures/3k_users.md @@ -22,6 +22,7 @@ For a full list of reference architectures, see > - **Supported users (approximate):** 3,000 > - **High Availability:** Yes, although [Praefect](#configure-praefect-postgresql) needs a third-party PostgreSQL solution +> - **Estimated Costs:** [GCP](https://cloud.google.com/products/calculator/#id=ac4838e6-9c40-4a36-ac43-6d1bc1843e08) > - **Cloud Native Hybrid Alternative:** [Yes](#cloud-native-hybrid-reference-architecture-with-helm-charts-alternative) > - **Performance tested weekly with the [GitLab Performance Tool (GPT)](https://gitlab.com/gitlab-org/quality/performance)**: > - **Test requests per second (RPS) rates:** API: 60 RPS, Web: 6 RPS, Git (Pull): 6 RPS, Git (Push): 1 RPS @@ -42,7 +43,7 @@ For a full list of reference architectures, see | GitLab Rails | 3 | 8 vCPU, 7.2 GB memory | `n1-highcpu-8` | `c5.2xlarge` | `F8s v2` | | Monitoring node | 1 | 2 vCPU, 1.8 GB memory | `n1-highcpu-2` | `c5.large` | `F2s v2` | | Object storage4 | n/a | n/a | n/a | n/a | n/a | -| NFS server (optional, not recommended) | 1 | 4 vCPU, 3.6 GB memory | `n1-highcpu-4` | `c5.xlarge` | `F4s v2` | +| NFS server (non-Gitaly) | 1 | 4 vCPU, 3.6 GB memory | `n1-highcpu-4` | `c5.xlarge` | `F4s v2` | @@ -163,7 +164,7 @@ However please be aware of the following specific call outs: ### Network Latency -The Architecture has been designed for and [tested](index.md#testing-process-results) in an optimal network setup. +The Architecture has been designed for and [tested](index.md#testing-process-and-results) in an optimal network setup. Network latency should be kept to a strict minimum between components to allow for synchronous replication. diff --git a/doc/administration/reference_architectures/50k_users.md b/doc/administration/reference_architectures/50k_users.md index 074ba50958afc7..10a9a606bfb853 100644 --- a/doc/administration/reference_architectures/50k_users.md +++ b/doc/administration/reference_architectures/50k_users.md @@ -158,7 +158,7 @@ However please be aware of the following specific call outs: ### Network Latency -The Architecture has been designed for and [tested](index.md#testing-process-results) in an optimal network setup. +The Architecture has been designed for and [tested](index.md#testing-process-and-results) in an optimal network setup. Network latency should be kept to a strict minimum between components to allow for synchronous replication. diff --git a/doc/administration/reference_architectures/5k_users.md b/doc/administration/reference_architectures/5k_users.md index 01b182ff2eab1a..071163b3121ea0 100644 --- a/doc/administration/reference_architectures/5k_users.md +++ b/doc/administration/reference_architectures/5k_users.md @@ -40,7 +40,7 @@ costly-to-operate environment by using the | GitLab Rails | 3 | 16 vCPU, 14.4 GB memory | `n1-highcpu-16` | `c5.4xlarge` | `F16s v2`| | Monitoring node | 1 | 2 vCPU, 1.8 GB memory | `n1-highcpu-2` | `c5.large` | `F2s v2` | | Object storage4 | n/a | n/a | n/a | n/a | n/a | -| NFS server (optional, not recommended) | 1 | 4 vCPU, 3.6 GB memory | `n1-highcpu-4` | `c5.xlarge` | `F4s v2` | +| NFS server (non-Gitaly) | 1 | 4 vCPU, 3.6 GB memory | `n1-highcpu-4` | `c5.xlarge` | `F4s v2` | @@ -161,7 +161,7 @@ However please be aware of the following specific call outs: ### Network Latency -The Architecture has been designed for and [tested](index.md#testing-process-results) in an optimal network setup. +The Architecture has been designed for and [tested](index.md#testing-process-and-results) in an optimal network setup. Network latency should be kept to a strict minimum between components to allow for synchronous replication. diff --git a/doc/administration/reference_architectures/index.md b/doc/administration/reference_architectures/index.md index fa71fbbcae8d0c..d43b31e052f8b1 100644 --- a/doc/administration/reference_architectures/index.md +++ b/doc/administration/reference_architectures/index.md @@ -192,7 +192,7 @@ In the specific case you have the requirement to achieve HA but have a lower use For more details, [refer to this section in the architecture's documentation](3k_users.md#supported-modifications-for-lower-user-counts-ha). -## Testing Process & Results +## Testing Process and Results The [Quality Engineering - Enablement team](https://about.gitlab.com/handbook/engineering/quality/quality-engineering/) regularly smoke / performance test the Reference Architectures to ensure they remain compliant. -- GitLab From ca5901253a2e45db496e652dd03757382059f548 Mon Sep 17 00:00:00 2001 From: Achilleas Pipinellis Date: Wed, 15 Dec 2021 12:47:07 +0000 Subject: [PATCH 5/8] Apply 29 suggestion(s) to 8 file(s) --- .../reference_architectures/10k_users.md | 20 +++++++--------- .../reference_architectures/1k_users.md | 20 +++++++--------- .../reference_architectures/25k_users.md | 20 +++++++--------- .../reference_architectures/2k_users.md | 20 +++++++--------- .../reference_architectures/3k_users.md | 20 +++++++--------- .../reference_architectures/50k_users.md | 20 +++++++--------- .../reference_architectures/5k_users.md | 20 +++++++--------- .../reference_architectures/index.md | 24 +++++++++---------- 8 files changed, 75 insertions(+), 89 deletions(-) diff --git a/doc/administration/reference_architectures/10k_users.md b/doc/administration/reference_architectures/10k_users.md index ea66cda9b713a3..b27b62061407ef 100644 --- a/doc/administration/reference_architectures/10k_users.md +++ b/doc/administration/reference_architectures/10k_users.md @@ -136,33 +136,31 @@ monitor .[#7FFFD4,norank]u--> elb ## Requirements -Before starting you should take note of the following requirements / guidance for the Reference Architecture: +Before starting, you should take note of the following requirements / guidance for this reference architecture. ### Supported CPUs -The Reference Architecture was built and tested on Google Cloud Platform (GCP) using the +This reference architecture was built and tested on Google Cloud Platform (GCP) using the [Intel Xeon E5 v3 (Haswell)](https://cloud.google.com/compute/docs/cpu-platforms) CPU platform. On different hardware you may find that adjustments, either lower or higher, are required for your CPU or node counts. For more information, see our [Sysbench](https://github.com/akopytov/sysbench)-based [CPU benchmarks](https://gitlab.com/gitlab-org/quality/performance/-/wikis/Reference-Architectures/GCP-CPU-Benchmarks). -### Supported Infrastructure +### Supported infrastructure -As a general guidance GitLab should run on most Infrastructure such as reputable Cloud Providers (AWS, GCP, Azure) and their services or self managed (ESXi) that meet both the specs detailed above as well as any requirements in this section although this does not constitute a guarantee for every potential permutation. +As a general guidance, GitLab should run on most infrastructure such as reputable Cloud Providers (AWS, GCP, Azure) and their services, or self managed (ESXi) that meet both the specs detailed above, as well as any requirements in this section. However, this does not constitute a guarantee for every potential permutation. -However please be aware of the following specific call outs: +Be aware of the following specific call outs: -- [Azure Database for PostgreSQL](https://docs.microsoft.com/en-us/azure/postgresql/#:~:text=Azure%20Database%20for%20PostgreSQL%20is,high%20availability%2C%20and%20dynamic%20scalability.) is [not recommended](https://gitlab.com/gitlab-org/quality/reference-architectures/-/issues/61) due to known performance issues / missing features. +- [Azure Database for PostgreSQL](https://docs.microsoft.com/en-us/azure/postgresql/#:~:text=Azure%20Database%20for%20PostgreSQL%20is,high%20availability%2C%20and%20dynamic%20scalability.) is [not recommended](https://gitlab.com/gitlab-org/quality/reference-architectures/-/issues/61) due to known performance issues or missing features. - [Azure Blob Storage](https://docs.microsoft.com/en-us/azure/storage/blobs/) is recommended to be configured with [Premium accounts](https://docs.microsoft.com/en-us/azure/storage/blobs/storage-blob-block-blob-premium) to ensure consistent performance. -### Network Latency +### Network latency -The Architecture has been designed for and [tested](index.md#testing-process-and-results) in an optimal network setup. +This architecture has been designed in an optimal network setup. Network latency should be kept to a strict minimum between components to allow for synchronous replication. -Network latency should be kept to a strict minimum between components to allow for synchronous replication. - -As a general guidance the architectures have been tested on main Cloud Providers all with a latency of <**5ms** between their components. As such, a consistent latency higher than this is not recommended. Note that this only applies for network latency between the components in an Architecture (e.g. Rails to Redis), this guidance doesn't apply for other setups such as Geo. +It has been [tested](index.md#testing-process-and-results) on main Cloud Providers with a latency of <**5ms** between their components. As such, a consistent latency higher than 5ms is not recommended. This only applies for network latency between the components in an architecture (for example Rails to Redis). It doesn't apply for other setups such as Geo. ### Praefect PostgreSQL diff --git a/doc/administration/reference_architectures/1k_users.md b/doc/administration/reference_architectures/1k_users.md index ca33e198ff11a2..5c3ee3a29b609c 100644 --- a/doc/administration/reference_architectures/1k_users.md +++ b/doc/administration/reference_architectures/1k_users.md @@ -31,33 +31,31 @@ many organizations. ## Requirements -Before starting you should take note of the following requirements / guidance for the Reference Architecture: +Before starting, you should take note of the following requirements / guidance for this reference architecture. ### Supported CPUs -The Reference Architecture was built and tested on Google Cloud Platform (GCP) using the +This reference architecture was built and tested on Google Cloud Platform (GCP) using the [Intel Xeon E5 v3 (Haswell)](https://cloud.google.com/compute/docs/cpu-platforms) CPU platform. On different hardware you may find that adjustments, either lower or higher, are required for your CPU or node counts. For more information, see our [Sysbench](https://github.com/akopytov/sysbench)-based [CPU benchmarks](https://gitlab.com/gitlab-org/quality/performance/-/wikis/Reference-Architectures/GCP-CPU-Benchmarks). -### Supported Infrastructure +### Supported infrastructure -As a general guidance GitLab should run on most Infrastructure such as reputable Cloud Providers (AWS, GCP, Azure) and their services or self managed (ESXi) that meet both the specs detailed above as well as any requirements in this section although this does not constitute a guarantee for every potential permutation. +As a general guidance, GitLab should run on most infrastructure such as reputable Cloud Providers (AWS, GCP, Azure) and their services, or self managed (ESXi) that meet both the specs detailed above, as well as any requirements in this section. However, this does not constitute a guarantee for every potential permutation. -However please be aware of the following specific call outs: +Be aware of the following specific call outs: -- [Azure Database for PostgreSQL](https://docs.microsoft.com/en-us/azure/postgresql/#:~:text=Azure%20Database%20for%20PostgreSQL%20is,high%20availability%2C%20and%20dynamic%20scalability.) is [not recommended](https://gitlab.com/gitlab-org/quality/reference-architectures/-/issues/61) due to known performance issues / missing features. +- [Azure Database for PostgreSQL](https://docs.microsoft.com/en-us/azure/postgresql/#:~:text=Azure%20Database%20for%20PostgreSQL%20is,high%20availability%2C%20and%20dynamic%20scalability.) is [not recommended](https://gitlab.com/gitlab-org/quality/reference-architectures/-/issues/61) due to known performance issues or missing features. - [Azure Blob Storage](https://docs.microsoft.com/en-us/azure/storage/blobs/) is recommended to be configured with [Premium accounts](https://docs.microsoft.com/en-us/azure/storage/blobs/storage-blob-block-blob-premium) to ensure consistent performance. -### Network Latency +### Network latency -The Architecture has been designed for and [tested](index.md#testing-process-and-results) in an optimal network setup. +This architecture has been designed in an optimal network setup. Network latency should be kept to a strict minimum between components to allow for synchronous replication. -Network latency should be kept to a strict minimum between components to allow for synchronous replication. - -As a general guidance the architectures have been tested on main Cloud Providers all with a latency of <**5ms** between their components. As such, a consistent latency higher than this is not recommended. Note that this only applies for network latency between the components in an Architecture (e.g. Rails to Redis), this guidance doesn't apply for other setups such as Geo. +It has been [tested](index.md#testing-process-and-results) on main Cloud Providers with a latency of <**5ms** between their components. As such, a consistent latency higher than 5ms is not recommended. This only applies for network latency between the components in an architecture (for example Rails to Redis). It doesn't apply for other setups such as Geo. ### Swap diff --git a/doc/administration/reference_architectures/25k_users.md b/doc/administration/reference_architectures/25k_users.md index 920915d8a131ef..2ac069ba80bd69 100644 --- a/doc/administration/reference_architectures/25k_users.md +++ b/doc/administration/reference_architectures/25k_users.md @@ -136,33 +136,31 @@ monitor .[#7FFFD4,norank]u--> elb ## Requirements -Before starting you should take note of the following requirements / guidance for the Reference Architecture: +Before starting, you should take note of the following requirements / guidance for this reference architecture. ### Supported CPUs -The Reference Architecture was built and tested on Google Cloud Platform (GCP) using the +This reference architecture was built and tested on Google Cloud Platform (GCP) using the [Intel Xeon E5 v3 (Haswell)](https://cloud.google.com/compute/docs/cpu-platforms) CPU platform. On different hardware you may find that adjustments, either lower or higher, are required for your CPU or node counts. For more information, see our [Sysbench](https://github.com/akopytov/sysbench)-based [CPU benchmarks](https://gitlab.com/gitlab-org/quality/performance/-/wikis/Reference-Architectures/GCP-CPU-Benchmarks). -### Supported Infrastructure +### Supported infrastructure -As a general guidance GitLab should run on most Infrastructure such as reputable Cloud Providers (AWS, GCP, Azure) and their services or self managed (ESXi) that meet both the specs detailed above as well as any requirements in this section although this does not constitute a guarantee for every potential permutation. +As a general guidance, GitLab should run on most infrastructure such as reputable Cloud Providers (AWS, GCP, Azure) and their services, or self managed (ESXi) that meet both the specs detailed above, as well as any requirements in this section. However, this does not constitute a guarantee for every potential permutation. -However please be aware of the following specific call outs: +Be aware of the following specific call outs: -- [Azure Database for PostgreSQL](https://docs.microsoft.com/en-us/azure/postgresql/#:~:text=Azure%20Database%20for%20PostgreSQL%20is,high%20availability%2C%20and%20dynamic%20scalability.) is [not recommended](https://gitlab.com/gitlab-org/quality/reference-architectures/-/issues/61) due to known performance issues / missing features. +- [Azure Database for PostgreSQL](https://docs.microsoft.com/en-us/azure/postgresql/#:~:text=Azure%20Database%20for%20PostgreSQL%20is,high%20availability%2C%20and%20dynamic%20scalability.) is [not recommended](https://gitlab.com/gitlab-org/quality/reference-architectures/-/issues/61) due to known performance issues or missing features. - [Azure Blob Storage](https://docs.microsoft.com/en-us/azure/storage/blobs/) is recommended to be configured with [Premium accounts](https://docs.microsoft.com/en-us/azure/storage/blobs/storage-blob-block-blob-premium) to ensure consistent performance. -### Network Latency +### Network latency -The Architecture has been designed for and [tested](index.md#testing-process-and-results) in an optimal network setup. +This architecture has been designed in an optimal network setup. Network latency should be kept to a strict minimum between components to allow for synchronous replication. -Network latency should be kept to a strict minimum between components to allow for synchronous replication. - -As a general guidance the architectures have been tested on main Cloud Providers all with a latency of <**5ms** between their components. As such, a consistent latency higher than this is not recommended. Note that this only applies for network latency between the components in an Architecture (e.g. Rails to Redis), this guidance doesn't apply for other setups such as Geo. +It has been [tested](index.md#testing-process-and-results) on main Cloud Providers with a latency of <**5ms** between their components. As such, a consistent latency higher than 5ms is not recommended. This only applies for network latency between the components in an architecture (for example Rails to Redis). It doesn't apply for other setups such as Geo. ### Praefect PostgreSQL diff --git a/doc/administration/reference_architectures/2k_users.md b/doc/administration/reference_architectures/2k_users.md index 408b4af2fc2db9..65118f3d83f3b6 100644 --- a/doc/administration/reference_architectures/2k_users.md +++ b/doc/administration/reference_architectures/2k_users.md @@ -72,33 +72,31 @@ monitor .[#7FFFD4,norank]u--> elb ## Requirements -Before starting you should take note of the following requirements / guidance for the Reference Architecture: +Before starting, you should take note of the following requirements / guidance for this reference architecture. ### Supported CPUs -The Reference Architecture was built and tested on Google Cloud Platform (GCP) using the +This reference architecture was built and tested on Google Cloud Platform (GCP) using the [Intel Xeon E5 v3 (Haswell)](https://cloud.google.com/compute/docs/cpu-platforms) CPU platform. On different hardware you may find that adjustments, either lower or higher, are required for your CPU or node counts. For more information, see our [Sysbench](https://github.com/akopytov/sysbench)-based [CPU benchmarks](https://gitlab.com/gitlab-org/quality/performance/-/wikis/Reference-Architectures/GCP-CPU-Benchmarks). -### Supported Infrastructure +### Supported infrastructure -As a general guidance GitLab should run on most Infrastructure such as reputable Cloud Providers (AWS, GCP, Azure) and their services or self managed (ESXi) that meet both the specs detailed above as well as any requirements in this section although this does not constitute a guarantee for every potential permutation. +As a general guidance, GitLab should run on most infrastructure such as reputable Cloud Providers (AWS, GCP, Azure) and their services, or self managed (ESXi) that meet both the specs detailed above, as well as any requirements in this section. However, this does not constitute a guarantee for every potential permutation. -However please be aware of the following specific call outs: +Be aware of the following specific call outs: -- [Azure Database for PostgreSQL](https://docs.microsoft.com/en-us/azure/postgresql/#:~:text=Azure%20Database%20for%20PostgreSQL%20is,high%20availability%2C%20and%20dynamic%20scalability.) is [not recommended](https://gitlab.com/gitlab-org/quality/reference-architectures/-/issues/61) due to known performance issues / missing features. +- [Azure Database for PostgreSQL](https://docs.microsoft.com/en-us/azure/postgresql/#:~:text=Azure%20Database%20for%20PostgreSQL%20is,high%20availability%2C%20and%20dynamic%20scalability.) is [not recommended](https://gitlab.com/gitlab-org/quality/reference-architectures/-/issues/61) due to known performance issues or missing features. - [Azure Blob Storage](https://docs.microsoft.com/en-us/azure/storage/blobs/) is recommended to be configured with [Premium accounts](https://docs.microsoft.com/en-us/azure/storage/blobs/storage-blob-block-blob-premium) to ensure consistent performance. -### Network Latency +### Network latency -The Architecture has been designed for and [tested](index.md#testing-process-and-results) in an optimal network setup. +This architecture has been designed in an optimal network setup. Network latency should be kept to a strict minimum between components to allow for synchronous replication. -Network latency should be kept to a strict minimum between components to allow for synchronous replication. - -As a general guidance the architectures have been tested on main Cloud Providers all with a latency of <**5ms** between their components. As such, a consistent latency higher than this is not recommended. Note that this only applies for network latency between the components in an Architecture (e.g. Rails to Redis), this guidance doesn't apply for other setups such as Geo. +It has been [tested](index.md#testing-process-and-results) on main Cloud Providers with a latency of <**5ms** between their components. As such, a consistent latency higher than 5ms is not recommended. This only applies for network latency between the components in an architecture (for example Rails to Redis). It doesn't apply for other setups such as Geo. ## Setup components diff --git a/doc/administration/reference_architectures/3k_users.md b/doc/administration/reference_architectures/3k_users.md index fe74ec163cd353..13919a2a71e922 100644 --- a/doc/administration/reference_architectures/3k_users.md +++ b/doc/administration/reference_architectures/3k_users.md @@ -142,33 +142,31 @@ monitor .[#7FFFD4,norank]u--> elb ## Requirements -Before starting you should take note of the following requirements / guidance for the Reference Architecture: +Before starting, you should take note of the following requirements / guidance for this reference architecture. ### Supported CPUs -The Reference Architecture was built and tested on Google Cloud Platform (GCP) using the +This reference architecture was built and tested on Google Cloud Platform (GCP) using the [Intel Xeon E5 v3 (Haswell)](https://cloud.google.com/compute/docs/cpu-platforms) CPU platform. On different hardware you may find that adjustments, either lower or higher, are required for your CPU or node counts. For more information, see our [Sysbench](https://github.com/akopytov/sysbench)-based [CPU benchmarks](https://gitlab.com/gitlab-org/quality/performance/-/wikis/Reference-Architectures/GCP-CPU-Benchmarks). -### Supported Infrastructure +### Supported infrastructure -As a general guidance GitLab should run on most Infrastructure such as reputable Cloud Providers (AWS, GCP, Azure) and their services or self managed (ESXi) that meet both the specs detailed above as well as any requirements in this section although this does not constitute a guarantee for every potential permutation. +As a general guidance, GitLab should run on most infrastructure such as reputable Cloud Providers (AWS, GCP, Azure) and their services, or self managed (ESXi) that meet both the specs detailed above, as well as any requirements in this section. However, this does not constitute a guarantee for every potential permutation. -However please be aware of the following specific call outs: +Be aware of the following specific call outs: -- [Azure Database for PostgreSQL](https://docs.microsoft.com/en-us/azure/postgresql/#:~:text=Azure%20Database%20for%20PostgreSQL%20is,high%20availability%2C%20and%20dynamic%20scalability.) is [not recommended](https://gitlab.com/gitlab-org/quality/reference-architectures/-/issues/61) due to known performance issues / missing features. +- [Azure Database for PostgreSQL](https://docs.microsoft.com/en-us/azure/postgresql/#:~:text=Azure%20Database%20for%20PostgreSQL%20is,high%20availability%2C%20and%20dynamic%20scalability.) is [not recommended](https://gitlab.com/gitlab-org/quality/reference-architectures/-/issues/61) due to known performance issues or missing features. - [Azure Blob Storage](https://docs.microsoft.com/en-us/azure/storage/blobs/) is recommended to be configured with [Premium accounts](https://docs.microsoft.com/en-us/azure/storage/blobs/storage-blob-block-blob-premium) to ensure consistent performance. -### Network Latency +### Network latency -The Architecture has been designed for and [tested](index.md#testing-process-and-results) in an optimal network setup. +This architecture has been designed in an optimal network setup. Network latency should be kept to a strict minimum between components to allow for synchronous replication. -Network latency should be kept to a strict minimum between components to allow for synchronous replication. - -As a general guidance the architectures have been tested on main Cloud Providers all with a latency of <**5ms** between their components. As such, a consistent latency higher than this is not recommended. Note that this only applies for network latency between the components in an Architecture (e.g. Rails to Redis), this guidance doesn't apply for other setups such as Geo. +It has been [tested](index.md#testing-process-and-results) on main Cloud Providers with a latency of <**5ms** between their components. As such, a consistent latency higher than 5ms is not recommended. This only applies for network latency between the components in an architecture (for example Rails to Redis). It doesn't apply for other setups such as Geo. ### Praefect PostgreSQL diff --git a/doc/administration/reference_architectures/50k_users.md b/doc/administration/reference_architectures/50k_users.md index 10a9a606bfb853..dcf8ffdfec152d 100644 --- a/doc/administration/reference_architectures/50k_users.md +++ b/doc/administration/reference_architectures/50k_users.md @@ -136,33 +136,31 @@ monitor .[#7FFFD4,norank]u--> elb ## Requirements -Before starting you should take note of the following requirements / guidance for the Reference Architecture: +Before starting, you should take note of the following requirements / guidance for this reference architecture. ### Supported CPUs -The Reference Architecture was built and tested on Google Cloud Platform (GCP) using the +This reference architecture was built and tested on Google Cloud Platform (GCP) using the [Intel Xeon E5 v3 (Haswell)](https://cloud.google.com/compute/docs/cpu-platforms) CPU platform. On different hardware you may find that adjustments, either lower or higher, are required for your CPU or node counts. For more information, see our [Sysbench](https://github.com/akopytov/sysbench)-based [CPU benchmarks](https://gitlab.com/gitlab-org/quality/performance/-/wikis/Reference-Architectures/GCP-CPU-Benchmarks). -### Supported Infrastructure +### Supported infrastructure -As a general guidance GitLab should run on most Infrastructure such as reputable Cloud Providers (AWS, GCP, Azure) and their services or self managed (ESXi) that meet both the specs detailed above as well as any requirements in this section although this does not constitute a guarantee for every potential permutation. +As a general guidance, GitLab should run on most infrastructure such as reputable Cloud Providers (AWS, GCP, Azure) and their services, or self managed (ESXi) that meet both the specs detailed above, as well as any requirements in this section. However, this does not constitute a guarantee for every potential permutation. -However please be aware of the following specific call outs: +Be aware of the following specific call outs: -- [Azure Database for PostgreSQL](https://docs.microsoft.com/en-us/azure/postgresql/#:~:text=Azure%20Database%20for%20PostgreSQL%20is,high%20availability%2C%20and%20dynamic%20scalability.) is [not recommended](https://gitlab.com/gitlab-org/quality/reference-architectures/-/issues/61) due to known performance issues / missing features. +- [Azure Database for PostgreSQL](https://docs.microsoft.com/en-us/azure/postgresql/#:~:text=Azure%20Database%20for%20PostgreSQL%20is,high%20availability%2C%20and%20dynamic%20scalability.) is [not recommended](https://gitlab.com/gitlab-org/quality/reference-architectures/-/issues/61) due to known performance issues or missing features. - [Azure Blob Storage](https://docs.microsoft.com/en-us/azure/storage/blobs/) is recommended to be configured with [Premium accounts](https://docs.microsoft.com/en-us/azure/storage/blobs/storage-blob-block-blob-premium) to ensure consistent performance. -### Network Latency +### Network latency -The Architecture has been designed for and [tested](index.md#testing-process-and-results) in an optimal network setup. +This architecture has been designed in an optimal network setup. Network latency should be kept to a strict minimum between components to allow for synchronous replication. -Network latency should be kept to a strict minimum between components to allow for synchronous replication. - -As a general guidance the architectures have been tested on main Cloud Providers all with a latency of <**5ms** between their components. As such, a consistent latency higher than this is not recommended. Note that this only applies for network latency between the components in an Architecture (e.g. Rails to Redis), this guidance doesn't apply for other setups such as Geo. +It has been [tested](index.md#testing-process-and-results) on main Cloud Providers with a latency of <**5ms** between their components. As such, a consistent latency higher than 5ms is not recommended. This only applies for network latency between the components in an architecture (for example Rails to Redis). It doesn't apply for other setups such as Geo. ### Praefect PostgreSQL diff --git a/doc/administration/reference_architectures/5k_users.md b/doc/administration/reference_architectures/5k_users.md index 071163b3121ea0..b36acaa4e246a0 100644 --- a/doc/administration/reference_architectures/5k_users.md +++ b/doc/administration/reference_architectures/5k_users.md @@ -139,33 +139,31 @@ monitor .[#7FFFD4,norank]u--> elb ## Requirements -Before starting you should take note of the following requirements / guidance for the Reference Architecture: +Before starting, you should take note of the following requirements / guidance for this reference architecture. ### Supported CPUs -The Reference Architecture was built and tested on Google Cloud Platform (GCP) using the +This reference architecture was built and tested on Google Cloud Platform (GCP) using the [Intel Xeon E5 v3 (Haswell)](https://cloud.google.com/compute/docs/cpu-platforms) CPU platform. On different hardware you may find that adjustments, either lower or higher, are required for your CPU or node counts. For more information, see our [Sysbench](https://github.com/akopytov/sysbench)-based [CPU benchmarks](https://gitlab.com/gitlab-org/quality/performance/-/wikis/Reference-Architectures/GCP-CPU-Benchmarks). -### Supported Infrastructure +### Supported infrastructure -As a general guidance GitLab should run on most Infrastructure such as reputable Cloud Providers (AWS, GCP, Azure) and their services or self managed (ESXi) that meet both the specs detailed above as well as any requirements in this section although this does not constitute a guarantee for every potential permutation. +As a general guidance, GitLab should run on most infrastructure such as reputable Cloud Providers (AWS, GCP, Azure) and their services, or self managed (ESXi) that meet both the specs detailed above, as well as any requirements in this section. However, this does not constitute a guarantee for every potential permutation. -However please be aware of the following specific call outs: +Be aware of the following specific call outs: -- [Azure Database for PostgreSQL](https://docs.microsoft.com/en-us/azure/postgresql/#:~:text=Azure%20Database%20for%20PostgreSQL%20is,high%20availability%2C%20and%20dynamic%20scalability.) is [not recommended](https://gitlab.com/gitlab-org/quality/reference-architectures/-/issues/61) due to known performance issues / missing features. +- [Azure Database for PostgreSQL](https://docs.microsoft.com/en-us/azure/postgresql/#:~:text=Azure%20Database%20for%20PostgreSQL%20is,high%20availability%2C%20and%20dynamic%20scalability.) is [not recommended](https://gitlab.com/gitlab-org/quality/reference-architectures/-/issues/61) due to known performance issues or missing features. - [Azure Blob Storage](https://docs.microsoft.com/en-us/azure/storage/blobs/) is recommended to be configured with [Premium accounts](https://docs.microsoft.com/en-us/azure/storage/blobs/storage-blob-block-blob-premium) to ensure consistent performance. -### Network Latency +### Network latency -The Architecture has been designed for and [tested](index.md#testing-process-and-results) in an optimal network setup. +This architecture has been designed in an optimal network setup. Network latency should be kept to a strict minimum between components to allow for synchronous replication. -Network latency should be kept to a strict minimum between components to allow for synchronous replication. - -As a general guidance the architectures have been tested on main Cloud Providers all with a latency of <**5ms** between their components. As such, a consistent latency higher than this is not recommended. Note that this only applies for network latency between the components in an Architecture (e.g. Rails to Redis), this guidance doesn't apply for other setups such as Geo. +It has been [tested](index.md#testing-process-and-results) on main Cloud Providers with a latency of <**5ms** between their components. As such, a consistent latency higher than 5ms is not recommended. This only applies for network latency between the components in an architecture (for example Rails to Redis). It doesn't apply for other setups such as Geo. ### Praefect PostgreSQL diff --git a/doc/administration/reference_architectures/index.md b/doc/administration/reference_architectures/index.md index d43b31e052f8b1..f624b28dd3c426 100644 --- a/doc/administration/reference_architectures/index.md +++ b/doc/administration/reference_architectures/index.md @@ -192,22 +192,25 @@ In the specific case you have the requirement to achieve HA but have a lower use For more details, [refer to this section in the architecture's documentation](3k_users.md#supported-modifications-for-lower-user-counts-ha). -## Testing Process and Results +## Testing process and results -The [Quality Engineering - Enablement team](https://about.gitlab.com/handbook/engineering/quality/quality-engineering/) regularly smoke / performance test the Reference Architectures to ensure they remain compliant. +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. -In this section we detail some of the process as well as the results. +In this section, we detail some of the process as well as the results. -Firstly, please note the following about the testing process: +Note the following about the testing process: -- Testing occurs against all main Reference Architectures and Cloud Providers in an automated and ad hoc fashion. -- This is achieved through two tools built by the team - The [GitLab Environment Toolkit](https://gitlab.com/gitlab-org/quality/gitlab-environment-toolkit) for building the environments and the [GitLab Performance Tool](https://gitlab.com/gitlab-org/quality/performance) for performance testing. -- We aim to have a "test smart" approach where architectures tested haven 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 / Cloud Providers as well as Cloud Native Hybrids. +- Testing occurs against all main reference architectures and cloud providers in an automated and ad-hoc fashion. + This is achieved through two tools built by the team: + - The [GitLab Environment Toolkit](https://gitlab.com/gitlab-org/quality/gitlab-environment-toolkit) for building the environments. + - The [GitLab Performance Tool](https://gitlab.com/gitlab-org/quality/performance) for performance testing. +- 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. -Next, the following table details the testing done currently against the Reference Architectures along with the frequency and results: +Τhe following table details the testing done against the reference architectures along with the frequency and results. +Testing is continuously evaluated and iterated on, so the table is constantly updated. -| Reference Architecture Size | GCP | AWS | Azure | +| Reference architecture size | GCP | AWS | Azure | |-----------------------------|-----------------------------------------------------------------------------------------------------|-----|-------| | 1k | [Omnibus - Daily](https://gitlab.com/gitlab-org/quality/performance/-/wikis/Benchmarks/Latest/1k) | - | - | | 2k | [Omnibus - Daily](https://gitlab.com/gitlab-org/quality/performance/-/wikis/Benchmarks/Latest/2k) | - | - | @@ -216,6 +219,3 @@ Next, the following table details the testing done currently against the Referen | 10k | [Omnibus - Daily](https://gitlab.com/gitlab-org/quality/performance/-/wikis/Benchmarks/Latest/10k)
[Omnibus (inc Cloud Services) - Ad-Hoc](https://gitlab.com/gitlab-org/quality/performance/-/wikis/Past-Results/10k)
[Cloud Native Hybrid - Ad-Hoc](https://gitlab.com/gitlab-org/quality/performance/-/wikis/Past-Results/10k-Cloud-Native-Hybrid) | [Omnibus (inc Cloud Services) - Ad-Hoc](https://gitlab.com/gitlab-org/quality/performance/-/wikis/Past-Results/10k) | [Omnibus - Ad-Hoc](https://gitlab.com/gitlab-org/quality/performance/-/wikis/Past-Results/10k) | | 25k | [Omnibus - Weekly](https://gitlab.com/gitlab-org/quality/performance/-/wikis/Benchmarks/Latest/25k) | - | [Omnibus - Ad-Hoc](https://gitlab.com/gitlab-org/quality/performance/-/wikis/Past-Results/25k) | | 50k | [Omnibus - Weekly](https://gitlab.com/gitlab-org/quality/performance/-/wikis/Benchmarks/Latest/50k) | [Omnibus (inc Cloud Services) - Ad-Hoc](https://gitlab.com/gitlab-org/quality/performance/-/wikis/Past-Results/50k) | - | - -NOTE: -Testing is continuously evaluated and iterated on. As this occurs ths above table will be updated. -- GitLab From 10c3279e6cfe5b08b7b065945df000108d025a14 Mon Sep 17 00:00:00 2001 From: Grant Young Date: Wed, 15 Dec 2021 14:15:34 +0000 Subject: [PATCH 6/8] Adjust Network Latency text to be more correct --- doc/administration/reference_architectures/10k_users.md | 6 ------ doc/administration/reference_architectures/1k_users.md | 6 ------ doc/administration/reference_architectures/25k_users.md | 6 ------ doc/administration/reference_architectures/2k_users.md | 6 ------ doc/administration/reference_architectures/3k_users.md | 6 ------ doc/administration/reference_architectures/50k_users.md | 6 ------ doc/administration/reference_architectures/5k_users.md | 6 ------ doc/administration/reference_architectures/index.md | 1 + 8 files changed, 1 insertion(+), 42 deletions(-) diff --git a/doc/administration/reference_architectures/10k_users.md b/doc/administration/reference_architectures/10k_users.md index b27b62061407ef..fa8dfdf667b1be 100644 --- a/doc/administration/reference_architectures/10k_users.md +++ b/doc/administration/reference_architectures/10k_users.md @@ -156,12 +156,6 @@ Be aware of the following specific call outs: - [Azure Database for PostgreSQL](https://docs.microsoft.com/en-us/azure/postgresql/#:~:text=Azure%20Database%20for%20PostgreSQL%20is,high%20availability%2C%20and%20dynamic%20scalability.) is [not recommended](https://gitlab.com/gitlab-org/quality/reference-architectures/-/issues/61) due to known performance issues or missing features. - [Azure Blob Storage](https://docs.microsoft.com/en-us/azure/storage/blobs/) is recommended to be configured with [Premium accounts](https://docs.microsoft.com/en-us/azure/storage/blobs/storage-blob-block-blob-premium) to ensure consistent performance. -### Network latency - -This architecture has been designed in an optimal network setup. Network latency should be kept to a strict minimum between components to allow for synchronous replication. - -It has been [tested](index.md#testing-process-and-results) on main Cloud Providers with a latency of <**5ms** between their components. As such, a consistent latency higher than 5ms is not recommended. This only applies for network latency between the components in an architecture (for example Rails to Redis). It doesn't apply for other setups such as Geo. - ### Praefect PostgreSQL It's worth noting that at this time [Praefect requires its own database server](../gitaly/praefect.md#postgresql) and diff --git a/doc/administration/reference_architectures/1k_users.md b/doc/administration/reference_architectures/1k_users.md index 5c3ee3a29b609c..2393bd82f4f0ed 100644 --- a/doc/administration/reference_architectures/1k_users.md +++ b/doc/administration/reference_architectures/1k_users.md @@ -51,12 +51,6 @@ Be aware of the following specific call outs: - [Azure Database for PostgreSQL](https://docs.microsoft.com/en-us/azure/postgresql/#:~:text=Azure%20Database%20for%20PostgreSQL%20is,high%20availability%2C%20and%20dynamic%20scalability.) is [not recommended](https://gitlab.com/gitlab-org/quality/reference-architectures/-/issues/61) due to known performance issues or missing features. - [Azure Blob Storage](https://docs.microsoft.com/en-us/azure/storage/blobs/) is recommended to be configured with [Premium accounts](https://docs.microsoft.com/en-us/azure/storage/blobs/storage-blob-block-blob-premium) to ensure consistent performance. -### Network latency - -This architecture has been designed in an optimal network setup. Network latency should be kept to a strict minimum between components to allow for synchronous replication. - -It has been [tested](index.md#testing-process-and-results) on main Cloud Providers with a latency of <**5ms** between their components. As such, a consistent latency higher than 5ms is not recommended. This only applies for network latency between the components in an architecture (for example Rails to Redis). It doesn't apply for other setups such as Geo. - ### Swap In addition to the stated configurations, we recommend having at least 2 GB of diff --git a/doc/administration/reference_architectures/25k_users.md b/doc/administration/reference_architectures/25k_users.md index 2ac069ba80bd69..24b3350bd75511 100644 --- a/doc/administration/reference_architectures/25k_users.md +++ b/doc/administration/reference_architectures/25k_users.md @@ -156,12 +156,6 @@ Be aware of the following specific call outs: - [Azure Database for PostgreSQL](https://docs.microsoft.com/en-us/azure/postgresql/#:~:text=Azure%20Database%20for%20PostgreSQL%20is,high%20availability%2C%20and%20dynamic%20scalability.) is [not recommended](https://gitlab.com/gitlab-org/quality/reference-architectures/-/issues/61) due to known performance issues or missing features. - [Azure Blob Storage](https://docs.microsoft.com/en-us/azure/storage/blobs/) is recommended to be configured with [Premium accounts](https://docs.microsoft.com/en-us/azure/storage/blobs/storage-blob-block-blob-premium) to ensure consistent performance. -### Network latency - -This architecture has been designed in an optimal network setup. Network latency should be kept to a strict minimum between components to allow for synchronous replication. - -It has been [tested](index.md#testing-process-and-results) on main Cloud Providers with a latency of <**5ms** between their components. As such, a consistent latency higher than 5ms is not recommended. This only applies for network latency between the components in an architecture (for example Rails to Redis). It doesn't apply for other setups such as Geo. - ### Praefect PostgreSQL It's worth noting that at this time [Praefect requires its own database server](../gitaly/praefect.md#postgresql) and diff --git a/doc/administration/reference_architectures/2k_users.md b/doc/administration/reference_architectures/2k_users.md index 65118f3d83f3b6..f72c0877ddb708 100644 --- a/doc/administration/reference_architectures/2k_users.md +++ b/doc/administration/reference_architectures/2k_users.md @@ -92,12 +92,6 @@ Be aware of the following specific call outs: - [Azure Database for PostgreSQL](https://docs.microsoft.com/en-us/azure/postgresql/#:~:text=Azure%20Database%20for%20PostgreSQL%20is,high%20availability%2C%20and%20dynamic%20scalability.) is [not recommended](https://gitlab.com/gitlab-org/quality/reference-architectures/-/issues/61) due to known performance issues or missing features. - [Azure Blob Storage](https://docs.microsoft.com/en-us/azure/storage/blobs/) is recommended to be configured with [Premium accounts](https://docs.microsoft.com/en-us/azure/storage/blobs/storage-blob-block-blob-premium) to ensure consistent performance. -### Network latency - -This architecture has been designed in an optimal network setup. Network latency should be kept to a strict minimum between components to allow for synchronous replication. - -It has been [tested](index.md#testing-process-and-results) on main Cloud Providers with a latency of <**5ms** between their components. As such, a consistent latency higher than 5ms is not recommended. This only applies for network latency between the components in an architecture (for example Rails to Redis). It doesn't apply for other setups such as Geo. - ## Setup components To set up GitLab and its components to accommodate up to 2,000 users: diff --git a/doc/administration/reference_architectures/3k_users.md b/doc/administration/reference_architectures/3k_users.md index 13919a2a71e922..a16c95befc2090 100644 --- a/doc/administration/reference_architectures/3k_users.md +++ b/doc/administration/reference_architectures/3k_users.md @@ -162,12 +162,6 @@ Be aware of the following specific call outs: - [Azure Database for PostgreSQL](https://docs.microsoft.com/en-us/azure/postgresql/#:~:text=Azure%20Database%20for%20PostgreSQL%20is,high%20availability%2C%20and%20dynamic%20scalability.) is [not recommended](https://gitlab.com/gitlab-org/quality/reference-architectures/-/issues/61) due to known performance issues or missing features. - [Azure Blob Storage](https://docs.microsoft.com/en-us/azure/storage/blobs/) is recommended to be configured with [Premium accounts](https://docs.microsoft.com/en-us/azure/storage/blobs/storage-blob-block-blob-premium) to ensure consistent performance. -### Network latency - -This architecture has been designed in an optimal network setup. Network latency should be kept to a strict minimum between components to allow for synchronous replication. - -It has been [tested](index.md#testing-process-and-results) on main Cloud Providers with a latency of <**5ms** between their components. As such, a consistent latency higher than 5ms is not recommended. This only applies for network latency between the components in an architecture (for example Rails to Redis). It doesn't apply for other setups such as Geo. - ### Praefect PostgreSQL It's worth noting that at this time [Praefect requires its own database server](../gitaly/praefect.md#postgresql) and diff --git a/doc/administration/reference_architectures/50k_users.md b/doc/administration/reference_architectures/50k_users.md index dcf8ffdfec152d..4f576fc1c19b98 100644 --- a/doc/administration/reference_architectures/50k_users.md +++ b/doc/administration/reference_architectures/50k_users.md @@ -156,12 +156,6 @@ Be aware of the following specific call outs: - [Azure Database for PostgreSQL](https://docs.microsoft.com/en-us/azure/postgresql/#:~:text=Azure%20Database%20for%20PostgreSQL%20is,high%20availability%2C%20and%20dynamic%20scalability.) is [not recommended](https://gitlab.com/gitlab-org/quality/reference-architectures/-/issues/61) due to known performance issues or missing features. - [Azure Blob Storage](https://docs.microsoft.com/en-us/azure/storage/blobs/) is recommended to be configured with [Premium accounts](https://docs.microsoft.com/en-us/azure/storage/blobs/storage-blob-block-blob-premium) to ensure consistent performance. -### Network latency - -This architecture has been designed in an optimal network setup. Network latency should be kept to a strict minimum between components to allow for synchronous replication. - -It has been [tested](index.md#testing-process-and-results) on main Cloud Providers with a latency of <**5ms** between their components. As such, a consistent latency higher than 5ms is not recommended. This only applies for network latency between the components in an architecture (for example Rails to Redis). It doesn't apply for other setups such as Geo. - ### Praefect PostgreSQL It's worth noting that at this time [Praefect requires its own database server](../gitaly/praefect.md#postgresql) and diff --git a/doc/administration/reference_architectures/5k_users.md b/doc/administration/reference_architectures/5k_users.md index b36acaa4e246a0..92950806cfbd3b 100644 --- a/doc/administration/reference_architectures/5k_users.md +++ b/doc/administration/reference_architectures/5k_users.md @@ -159,12 +159,6 @@ Be aware of the following specific call outs: - [Azure Database for PostgreSQL](https://docs.microsoft.com/en-us/azure/postgresql/#:~:text=Azure%20Database%20for%20PostgreSQL%20is,high%20availability%2C%20and%20dynamic%20scalability.) is [not recommended](https://gitlab.com/gitlab-org/quality/reference-architectures/-/issues/61) due to known performance issues or missing features. - [Azure Blob Storage](https://docs.microsoft.com/en-us/azure/storage/blobs/) is recommended to be configured with [Premium accounts](https://docs.microsoft.com/en-us/azure/storage/blobs/storage-blob-block-blob-premium) to ensure consistent performance. -### Network latency - -This architecture has been designed in an optimal network setup. Network latency should be kept to a strict minimum between components to allow for synchronous replication. - -It has been [tested](index.md#testing-process-and-results) on main Cloud Providers with a latency of <**5ms** between their components. As such, a consistent latency higher than 5ms is not recommended. This only applies for network latency between the components in an architecture (for example Rails to Redis). It doesn't apply for other setups such as Geo. - ### Praefect PostgreSQL It's worth noting that at this time [Praefect requires its own database server](../gitaly/praefect.md#postgresql) and diff --git a/doc/administration/reference_architectures/index.md b/doc/administration/reference_architectures/index.md index f624b28dd3c426..5684558b775b99 100644 --- a/doc/administration/reference_architectures/index.md +++ b/doc/administration/reference_architectures/index.md @@ -204,6 +204,7 @@ Note the following about the testing process: This is achieved through two tools built by the team: - The [GitLab Environment Toolkit](https://gitlab.com/gitlab-org/quality/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 on all Cloud Providers were measured at <5ms. Note that this is is shared as an observation and not 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. -- GitLab From fe3a6ff69fd636fce4e1f8bfffa92769a45bf784 Mon Sep 17 00:00:00 2001 From: Grant Young Date: Wed, 15 Dec 2021 14:18:44 +0000 Subject: [PATCH 7/8] Adjust latency text further --- doc/administration/reference_architectures/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/administration/reference_architectures/index.md b/doc/administration/reference_architectures/index.md index 5684558b775b99..329a06a827161b 100644 --- a/doc/administration/reference_architectures/index.md +++ b/doc/administration/reference_architectures/index.md @@ -204,7 +204,7 @@ Note the following about the testing process: This is achieved through two tools built by the team: - The [GitLab Environment Toolkit](https://gitlab.com/gitlab-org/quality/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 on all Cloud Providers were measured at <5ms. Note that this is is shared as an observation and not an implicit recommendation. +- Network latency on the test environments between components on all Cloud Providers were measured at <5ms. Note that this is 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. -- GitLab From 5e759f6f42250deeef9dd047531e9276e4fd4b1a Mon Sep 17 00:00:00 2001 From: Grant Young Date: Wed, 15 Dec 2021 14:31:58 +0000 Subject: [PATCH 8/8] Remove duplicated word --- doc/administration/reference_architectures/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/administration/reference_architectures/index.md b/doc/administration/reference_architectures/index.md index 329a06a827161b..e0b82d03a8338e 100644 --- a/doc/administration/reference_architectures/index.md +++ b/doc/administration/reference_architectures/index.md @@ -204,7 +204,7 @@ Note the following about the testing process: This is achieved through two tools built by the team: - The [GitLab Environment Toolkit](https://gitlab.com/gitlab-org/quality/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 is shared as an observation and not as an implicit recommendation. +- 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. -- GitLab