Explore removing Node Selector and switching to unified node pools in Cloud Native Hybrid Reference Architectures
- Originated from the discussion https://gitlab.com/gitlab-org/gitlab/-/merge_requests/62316#note_596456387
The proposal is to remove Node Selector in Cloud Native charts for Reference Architecture to [remove complexity](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/62316#note_597259791).
Initial [test results with 50k environment](https://gitlab.com/gitlab-org/quality/reference-architectures/-/issues/24#note_604430039) showed that 50k Hybrid with node selector is slightly more performant than without, but the results are comparable:
<details>
<summary>GPT results comparison</summary>
NAME | TARGET |no node selector| with node selector
---------------------------------------------------------|---------|----------------|------------------------------
api_v4_groups | 500ms | 152.33ms (-) | 137.97ms (**{+-2.87%+}**)
api_v4_groups_group | 7500ms | 2069.28ms (-) | 1904.24ms (**{+-33.01%+}**)
api_v4_groups_group_subgroups | 500ms | 220.65ms (-) | 160.58ms (**{+-12.01%+}**)
api_v4_groups_issues | 3500ms | 3145.41ms (-) | 3223.31ms (_{-+15.58%-}_)
api_v4_groups_merge_requests | 3500ms | 3003.68ms (-) | 3167.19ms (_{-+32.7%-}_)
api_v4_groups_projects | 3500ms | 2070.42ms (-) | 2069.22ms (**{+-0.24%+}**)
api_v4_projects | 7000ms | 4506.66ms (-) | 4154.46ms (**{+-70.44%+}**)
api_v4_projects_deploy_keys | 500ms | 99.58ms (-) | 86.54ms (**{+-2.61%+}**)
api_v4_projects_issues | 500ms | 722.40ms (-) | 481.37ms (**{+-48.21%+}**)
api_v4_projects_issues_issue | 1500ms | 704.19ms (-) | 578.46ms (**{+-25.15%+}**)
api_v4_projects_issues_search | 12000ms | 7855.40ms (-) | 7870.82ms (_{-+3.08%-}_)
api_v4_projects_languages | 500ms | 85.98ms (-) | 81.56ms (**{+-0.88%+}**)
api_v4_projects_merge_requests | 1000ms | 507.74ms (-) | 385.57ms (**{+-24.43%+}**)
api_v4_projects_merge_requests_merge_request | 2000ms | 4997.89ms (-) | 4192.57ms (**{+-161.06%+}**)
api_v4_projects_merge_requests_merge_request_changes | 3500ms | 6939.63ms (-) | 5860.28ms (**{+-215.87%+}**)
api_v4_projects_merge_requests_merge_request_commits | 500ms | 120.84ms (-) | 117.24ms (**{+-0.72%+}**)
api_v4_projects_merge_requests_merge_request_discussions | 500ms | 294.55ms (-) | 284.56ms (**{+-2.0%+}**)
api_v4_projects_project | 500ms | 179.62ms (-) | 176.31ms (**{+-0.66%+}**)
api_v4_projects_project_pipelines | 500ms | 103.98ms (-) | 103.65ms (**{+-0.07%+}**)
api_v4_projects_project_pipelines_pipeline | 500ms | 121.16ms (-) | 118.75ms (**{+-0.48%+}**)
api_v4_projects_project_services | 500ms | 86.68ms (-) | 84.08ms (**{+-0.52%+}**)
api_v4_projects_releases | 500ms | 136.69ms (-) | 135.88ms (**{+-0.16%+}**)
api_v4_projects_repository_branches | 500ms | 86.13ms (-) | 82.91ms (**{+-0.64%+}**)
api_v4_projects_repository_branches_branch | 500ms | 130.51ms (-) | 116.59ms (**{+-2.78%+}**)
api_v4_projects_repository_branches_search | 6000ms | 85.44ms (-) | 83.06ms (**{+-0.48%+}**)
api_v4_projects_repository_commits | 500ms | 111.87ms (-) | 111.10ms (**{+-0.15%+}**)
api_v4_projects_repository_commits_commit | 500ms | 166.64ms (-) | 163.18ms (**{+-0.69%+}**)
api_v4_projects_repository_commits_commit_diff | 500ms | 175.60ms (-) | 169.47ms (**{+-1.23%+}**)
api_v4_projects_repository_compare | 8000ms | 6443.07ms (-) | 5818.58ms (**{+-124.9%+}**)
api_v4_projects_repository_files_file | 500ms | 183.24ms (-) | 170.69ms (**{+-2.51%+}**)
api_v4_projects_repository_files_file_blame | 35000ms | 13481.83ms (-) | 11482.64ms (**{+-399.84%+}**)
api_v4_projects_repository_files_file_raw | 500ms | 134.71ms (-) | 126.26ms (**{+-1.69%+}**)
api_v4_projects_repository_tags | 10000ms | 7715.89ms (-) | 5982.40ms (**{+-346.7%+}**)
api_v4_projects_repository_tree | 500ms | 138.00ms (-) | 129.74ms (**{+-1.65%+}**)
api_v4_user | 500ms | 77.94ms (-) | 73.99ms (**{+-0.79%+}**)
api_v4_users | 500ms | 88.11ms (-) | 83.52ms (**{+-0.92%+}**)
git_ls_remote | 500ms | 93.54ms (-) | 89.87ms (**{+-0.73%+}**)
git_pull | 500ms | 115.95ms (-) | 112.47ms (**{+-0.7%+}**)
git_push | 1000ms | 464.26ms (-) | 462.10ms (**{+-0.43%+}**)
scenario_api_list_group_variables | 500ms | 124.00ms (-) | 119.17ms (**{+-0.97%+}**)
scenario_api_list_project_variables | 500ms | 139.24ms (-) | 133.30ms (**{+-1.19%+}**)
scenario_api_new_branches | 1500ms | 359.86ms (-) | 344.37ms (**{+-3.1%+}**)
scenario_api_new_commits | 700ms | 457.17ms (-) | 448.84ms (**{+-1.67%+}**)
scenario_api_new_group_variables | 500ms | 102.88ms (-) | 95.45ms (**{+-1.49%+}**)
scenario_api_new_issues | 2500ms | 256.86ms (-) | 247.65ms (**{+-1.84%+}**)
scenario_api_new_project_variables | 500ms | 122.90ms (-) | 107.78ms (**{+-3.02%+}**)
web_group | 500ms | 217.90ms (-) | 202.68ms (**{+-3.04%+}**)
web_group_issues | 500ms | 374.95ms (-) | 361.78ms (**{+-2.63%+}**)
web_group_merge_requests | 500ms | 345.91ms (-) | 329.42ms (**{+-3.3%+}**)
web_project | 500ms | 352.79ms (-) | 329.43ms (**{+-4.67%+}**)
web_project_branches | 1000ms | 844.15ms (-) | 742.62ms (**{+-20.31%+}**)
web_project_branches_search | 1300ms | 948.19ms (-) | 853.02ms (**{+-19.03%+}**)
web_project_commit | 10000ms | 2253.68ms (-) | 2204.30ms (**{+-9.88%+}**)
web_project_commits | 750ms | 563.48ms (-) | 554.33ms (**{+-1.83%+}**)
web_project_file_blame | 7000ms | 3985.56ms (-) | 3895.73ms (**{+-17.97%+}**)
web_project_file_rendered | 3000ms | 790.03ms (-) | 760.68ms (**{+-5.87%+}**)
web_project_file_source | 1700ms | 1058.36ms (-) | 1079.07ms (_{-+4.14%-}_)
web_project_files | 800ms | 263.38ms (-) | 250.88ms (**{+-2.5%+}**)
web_project_issue | 2000ms | 943.34ms (-) | 924.42ms (**{+-3.78%+}**)
web_project_issues | 500ms | 381.27ms (-) | 369.04ms (**{+-2.45%+}**)
web_project_issues_search | 500ms | 374.80ms (-) | 361.25ms (**{+-2.71%+}**)
web_project_merge_request | 7500ms | 4921.24ms (-) | 4865.32ms (**{+-11.18%+}**)
web_project_merge_request_changes | 1500ms | 807.50ms (-) | 797.55ms (**{+-1.99%+}**)
web_project_merge_request_commits | 1750ms | 1432.89ms (-) | 1213.27ms (**{+-43.92%+}**)
web_project_merge_requests | 500ms | 379.00ms (-) | 374.56ms (**{+-0.89%+}**)
web_project_pipelines | 1000ms | 537.77ms (-) | 536.72ms (**{+-0.21%+}**)
web_project_pipelines_pipeline | 2500ms | 1386.47ms (-) | 1387.44ms (_{-+0.19%-}_)
web_project_repository_compare | 7500ms | 5836.24ms (-) | 5927.46ms (_{-+18.24%-}_)
web_project_tags | 1500ms | 853.22ms (-) | 842.33ms (**{+-2.18%+}**)
web_search_global | 2000ms | 138.71ms (-) | 129.67ms (**{+-1.81%+}**)
web_search_groups | 3000ms | 119.57ms (-) | 112.91ms (**{+-1.33%+}**)
web_search_projects | 3000ms | 147.09ms (-) | 142.56ms (**{+-0.91%+}**)
web_user | 4000ms | 338.53ms (-) | 339.55ms (_{-+0.2%-}_)
</details>
So it looks like from performance perspective this change should not be impactful, however there could have been other considerations for separating the workloads. The issue is to explore this area and consult with Distribution team on best practices.
issue