- Notifications
You must be signed in to change notification settings - Fork928
docs: update reference architecture: glossary, scale tests methodology#12438
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Uh oh!
There was an error while loading.Please reload this page.
Changes from1 commit
bce5e87
00c6e15
e0a31b4
eac4e04
49e44a2
31f440b
f105ac8
4151036
6d0cc8a
4b6a3d4
55b2160
c953d7e
47c50df
a3bfbb6
ce7f8a3
92ce63e
4540f96
dccaa84
c707d52
d3f5afc
File filter
Filter by extension
Conversations
Uh oh!
There was an error while loading.Please reload this page.
Jump to
Uh oh!
There was an error while loading.Please reload this page.
Diff view
Diff view
- Loading branch information
Uh oh!
There was an error while loading.Please reload this page.
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,12 +1,10 @@ | ||
# Reference architectures | ||
This document provides prescriptive solutions and reference architectures to | ||
support successful deployments of up to 2000 users and outlines at a high-level | ||
the methodology currently used to scale-test Coder. | ||
This section outlines core concepts and terminology essential for understanding | ||
Coder's architecture and deployment strategies. | ||
## General concepts | ||
@@ -20,9 +18,9 @@ management, template definitions, insights, and deployment configuration. | ||
### Coder | ||
Coder, also known as _coderd_, is the main service recommended for deployment | ||
withmultiple replicas to ensure high availability. It provides an API for | ||
managing workspaces and templates. Each _coderd_ replica has the capability to | ||
host multiple provisioners (`provisionerd`). | ||
mtojek marked this conversation as resolved. Show resolvedHide resolvedUh oh!There was an error while loading.Please reload this page. | ||
### User | ||
@@ -43,7 +41,7 @@ Users can connect to workspaces using SSH or via workspace applications like | ||
`code-server`, facilitating collaboration and remote access. Additionally, | ||
workspaces can be parameterized, allowing users to customize settings and | ||
configurations based on their unique needs. Workspaces are instantiated using | ||
Coder templates and deployed onresources created by provisioners. | ||
### Template | ||
@@ -85,23 +83,20 @@ components. | ||
The Registry is hosted service and it is not available for air-gapped | ||
mtojek marked this conversation as resolved. Show resolvedHide resolvedUh oh!There was an error while loading.Please reload this page. | ||
deployments. | ||
## Scale tests methodology | ||
mtojek marked this conversation as resolved. Show resolvedHide resolvedUh oh!There was an error while loading.Please reload this page. | ||
Scaling Coder involves careful planning and testing to ensure it can handle more | ||
mtojek marked this conversation as resolved. Show resolvedHide resolvedUh oh!There was an error while loading.Please reload this page. | ||
users without slowing down. This process encompasses infrastructure setup, | ||
traffic projections, and aggressive testing to identify and mitigate potential | ||
bottlenecks. | ||
A dedicated cluster for Coder is Kubernetes cluster specifically configured to | ||
mtojek marked this conversation as resolved. Show resolvedHide resolvedUh oh!There was an error while loading.Please reload this page. | ||
host and manage Coder workloads. Kubernetes provides container orchestration | ||
capabilities, allowing Coder to efficiently deploy, scale, and manage workspaces | ||
across a distributed infrastructure. This ensures high availability, fault | ||
tolerance, and scalability for Coder deployments. The cluster can be deployed | ||
using the Helm chart. | ||
mtojek marked this conversation as resolved. Show resolvedHide resolvedUh oh!There was an error while loading.Please reload this page. | ||
In our scale tests, we adopt an approach with various stages to thoroughly | ||
evaluate the system's performance. These stages include: | ||
@@ -118,7 +113,7 @@ evaluate the system's performance. These stages include: | ||
specific workspace apps, confirming their capability to echo back received | ||
content effectively. | ||
mtojek marked this conversation as resolved. Show resolvedHide resolvedUh oh!There was an error while loading.Please reload this page. | ||
5. Cleanup:delete workspaces and users created in step 1. | ||
### Infrastructure and setup requirements | ||
@@ -135,18 +130,19 @@ customers. | ||
The basic setup of scale tests environment involves: | ||
1. Scale tests runner (32 vCPU, 128 GB RAM) | ||
2. Coder: 2 replicas (4 vCPU, 16 GB RAM) | ||
3. Database: 1 replica (2 vCPU, 32 GB RAM) | ||
mtojek marked this conversation as resolved. Show resolvedHide resolvedUh oh!There was an error while loading.Please reload this page. | ||
4. Provisioner: 50 instances (0.5 vCPU, 512 MB RAM) | ||
The test is deemed successful if no crashes or restarts of `coderd` or other | ||
internal errors were observed. | ||
mtojek marked this conversation as resolved. Show resolvedHide resolvedUh oh!There was an error while loading.Please reload this page. | ||
### Traffic Projections | ||
In our scale tests, we simulate activity from 2000 users, 2000 workspaces, and | ||
2000 agents, withtwo items of workspace agent metadata being sent every 10 | ||
seconds. Here are the resultingmetrics: | ||
Coder: | ||
@@ -165,4 +161,4 @@ Database: | ||
- Median CPU utilization: 80%. | ||
mtojek marked this conversation as resolved. Show resolvedHide resolvedUh oh!There was an error while loading.Please reload this page. | ||
- Median memory utilization: 40%. | ||
- `write_ops_count` between6.7 and8.4 operations per second. |